no
no
permalink
yes
hide
hide
show
hide
show
hide
hide
no
yes
no
no
yes
1
380px
fixed
yes

tc-btn-boxed
no
yes
hide
hide
hide
hide
hide
show
hide
hide
{
    "tiddlers": {
        "$:/Acknowledgements": {
            "title": "$:/Acknowledgements",
            "type": "text/vnd.tiddlywiki",
            "text": "TiddlyWiki incorporates code from these fine OpenSource projects:\n\n* [[The Stanford Javascript Crypto Library|http://bitwiseshiftleft.github.io/sjcl/]]\n* [[The Jasmine JavaScript Test Framework|http://pivotal.github.io/jasmine/]]\n* [[Normalize.css by Nicolas Gallagher|http://necolas.github.io/normalize.css/]]\n\nAnd media from these projects:\n\n* World flag icons from [[Wikipedia|http://commons.wikimedia.org/wiki/Category:SVG_flags_by_country]]\n"
        },
        "$:/core/copyright.txt": {
            "title": "$:/core/copyright.txt",
            "type": "text/plain",
            "text": "TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)\n\nCopyright (c) 2004-2007, Jeremy Ruston\nCopyright (c) 2007-2017, UnaMesa Association\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n  list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n  this list of conditions and the following disclaimer in the documentation\n  and/or other materials provided with the distribution.\n\n* Neither the name of the copyright holder nor the names of its\n  contributors may be used to endorse or promote products derived from\n  this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
        },
        "$:/core/icon": {
            "title": "$:/core/icon",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path d=\"M64 0l54.56 32v64L64 128 9.44 96V32L64 0zm21.127 95.408c-3.578-.103-5.15-.094-6.974-3.152l-1.42.042c-1.653-.075-.964-.04-2.067-.097-1.844-.07-1.548-1.86-1.873-2.8-.52-3.202.687-6.43.65-9.632-.014-1.14-1.593-5.17-2.157-6.61-1.768.34-3.546.406-5.34.497-4.134-.01-8.24-.527-12.317-1.183-.8 3.35-3.16 8.036-1.21 11.44 2.37 3.52 4.03 4.495 6.61 4.707 2.572.212 3.16 3.18 2.53 4.242-.55.73-1.52.864-2.346 1.04l-1.65.08c-1.296-.046-2.455-.404-3.61-.955-1.93-1.097-3.925-3.383-5.406-5.024.345.658.55 1.938.24 2.53-.878 1.27-4.665 1.26-6.4.47-1.97-.89-6.73-7.162-7.468-11.86 1.96-3.78 4.812-7.07 6.255-11.186-3.146-2.05-4.83-5.384-4.61-9.16l.08-.44c-3.097.59-1.49.37-4.82.628-10.608-.032-19.935-7.37-14.68-18.774.34-.673.664-1.287 1.243-.994.466.237.4 1.18.166 2.227-3.005 13.627 11.67 13.732 20.69 11.21.89-.25 2.67-1.936 3.905-2.495 2.016-.91 4.205-1.282 6.376-1.55 5.4-.63 11.893 2.276 15.19 2.37 3.3.096 7.99-.805 10.87-.615 2.09.098 4.143.483 6.16 1.03 1.306-6.49 1.4-11.27 4.492-12.38 1.814.293 3.213 2.818 4.25 4.167 2.112-.086 4.12.46 6.115 1.066 3.61-.522 6.642-2.593 9.833-4.203-3.234 2.69-3.673 7.075-3.303 11.127.138 2.103-.444 4.386-1.164 6.54-1.348 3.507-3.95 7.204-6.97 7.014-1.14-.036-1.805-.695-2.653-1.4-.164 1.427-.81 2.7-1.434 3.96-1.44 2.797-5.203 4.03-8.687 7.016-3.484 2.985 1.114 13.65 2.23 15.594 1.114 1.94 4.226 2.652 3.02 4.406-.37.58-.936.785-1.54 1.01l-.82.11zm-40.097-8.85l.553.14c.694-.27 2.09.15 2.83.353-1.363-1.31-3.417-3.24-4.897-4.46-.485-1.47-.278-2.96-.174-4.46l.02-.123c-.582 1.205-1.322 2.376-1.72 3.645-.465 1.71 2.07 3.557 3.052 4.615l.336.3z\" fill-rule=\"evenodd\"/></svg>"
        },
        "$:/core/images/advanced-search-button": {
            "title": "$:/core/images/advanced-search-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-advanced-search-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M74.5651535,87.9848361 C66.9581537,93.0488876 57.8237115,96 48,96 C21.490332,96 0,74.509668 0,48 C0,21.490332 21.490332,0 48,0 C74.509668,0 96,21.490332 96,48 C96,57.8541369 93.0305793,67.0147285 87.9377231,74.6357895 L122.284919,108.982985 C125.978897,112.676963 125.973757,118.65366 122.284271,122.343146 C118.593975,126.033442 112.613238,126.032921 108.92411,122.343793 L74.5651535,87.9848361 Z M48,80 C65.673112,80 80,65.673112 80,48 C80,30.326888 65.673112,16 48,16 C30.326888,16 16,30.326888 16,48 C16,65.673112 30.326888,80 48,80 Z\"></path>\n        <circle cx=\"48\" cy=\"48\" r=\"8\"></circle>\n        <circle cx=\"28\" cy=\"48\" r=\"8\"></circle>\n        <circle cx=\"68\" cy=\"48\" r=\"8\"></circle>\n    </g>\n</svg>"
        },
        "$:/core/images/auto-height": {
            "title": "$:/core/images/auto-height",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-auto-height tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <path d=\"M67.9867828,114.356363 L67.9579626,99.8785426 C67.9550688,98.4248183 67.1636987,97.087107 65.8909901,96.3845863 L49.9251455,87.5716209 L47.992126,95.0735397 L79.8995411,95.0735397 C84.1215894,95.0735397 85.4638131,89.3810359 81.686497,87.4948823 L49.7971476,71.5713518 L48.0101917,79.1500092 L79.992126,79.1500092 C84.2093753,79.1500092 85.5558421,73.4676733 81.7869993,71.5753162 L49.805065,55.517008 L48.0101916,63.0917009 L79.9921259,63.0917015 C84.2035118,63.0917016 85.5551434,57.4217887 81.7966702,55.5218807 L65.7625147,47.4166161 L67.9579705,50.9864368 L67.9579705,35.6148245 L77.1715737,44.8284272 C78.7336709,46.3905243 81.2663308,46.3905243 82.8284279,44.8284271 C84.390525,43.2663299 84.390525,40.7336699 82.8284278,39.1715728 L66.8284271,23.1715728 C65.2663299,21.6094757 62.73367,21.6094757 61.1715729,23.1715729 L45.1715729,39.1715729 C43.6094757,40.73367 43.6094757,43.26633 45.1715729,44.8284271 C46.73367,46.3905243 49.26633,46.3905243 50.8284271,44.8284271 L59.9579705,35.6988837 L59.9579705,50.9864368 C59.9579705,52.495201 60.806922,53.8755997 62.1534263,54.5562576 L78.1875818,62.6615223 L79.9921261,55.0917015 L48.0101917,55.0917009 C43.7929424,55.0917008 42.4464755,60.7740368 46.2153183,62.6663939 L78.1972526,78.7247021 L79.992126,71.1500092 L48.0101917,71.1500092 C43.7881433,71.1500092 42.4459197,76.842513 46.2232358,78.7286665 L78.1125852,94.6521971 L79.8995411,87.0735397 L47.992126,87.0735397 C43.8588276,87.0735397 42.4404876,92.5780219 46.0591064,94.5754586 L62.024951,103.388424 L59.9579785,99.8944677 L59.9867142,114.32986 L50.8284271,105.171573 C49.26633,103.609476 46.73367,103.609476 45.1715729,105.171573 C43.6094757,106.73367 43.6094757,109.26633 45.1715729,110.828427 L61.1715729,126.828427 C62.73367,128.390524 65.2663299,128.390524 66.8284271,126.828427 L82.8284278,110.828427 C84.390525,109.26633 84.390525,106.73367 82.8284279,105.171573 C81.2663308,103.609476 78.7336709,103.609476 77.1715737,105.171573 L67.9867828,114.356363 L67.9867828,114.356363 Z M16,20 L112,20 C114.209139,20 116,18.209139 116,16 C116,13.790861 114.209139,12 112,12 L16,12 C13.790861,12 12,13.790861 12,16 C12,18.209139 13.790861,20 16,20 L16,20 Z\"></path>\n</svg>"
        },
        "$:/core/images/blank": {
            "title": "$:/core/images/blank",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-blank tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\"></svg>"
        },
        "$:/core/images/bold": {
            "title": "$:/core/images/bold",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-bold tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M41.1456583,51.8095238 L41.1456583,21.8711485 L67.4985994,21.8711485 C70.0084159,21.8711485 72.4285598,22.0802967 74.7591036,22.4985994 C77.0896475,22.9169022 79.1512515,23.6638602 80.9439776,24.7394958 C82.7367036,25.8151314 84.170863,27.3090474 85.2464986,29.2212885 C86.3221342,31.1335296 86.859944,33.5835518 86.859944,36.5714286 C86.859944,41.9496067 85.2465147,45.8337882 82.0196078,48.2240896 C78.792701,50.614391 74.6694929,51.8095238 69.6498599,51.8095238 L41.1456583,51.8095238 Z M13,0 L13,128 L75.0280112,128 C80.7647346,128 86.3519803,127.28292 91.789916,125.848739 C97.2278517,124.414559 102.068139,122.203563 106.310924,119.215686 C110.553709,116.22781 113.929959,112.373506 116.439776,107.652661 C118.949592,102.931816 120.204482,97.3445701 120.204482,90.8907563 C120.204482,82.8832466 118.262391,76.0411115 114.378151,70.3641457 C110.493911,64.6871798 104.607883,60.7133634 96.719888,58.442577 C102.456611,55.6937304 106.788968,52.1680887 109.717087,47.8655462 C112.645206,43.5630037 114.109244,38.1849062 114.109244,31.7310924 C114.109244,25.7553389 113.123259,20.7357813 111.151261,16.6722689 C109.179262,12.6087565 106.400578,9.35201972 102.815126,6.90196078 C99.2296739,4.45190185 94.927196,2.68908101 89.907563,1.61344538 C84.8879301,0.537809748 79.3305627,0 73.2352941,0 L13,0 Z M41.1456583,106.128852 L41.1456583,70.9915966 L71.8011204,70.9915966 C77.896389,70.9915966 82.7964334,72.3958776 86.5014006,75.2044818 C90.2063677,78.0130859 92.0588235,82.7039821 92.0588235,89.2773109 C92.0588235,92.6237329 91.4911355,95.3725383 90.3557423,97.5238095 C89.2203491,99.6750808 87.6965548,101.378145 85.7843137,102.633053 C83.8720726,103.887961 81.661077,104.784311 79.1512605,105.322129 C76.641444,105.859947 74.0121519,106.128852 71.2633053,106.128852 L41.1456583,106.128852 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/cancel-button": {
            "title": "$:/core/images/cancel-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-cancel-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n\t<g fill-rule=\"evenodd\">\n\t    <path d=\"M64,76.3137085 L47.0294734,93.2842351 C43.9038742,96.4098343 38.8399231,96.4084656 35.7157288,93.2842712 C32.5978915,90.166434 32.5915506,85.0947409 35.7157649,81.9705266 L52.6862915,65 L35.7157649,48.0294734 C32.5901657,44.9038742 32.5915344,39.8399231 35.7157288,36.7157288 C38.833566,33.5978915 43.9052591,33.5915506 47.0294734,36.7157649 L64,53.6862915 L80.9705266,36.7157649 C84.0961258,33.5901657 89.1600769,33.5915344 92.2842712,36.7157288 C95.4021085,39.833566 95.4084494,44.9052591 92.2842351,48.0294734 L75.3137085,65 L92.2842351,81.9705266 C95.4098343,85.0961258 95.4084656,90.1600769 92.2842712,93.2842712 C89.166434,96.4021085 84.0947409,96.4084494 80.9705266,93.2842351 L64,76.3137085 Z M64,129 C99.346224,129 128,100.346224 128,65 C128,29.653776 99.346224,1 64,1 C28.653776,1 1.13686838e-13,29.653776 1.13686838e-13,65 C1.13686838e-13,100.346224 28.653776,129 64,129 Z M64,113 C90.509668,113 112,91.509668 112,65 C112,38.490332 90.509668,17 64,17 C37.490332,17 16,38.490332 16,65 C16,91.509668 37.490332,113 64,113 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/chevron-down": {
            "title": "$:/core/images/chevron-down",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-chevron-down tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n\t<g fill-rule=\"evenodd\" transform=\"translate(64.000000, 40.500000) rotate(-270.000000) translate(-64.000000, -40.500000) translate(-22.500000, -26.500000)\">\n        <path d=\"M112.743107,112.12741 C111.310627,113.561013 109.331747,114.449239 107.145951,114.449239 L27.9777917,114.449239 C23.6126002,114.449239 20.0618714,110.904826 20.0618714,106.532572 C20.0618714,102.169214 23.6059497,98.6159054 27.9777917,98.6159054 L99.2285381,98.6159054 L99.2285381,27.365159 C99.2285381,22.9999675 102.77295,19.4492387 107.145205,19.4492387 C111.508562,19.4492387 115.061871,22.993317 115.061871,27.365159 L115.061871,106.533318 C115.061871,108.71579 114.175869,110.694669 112.743378,112.127981 Z\" transform=\"translate(67.561871, 66.949239) rotate(-45.000000) translate(-67.561871, -66.949239) \"></path>\n        <path d=\"M151.35638,112.12741 C149.923899,113.561013 147.94502,114.449239 145.759224,114.449239 L66.5910645,114.449239 C62.225873,114.449239 58.6751442,110.904826 58.6751442,106.532572 C58.6751442,102.169214 62.2192225,98.6159054 66.5910645,98.6159054 L137.841811,98.6159054 L137.841811,27.365159 C137.841811,22.9999675 141.386223,19.4492387 145.758478,19.4492387 C150.121835,19.4492387 153.675144,22.993317 153.675144,27.365159 L153.675144,106.533318 C153.675144,108.71579 152.789142,110.694669 151.356651,112.127981 Z\" transform=\"translate(106.175144, 66.949239) rotate(-45.000000) translate(-106.175144, -66.949239) \"></path>\n\t</g>\n</svg>"
        },
        "$:/core/images/chevron-left": {
            "title": "$:/core/images/chevron-left",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-chevron-left tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\" version=\"1.1\">\n    <g fill-rule=\"evenodd\" transform=\"translate(92.500000, 64.000000) rotate(-180.000000) translate(-92.500000, -64.000000) translate(6.000000, -3.000000)\">\n        <path d=\"M112.743107,112.12741 C111.310627,113.561013 109.331747,114.449239 107.145951,114.449239 L27.9777917,114.449239 C23.6126002,114.449239 20.0618714,110.904826 20.0618714,106.532572 C20.0618714,102.169214 23.6059497,98.6159054 27.9777917,98.6159054 L99.2285381,98.6159054 L99.2285381,27.365159 C99.2285381,22.9999675 102.77295,19.4492387 107.145205,19.4492387 C111.508562,19.4492387 115.061871,22.993317 115.061871,27.365159 L115.061871,106.533318 C115.061871,108.71579 114.175869,110.694669 112.743378,112.127981 Z\" transform=\"translate(67.561871, 66.949239) rotate(-45.000000) translate(-67.561871, -66.949239) \"></path>\n        <path d=\"M151.35638,112.12741 C149.923899,113.561013 147.94502,114.449239 145.759224,114.449239 L66.5910645,114.449239 C62.225873,114.449239 58.6751442,110.904826 58.6751442,106.532572 C58.6751442,102.169214 62.2192225,98.6159054 66.5910645,98.6159054 L137.841811,98.6159054 L137.841811,27.365159 C137.841811,22.9999675 141.386223,19.4492387 145.758478,19.4492387 C150.121835,19.4492387 153.675144,22.993317 153.675144,27.365159 L153.675144,106.533318 C153.675144,108.71579 152.789142,110.694669 151.356651,112.127981 Z\" transform=\"translate(106.175144, 66.949239) rotate(-45.000000) translate(-106.175144, -66.949239) \"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/chevron-right": {
            "title": "$:/core/images/chevron-right",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-chevron-right tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\" transform=\"translate(-48.000000, -3.000000)\">\n        <path d=\"M112.743107,112.12741 C111.310627,113.561013 109.331747,114.449239 107.145951,114.449239 L27.9777917,114.449239 C23.6126002,114.449239 20.0618714,110.904826 20.0618714,106.532572 C20.0618714,102.169214 23.6059497,98.6159054 27.9777917,98.6159054 L99.2285381,98.6159054 L99.2285381,27.365159 C99.2285381,22.9999675 102.77295,19.4492387 107.145205,19.4492387 C111.508562,19.4492387 115.061871,22.993317 115.061871,27.365159 L115.061871,106.533318 C115.061871,108.71579 114.175869,110.694669 112.743378,112.127981 Z\" transform=\"translate(67.561871, 66.949239) rotate(-45.000000) translate(-67.561871, -66.949239) \"></path>\n        <path d=\"M151.35638,112.12741 C149.923899,113.561013 147.94502,114.449239 145.759224,114.449239 L66.5910645,114.449239 C62.225873,114.449239 58.6751442,110.904826 58.6751442,106.532572 C58.6751442,102.169214 62.2192225,98.6159054 66.5910645,98.6159054 L137.841811,98.6159054 L137.841811,27.365159 C137.841811,22.9999675 141.386223,19.4492387 145.758478,19.4492387 C150.121835,19.4492387 153.675144,22.993317 153.675144,27.365159 L153.675144,106.533318 C153.675144,108.71579 152.789142,110.694669 151.356651,112.127981 Z\" transform=\"translate(106.175144, 66.949239) rotate(-45.000000) translate(-106.175144, -66.949239) \"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/chevron-up": {
            "title": "$:/core/images/chevron-up",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-chevron-up tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n\t<g fill-rule=\"evenodd\" transform=\"translate(64.000000, 89.500000) rotate(-90.000000) translate(-64.000000, -89.500000) translate(-22.500000, 22.500000)\">\n        <path d=\"M112.743107,112.12741 C111.310627,113.561013 109.331747,114.449239 107.145951,114.449239 L27.9777917,114.449239 C23.6126002,114.449239 20.0618714,110.904826 20.0618714,106.532572 C20.0618714,102.169214 23.6059497,98.6159054 27.9777917,98.6159054 L99.2285381,98.6159054 L99.2285381,27.365159 C99.2285381,22.9999675 102.77295,19.4492387 107.145205,19.4492387 C111.508562,19.4492387 115.061871,22.993317 115.061871,27.365159 L115.061871,106.533318 C115.061871,108.71579 114.175869,110.694669 112.743378,112.127981 Z\" transform=\"translate(67.561871, 66.949239) rotate(-45.000000) translate(-67.561871, -66.949239) \"></path>\n        <path d=\"M151.35638,112.12741 C149.923899,113.561013 147.94502,114.449239 145.759224,114.449239 L66.5910645,114.449239 C62.225873,114.449239 58.6751442,110.904826 58.6751442,106.532572 C58.6751442,102.169214 62.2192225,98.6159054 66.5910645,98.6159054 L137.841811,98.6159054 L137.841811,27.365159 C137.841811,22.9999675 141.386223,19.4492387 145.758478,19.4492387 C150.121835,19.4492387 153.675144,22.993317 153.675144,27.365159 L153.675144,106.533318 C153.675144,108.71579 152.789142,110.694669 151.356651,112.127981 Z\" transform=\"translate(106.175144, 66.949239) rotate(-45.000000) translate(-106.175144, -66.949239) \"></path>\n\t</g>\n</svg>"
        },
        "$:/core/images/clone-button": {
            "title": "$:/core/images/clone-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-clone-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M32.2650915,96 L32.2650915,120.002359 C32.2650915,124.419334 35.8432884,128 40.2627323,128 L120.002359,128 C124.419334,128 128,124.421803 128,120.002359 L128,40.2627323 C128,35.8457573 124.421803,32.2650915 120.002359,32.2650915 L96,32.2650915 L96,48 L108.858899,48 C110.519357,48 111.853018,49.3405131 111.853018,50.9941198 L111.853018,108.858899 C111.853018,110.519357 110.512505,111.853018 108.858899,111.853018 L50.9941198,111.853018 C49.333661,111.853018 48,110.512505 48,108.858899 L48,96 L32.2650915,96 Z\"></path>\n        <path d=\"M40,56 L32.0070969,56 C27.5881712,56 24,52.418278 24,48 C24,43.5907123 27.5848994,40 32.0070969,40 L40,40 L40,32.0070969 C40,27.5881712 43.581722,24 48,24 C52.4092877,24 56,27.5848994 56,32.0070969 L56,40 L63.9929031,40 C68.4118288,40 72,43.581722 72,48 C72,52.4092877 68.4151006,56 63.9929031,56 L56,56 L56,63.9929031 C56,68.4118288 52.418278,72 48,72 C43.5907123,72 40,68.4151006 40,63.9929031 L40,56 Z M7.9992458,0 C3.58138434,0 0,3.5881049 0,7.9992458 L0,88.0007542 C0,92.4186157 3.5881049,96 7.9992458,96 L88.0007542,96 C92.4186157,96 96,92.4118951 96,88.0007542 L96,7.9992458 C96,3.58138434 92.4118951,0 88.0007542,0 L7.9992458,0 Z M19.0010118,16 C17.3435988,16 16,17.336731 16,19.0010118 L16,76.9989882 C16,78.6564012 17.336731,80 19.0010118,80 L76.9989882,80 C78.6564012,80 80,78.663269 80,76.9989882 L80,19.0010118 C80,17.3435988 78.663269,16 76.9989882,16 L19.0010118,16 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/close-all-button": {
            "title": "$:/core/images/close-all-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-close-all-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\" transform=\"translate(-23.000000, -23.000000)\">\n        <path d=\"M43,131 L22.9976794,131 C18.5827987,131 15,127.418278 15,123 C15,118.590712 18.5806831,115 22.9976794,115 L43,115 L43,94.9976794 C43,90.5827987 46.581722,87 51,87 C55.4092877,87 59,90.5806831 59,94.9976794 L59,115 L79.0023206,115 C83.4172013,115 87,118.581722 87,123 C87,127.409288 83.4193169,131 79.0023206,131 L59,131 L59,151.002321 C59,155.417201 55.418278,159 51,159 C46.5907123,159 43,155.419317 43,151.002321 L43,131 Z\" transform=\"translate(51.000000, 123.000000) rotate(-45.000000) translate(-51.000000, -123.000000) \"></path>\n        <path d=\"M43,59 L22.9976794,59 C18.5827987,59 15,55.418278 15,51 C15,46.5907123 18.5806831,43 22.9976794,43 L43,43 L43,22.9976794 C43,18.5827987 46.581722,15 51,15 C55.4092877,15 59,18.5806831 59,22.9976794 L59,43 L79.0023206,43 C83.4172013,43 87,46.581722 87,51 C87,55.4092877 83.4193169,59 79.0023206,59 L59,59 L59,79.0023206 C59,83.4172013 55.418278,87 51,87 C46.5907123,87 43,83.4193169 43,79.0023206 L43,59 Z\" transform=\"translate(51.000000, 51.000000) rotate(-45.000000) translate(-51.000000, -51.000000) \"></path>\n        <path d=\"M115,59 L94.9976794,59 C90.5827987,59 87,55.418278 87,51 C87,46.5907123 90.5806831,43 94.9976794,43 L115,43 L115,22.9976794 C115,18.5827987 118.581722,15 123,15 C127.409288,15 131,18.5806831 131,22.9976794 L131,43 L151.002321,43 C155.417201,43 159,46.581722 159,51 C159,55.4092877 155.419317,59 151.002321,59 L131,59 L131,79.0023206 C131,83.4172013 127.418278,87 123,87 C118.590712,87 115,83.4193169 115,79.0023206 L115,59 Z\" transform=\"translate(123.000000, 51.000000) rotate(-45.000000) translate(-123.000000, -51.000000) \"></path>\n        <path d=\"M115,131 L94.9976794,131 C90.5827987,131 87,127.418278 87,123 C87,118.590712 90.5806831,115 94.9976794,115 L115,115 L115,94.9976794 C115,90.5827987 118.581722,87 123,87 C127.409288,87 131,90.5806831 131,94.9976794 L131,115 L151.002321,115 C155.417201,115 159,118.581722 159,123 C159,127.409288 155.419317,131 151.002321,131 L131,131 L131,151.002321 C131,155.417201 127.418278,159 123,159 C118.590712,159 115,155.419317 115,151.002321 L115,131 Z\" transform=\"translate(123.000000, 123.000000) rotate(-45.000000) translate(-123.000000, -123.000000) \"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/close-button": {
            "title": "$:/core/images/close-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-close-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M65.0864256,75.4091629 L14.9727349,125.522854 C11.8515951,128.643993 6.78104858,128.64922 3.65685425,125.525026 C0.539017023,122.407189 0.5336324,117.334539 3.65902635,114.209145 L53.7727171,64.0954544 L3.65902635,13.9817637 C0.537886594,10.8606239 0.532659916,5.79007744 3.65685425,2.6658831 C6.77469148,-0.451954124 11.8473409,-0.457338747 14.9727349,2.66805521 L65.0864256,52.7817459 L115.200116,2.66805521 C118.321256,-0.453084553 123.391803,-0.458311231 126.515997,2.6658831 C129.633834,5.78372033 129.639219,10.8563698 126.513825,13.9817637 L76.4001341,64.0954544 L126.513825,114.209145 C129.634965,117.330285 129.640191,122.400831 126.515997,125.525026 C123.39816,128.642863 118.32551,128.648248 115.200116,125.522854 L65.0864256,75.4091629 L65.0864256,75.4091629 Z\"></path>\n    </g>\n</svg>\n"
        },
        "$:/core/images/close-others-button": {
            "title": "$:/core/images/close-others-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-close-others-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M64,128 C99.346224,128 128,99.346224 128,64 C128,28.653776 99.346224,0 64,0 C28.653776,0 0,28.653776 0,64 C0,99.346224 28.653776,128 64,128 Z M64,112 C90.509668,112 112,90.509668 112,64 C112,37.490332 90.509668,16 64,16 C37.490332,16 16,37.490332 16,64 C16,90.509668 37.490332,112 64,112 Z M64,96 C81.673112,96 96,81.673112 96,64 C96,46.326888 81.673112,32 64,32 C46.326888,32 32,46.326888 32,64 C32,81.673112 46.326888,96 64,96 Z M64,80 C72.836556,80 80,72.836556 80,64 C80,55.163444 72.836556,48 64,48 C55.163444,48 48,55.163444 48,64 C48,72.836556 55.163444,80 64,80 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/copy-clipboard": {
            "title": "$:/core/images/copy-clipboard",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-copy-clipboard tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n\t<g fill-rule=\"evenodd\">\n\t\t<rect x=\"40\" y=\"40\" width=\"33\" height=\"8\" rx=\"4\"></rect>\n\t\t<rect x=\"40\" y=\"82\" width=\"17\" height=\"8\" rx=\"4\"></rect>\n\t\t<rect x=\"40\" y=\"54\" width=\"17\" height=\"8\" rx=\"4\"></rect>\n\t\t<rect x=\"40\" y=\"96\" width=\"33\" height=\"8\" rx=\"4\"></rect>\n\t\t<rect x=\"40\" y=\"68\" width=\"12\" height=\"8\" rx=\"4\"></rect>\n\t\t<path d=\"M40,16 L23.9992458,16 C19.5813843,16 16,19.5907123 16,24 C16,24.0016363 16.0000005,24.0032725 16.0000015,24.0049086 C16.0000005,24.0065441 16,24.0081803 16,24.0098166 L16,119.990183 C16,119.99182 16.0000005,119.993456 16.0000015,119.995092 C16.0000005,119.996727 16,119.998364 16,120 C16,124.409288 19.5813843,128 23.9992458,128 L104.000754,128 C106.205061,128 108.203844,127.105595 109.652065,125.659342 C111.102424,124.21251 112,122.214511 112,120.007595 L112,103.992405 C112,99.5776607 108.418278,96 104,96 C99.5907123,96 96,99.5783218 96,103.992405 L96,112 L32,112 L32,32 L96,32 L96,40.0075946 C96,44.4223393 99.581722,48 104,48 C108.409288,48 112,44.4216782 112,40.0075946 L112,23.9924054 C112,21.7851587 111.104671,19.7871591 109.657101,18.3409203 C108.203844,16.8944047 106.205061,16 104.000754,16 L88,16 C88,11.5907123 84.4151006,8 79.9929031,8 L48.0070969,8 C43.5881712,8 40,11.581722 40,16 Z M44,14.9958262 C44,12.7889923 45.7964248,11 48.0000255,11 L79.9999745,11 C82.2091276,11 84,12.7965212 84,14.9958262 L84,19.0041738 C84,21.2110077 82.2035752,23 79.9999745,23 L48.0000255,23 C45.7908724,23 44,21.2034788 44,19.0041738 L44,14.9958262 Z\"></path>\n\t\t<rect x=\"62\" y=\"64\" width=\"66\" height=\"16\" rx=\"8\"></rect>\n\t\t<path d=\"M60.6568542,85.6568542 L76.6568542,69.6568543 L65.3431458,69.6568542 L81.3431458,85.6568542 C84.4673401,88.7810486 89.5326599,88.7810486 92.6568542,85.6568542 C95.7810486,82.5326599 95.7810486,77.4673401 92.6568542,74.3431458 L76.6568542,58.3431458 C73.5326599,55.2189514 68.4673401,55.2189514 65.3431458,58.3431457 L49.3431458,74.3431457 C46.2189514,77.4673401 46.2189514,82.5326599 49.3431457,85.6568542 C52.4673401,88.7810486 57.5326599,88.7810486 60.6568542,85.6568542 L60.6568542,85.6568542 Z\" transform=\"translate(71.000000, 72.000000) rotate(-90.000000) translate(-71.000000, -72.000000) \"></path>\n\t</g>\n</svg>"
        },
        "$:/core/images/delete-button": {
            "title": "$:/core/images/delete-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-delete-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n    <g fill-rule=\"evenodd\" transform=\"translate(12.000000, 0.000000)\">\n        <rect x=\"0\" y=\"11\" width=\"105\" height=\"16\" rx=\"8\"></rect>\n        <rect x=\"28\" y=\"0\" width=\"48\" height=\"16\" rx=\"8\"></rect>\n        <rect x=\"8\" y=\"16\" width=\"16\" height=\"112\" rx=\"8\"></rect>\n        <rect x=\"8\" y=\"112\" width=\"88\" height=\"16\" rx=\"8\"></rect>\n        <rect x=\"80\" y=\"16\" width=\"16\" height=\"112\" rx=\"8\"></rect>\n        <rect x=\"56\" y=\"16\" width=\"16\" height=\"112\" rx=\"8\"></rect>\n        <rect x=\"32\" y=\"16\" width=\"16\" height=\"112\" rx=\"8\"></rect>\n    </g>\n</svg>"
        },
        "$:/core/images/done-button": {
            "title": "$:/core/images/done-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-done-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M3.52445141,76.8322939 C2.07397484,75.3828178 1.17514421,73.3795385 1.17514421,71.1666288 L1.17514421,23.1836596 C1.17514421,18.7531992 4.75686621,15.1751442 9.17514421,15.1751442 C13.5844319,15.1751442 17.1751442,18.7606787 17.1751442,23.1836596 L17.1751442,63.1751442 L119.173716,63.1751442 C123.590457,63.1751442 127.175144,66.7568662 127.175144,71.1751442 C127.175144,75.5844319 123.592783,79.1751442 119.173716,79.1751442 L9.17657227,79.1751442 C6.96796403,79.1751442 4.9674142,78.279521 3.51911285,76.8315312 Z\" id=\"Rectangle-285\" transform=\"translate(64.175144, 47.175144) rotate(-45.000000) translate(-64.175144, -47.175144) \"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/down-arrow": {
            "title": "$:/core/images/down-arrow",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-down-arrow tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n    <path d=\"M109.35638,81.3533152 C107.923899,82.7869182 105.94502,83.6751442 103.759224,83.6751442 L24.5910645,83.6751442 C20.225873,83.6751442 16.6751442,80.1307318 16.6751442,75.7584775 C16.6751442,71.3951199 20.2192225,67.8418109 24.5910645,67.8418109 L95.8418109,67.8418109 L95.8418109,-3.40893546 C95.8418109,-7.77412698 99.3862233,-11.3248558 103.758478,-11.3248558 C108.121835,-11.3248558 111.675144,-7.78077754 111.675144,-3.40893546 L111.675144,75.7592239 C111.675144,77.9416955 110.789142,79.9205745 109.356651,81.3538862 Z\" transform=\"translate(64.175144, 36.175144) rotate(45.000000) translate(-64.175144, -36.175144) \"></path>\n</svg>"
        },
        "$:/core/images/download-button": {
            "title": "$:/core/images/download-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-download-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path class=\"tc-image-download-button-ring\" d=\"M64,128 C99.346224,128 128,99.346224 128,64 C128,28.653776 99.346224,0 64,0 C28.653776,0 0,28.653776 0,64 C0,99.346224 28.653776,128 64,128 Z M64,112 C90.509668,112 112,90.509668 112,64 C112,37.490332 90.509668,16 64,16 C37.490332,16 16,37.490332 16,64 C16,90.509668 37.490332,112 64,112 Z\"/><path d=\"M34.3496823,66.4308767 L61.2415823,93.634668 C63.0411536,95.4551107 65.9588502,95.4551107 67.7584215,93.634668 L94.6503215,66.4308767 C96.4498928,64.610434 96.4498928,61.6588981 94.6503215,59.8384554 C93.7861334,58.9642445 92.6140473,58.4731195 91.3919019,58.4731195 L82.9324098,58.4731195 C80.3874318,58.4731195 78.3243078,56.3860674 78.3243078,53.8115729 L78.3243078,38.6615466 C78.3243078,36.0870521 76.2611837,34 73.7162058,34 L55.283798,34 C52.7388201,34 50.675696,36.0870521 50.675696,38.6615466 L50.675696,38.6615466 L50.675696,53.8115729 C50.675696,56.3860674 48.612572,58.4731195 46.0675941,58.4731195 L37.608102,58.4731195 C35.063124,58.4731195 33,60.5601716 33,63.134666 C33,64.3709859 33.4854943,65.5566658 34.3496823,66.4308767 L34.3496823,66.4308767 Z\"/></g></svg>"
        },
        "$:/core/images/edit-button": {
            "title": "$:/core/images/edit-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-edit-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M116.870058,45.3431458 L108.870058,45.3431458 L108.870058,45.3431458 L108.870058,61.3431458 L116.870058,61.3431458 L116.870058,45.3431458 Z M124.870058,45.3431458 L127.649881,45.3431458 C132.066101,45.3431458 135.656854,48.9248678 135.656854,53.3431458 C135.656854,57.7524334 132.07201,61.3431458 127.649881,61.3431458 L124.870058,61.3431458 L124.870058,45.3431458 Z M100.870058,45.3431458 L15.6638275,45.3431458 C15.5064377,45.3431458 15.3501085,45.3476943 15.1949638,45.3566664 L15.1949638,45.3566664 C15.0628002,45.3477039 14.928279,45.3431458 14.7913977,45.3431458 C6.68160973,45.3431458 -8.34314575,53.3431458 -8.34314575,53.3431458 C-8.34314575,53.3431458 6.85614548,61.3431458 14.7913977,61.3431458 C14.9266533,61.3431458 15.0596543,61.3384973 15.190398,61.3293588 C15.3470529,61.3385075 15.5049057,61.3431458 15.6638275,61.3431458 L100.870058,61.3431458 L100.870058,45.3431458 L100.870058,45.3431458 Z\" transform=\"translate(63.656854, 53.343146) rotate(-45.000000) translate(-63.656854, -53.343146) \"></path>\n        <path d=\"M35.1714596,124.189544 C41.9594858,123.613403 49.068777,121.917633 58.85987,118.842282 C60.6854386,118.268877 62.4306907,117.705515 65.1957709,116.802278 C81.1962861,111.575575 87.0734839,109.994907 93.9414474,109.655721 C102.29855,109.242993 107.795169,111.785371 111.520478,118.355045 C112.610163,120.276732 115.051363,120.951203 116.97305,119.861518 C118.894737,118.771832 119.569207,116.330633 118.479522,114.408946 C113.146151,105.003414 104.734907,101.112919 93.5468356,101.66546 C85.6716631,102.054388 79.4899908,103.716944 62.7116783,109.197722 C59.9734132,110.092199 58.2519873,110.64787 56.4625698,111.20992 C37.002649,117.322218 25.6914684,118.282267 16.8654804,112.957098 C14.9739614,111.815848 12.5154166,112.424061 11.3741667,114.31558 C10.2329168,116.207099 10.84113,118.665644 12.7326489,119.806894 C19.0655164,123.627836 26.4866335,124.926678 35.1714596,124.189544 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/erase": {
            "title": "$:/core/images/erase",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-erase tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M60.0870401,127.996166 L123.102318,64.980888 C129.636723,58.4464827 129.629513,47.8655877 123.098967,41.3350425 L99.4657866,17.7018617 C92.927448,11.1635231 82.3486358,11.1698163 75.8199411,17.698511 L4.89768189,88.6207702 C-1.63672343,95.1551755 -1.6295126,105.736071 4.90103262,112.266616 L20.6305829,127.996166 L60.0870401,127.996166 Z M25.1375576,120.682546 L10.812569,106.357558 C7.5455063,103.090495 7.54523836,97.793808 10.8048093,94.5342371 L46.2691086,59.0699377 L81.7308914,94.5317205 L55.5800654,120.682546 L25.1375576,120.682546 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/excise": {
            "title": "$:/core/images/excise",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-excise tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M56,107.313709 L53.6568542,109.656854 C50.5326599,112.781049 45.4673401,112.781049 42.3431457,109.656854 C39.2189514,106.53266 39.2189514,101.46734 42.3431458,98.3431457 L58.3431458,82.3431457 C61.4673401,79.2189514 66.5326599,79.2189514 69.6568542,82.3431458 L85.6568542,98.3431458 C88.7810486,101.46734 88.7810486,106.53266 85.6568542,109.656854 C82.5326599,112.781049 77.4673401,112.781049 74.3431458,109.656854 L72,107.313708 L72,121.597798 C72,125.133636 68.418278,128 64,128 C59.581722,128 56,125.133636 56,121.597798 L56,107.313709 Z M0,40.0070969 C0,35.5848994 3.59071231,32 8,32 C12.418278,32 16,35.5881712 16,40.0070969 L16,71.9929031 C16,76.4151006 12.4092877,80 8,80 C3.581722,80 0,76.4118288 0,71.9929031 L0,40.0070969 Z M32,40.0070969 C32,35.5848994 35.5907123,32 40,32 C44.418278,32 48,35.5881712 48,40.0070969 L48,71.9929031 C48,76.4151006 44.4092877,80 40,80 C35.581722,80 32,76.4118288 32,71.9929031 L32,40.0070969 Z M80,40.0070969 C80,35.5848994 83.5907123,32 88,32 C92.418278,32 96,35.5881712 96,40.0070969 L96,71.9929031 C96,76.4151006 92.4092877,80 88,80 C83.581722,80 80,76.4118288 80,71.9929031 L80,40.0070969 Z M56,8.00709688 C56,3.58489938 59.5907123,0 64,0 C68.418278,0 72,3.58817117 72,8.00709688 L72,39.9929031 C72,44.4151006 68.4092877,48 64,48 C59.581722,48 56,44.4118288 56,39.9929031 L56,8.00709688 Z M112,40.0070969 C112,35.5848994 115.590712,32 120,32 C124.418278,32 128,35.5881712 128,40.0070969 L128,71.9929031 C128,76.4151006 124.409288,80 120,80 C115.581722,80 112,76.4118288 112,71.9929031 L112,40.0070969 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/export-button": {
            "title": "$:/core/images/export-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-export-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M8.00348646,127.999999 C8.00464867,128 8.00581094,128 8.00697327,128 L119.993027,128 C122.205254,128 124.207939,127.101378 125.657096,125.651198 L125.656838,125.65759 C127.104563,124.210109 128,122.21009 128,119.999949 L128,56.0000511 C128,51.5817449 124.409288,48 120,48 C115.581722,48 112,51.5797863 112,56.0000511 L112,112 L16,112 L16,56.0000511 C16,51.5817449 12.4092877,48 8,48 C3.581722,48 7.10542736e-15,51.5797863 7.10542736e-15,56.0000511 L7.10542736e-15,119.999949 C7.10542736e-15,124.418255 3.59071231,128 8,128 C8.00116233,128 8.0023246,128 8.00348681,127.999999 Z M56.6235633,27.3113724 L47.6580188,36.2769169 C44.5333664,39.4015692 39.4634864,39.4061295 36.339292,36.2819351 C33.2214548,33.1640979 33.2173444,28.0901742 36.3443103,24.9632084 L58.9616908,2.34582788 C60.5248533,0.782665335 62.5748436,0.000361191261 64.624516,2.38225238e-14 L64.6193616,0.00151809229 C66.6695374,0.000796251595 68.7211167,0.781508799 70.2854358,2.34582788 L92.9028163,24.9632084 C96.0274686,28.0878607 96.0320289,33.1577408 92.9078345,36.2819351 C89.7899973,39.3997724 84.7160736,39.4038827 81.5891078,36.2769169 L72.6235633,27.3113724 L72.6235633,88.5669606 C72.6235633,92.9781015 69.0418413,96.5662064 64.6235633,96.5662064 C60.2142756,96.5662064 56.6235633,92.984822 56.6235633,88.5669606 L56.6235633,27.3113724 L56.6235633,27.3113724 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/file": {
            "title": "$:/core/images/file",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-file tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"nonzero\">\n        <path d=\"M111.96811,30.5 L112,30.5 L112,119.999079 C112,124.417866 108.419113,128 104.000754,128 L23.9992458,128 C19.5813843,128 16,124.417687 16,119.999079 L16,8.00092105 C16,3.58213437 19.5808867,0 23.9992458,0 L81,0 L81,0.0201838424 C83.1589869,-0.071534047 85.3482153,0.707077645 86.9982489,2.35711116 L109.625176,24.9840387 C111.151676,26.510538 111.932942,28.4998414 111.96811,30.5 L111.96811,30.5 Z M81,8 L24,8 L24,120 L104,120 L104,30.5 L89.0003461,30.5 C84.5818769,30.5 81,26.9216269 81,22.4996539 L81,8 Z\"></path>\n        <rect x=\"32\" y=\"36\" width=\"64\" height=\"8\" rx=\"4\"></rect>\n        <rect x=\"32\" y=\"52\" width=\"64\" height=\"8\" rx=\"4\"></rect>\n        <rect x=\"32\" y=\"68\" width=\"64\" height=\"8\" rx=\"4\"></rect>\n        <rect x=\"32\" y=\"84\" width=\"64\" height=\"8\" rx=\"4\"></rect>\n        <rect x=\"32\" y=\"100\" width=\"64\" height=\"8\" rx=\"4\"></rect>\n        <rect x=\"32\" y=\"20\" width=\"40\" height=\"8\" rx=\"4\"></rect>\n    </g>\n</svg>"
        },
        "$:/core/images/fixed-height": {
            "title": "$:/core/images/fixed-height",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-fixed-height tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M60,35.6568542 L50.8284271,44.8284271 C49.26633,46.3905243 46.73367,46.3905243 45.1715729,44.8284271 C43.6094757,43.26633 43.6094757,40.73367 45.1715729,39.1715729 L61.1715729,23.1715729 C62.73367,21.6094757 65.2663299,21.6094757 66.8284271,23.1715728 L82.8284278,39.1715728 C84.390525,40.7336699 84.390525,43.2663299 82.8284279,44.8284271 C81.2663308,46.3905243 78.7336709,46.3905243 77.1715737,44.8284272 L68,35.6568539 L68,93.3431461 L77.1715737,84.1715728 C78.7336709,82.6094757 81.2663308,82.6094757 82.8284279,84.1715729 C84.390525,85.7336701 84.390525,88.2663301 82.8284278,89.8284272 L66.8284271,105.828427 C65.2663299,107.390524 62.73367,107.390524 61.1715729,105.828427 L45.1715729,89.8284271 C43.6094757,88.26633 43.6094757,85.73367 45.1715729,84.1715729 C46.73367,82.6094757 49.26633,82.6094757 50.8284271,84.1715729 L60,93.3431458 L60,35.6568542 L60,35.6568542 Z M16,116 L112,116 C114.209139,116 116,114.209139 116,112 C116,109.790861 114.209139,108 112,108 L16,108 C13.790861,108 12,109.790861 12,112 C12,114.209139 13.790861,116 16,116 L16,116 Z M16,20 L112,20 C114.209139,20 116,18.209139 116,16 C116,13.790861 114.209139,12 112,12 L16,12 C13.790861,12 12,13.790861 12,16 C12,18.209139 13.790861,20 16,20 L16,20 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/fold-all-button": {
            "title": "$:/core/images/fold-all-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-fold-all tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <rect x=\"0\" y=\"0\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n        <rect x=\"0\" y=\"64\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n        <path d=\"M64.0292774,58.6235628 C61.9791013,58.6242848 59.9275217,57.8435723 58.3632024,56.279253 L35.7458219,33.6618725 C32.6211696,30.5372202 32.6166093,25.4673401 35.7408036,22.3431458 C38.8586409,19.2253085 43.9325646,19.2211982 47.0595304,22.348164 L64.0250749,39.3137085 L80.9906194,22.348164 C84.1152717,19.2235117 89.1851518,19.2189514 92.3093461,22.3431458 C95.4271834,25.460983 95.4312937,30.5349067 92.3043279,33.6618725 L69.6869474,56.279253 C68.1237851,57.8424153 66.0737951,58.6247195 64.0241231,58.6250809 Z\" transform=\"translate(64.024316, 39.313708) scale(1, -1) translate(-64.024316, -39.313708) \"></path>\n        <path d=\"M64.0292774,123.621227 C61.9791013,123.621949 59.9275217,122.841236 58.3632024,121.276917 L35.7458219,98.6595365 C32.6211696,95.5348842 32.6166093,90.4650041 35.7408036,87.3408098 C38.8586409,84.2229725 43.9325646,84.2188622 47.0595304,87.345828 L64.0250749,104.311373 L80.9906194,87.345828 C84.1152717,84.2211757 89.1851518,84.2166154 92.3093461,87.3408098 C95.4271834,90.458647 95.4312937,95.5325707 92.3043279,98.6595365 L69.6869474,121.276917 C68.1237851,122.840079 66.0737951,123.622383 64.0241231,123.622745 Z\" transform=\"translate(64.024316, 104.311372) scale(1, -1) translate(-64.024316, -104.311372) \"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/fold-button": {
            "title": "$:/core/images/fold-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-fold tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <rect x=\"0\" y=\"0\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n        <path d=\"M64.0292774,63.6235628 C61.9791013,63.6242848 59.9275217,62.8435723 58.3632024,61.279253 L35.7458219,38.6618725 C32.6211696,35.5372202 32.6166093,30.4673401 35.7408036,27.3431458 C38.8586409,24.2253085 43.9325646,24.2211982 47.0595304,27.348164 L64.0250749,44.3137085 L80.9906194,27.348164 C84.1152717,24.2235117 89.1851518,24.2189514 92.3093461,27.3431458 C95.4271834,30.460983 95.4312937,35.5349067 92.3043279,38.6618725 L69.6869474,61.279253 C68.1237851,62.8424153 66.0737951,63.6247195 64.0241231,63.6250809 Z\" transform=\"translate(64.024316, 44.313708) scale(1, -1) translate(-64.024316, -44.313708) \"></path>\n        <path d=\"M64.0049614,105.998482 C61.9547853,105.999204 59.9032057,105.218491 58.3388864,103.654172 L35.7215059,81.0367916 C32.5968535,77.9121393 32.5922933,72.8422592 35.7164876,69.7180649 C38.8343248,66.6002276 43.9082485,66.5961173 47.0352144,69.7230831 L64.0007589,86.6886276 L80.9663034,69.7230831 C84.0909557,66.5984308 89.1608358,66.5938705 92.2850301,69.7180649 C95.4028673,72.8359021 95.4069777,77.9098258 92.2800119,81.0367916 L69.6626314,103.654172 C68.099469,105.217334 66.0494791,105.999639 63.999807,106 Z\" transform=\"translate(64.000000, 86.688628) scale(1, -1) translate(-64.000000, -86.688628) \"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/fold-others-button": {
            "title": "$:/core/images/fold-others-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-fold-others tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <rect x=\"0\" y=\"56.0314331\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n        <path d=\"M101.657101,104.948818 C100.207918,103.498614 98.2051847,102.599976 95.9929031,102.599976 L72,102.599976 L72,78.6070725 C72,76.3964271 71.1036108,74.3936927 69.6545293,72.9441002 L69.6571005,72.9488183 C68.2079177,71.4986143 66.2051847,70.5999756 63.9929031,70.5999756 L32.0070969,70.5999756 C27.5881712,70.5999756 24,74.1816976 24,78.5999756 C24,83.0092633 27.5848994,86.5999756 32.0070969,86.5999756 L56,86.5999756 L56,110.592879 C56,112.803524 56.8963895,114.806259 58.3454713,116.255852 L58.3429,116.251133 C59.7920828,117.701337 61.7948156,118.599976 64.0070969,118.599976 L88,118.599976 L88,142.592879 C88,147.011804 91.581722,150.599976 96,150.599976 C100.409288,150.599976 104,147.015076 104,142.592879 L104,110.607072 C104,108.396427 103.103611,106.393693 101.654529,104.9441 Z\" transform=\"translate(64.000000, 110.599976) rotate(-45.000000) translate(-64.000000, -110.599976) \"></path>\n        <path d=\"M101.725643,11.7488671 C100.27646,10.2986632 98.2737272,9.40002441 96.0614456,9.40002441 L72.0685425,9.40002441 L72.0685425,-14.5928787 C72.0685425,-16.8035241 71.1721533,-18.8062584 69.7230718,-20.255851 L69.725643,-20.2511329 C68.2764602,-21.7013368 66.2737272,-22.5999756 64.0614456,-22.5999756 L32.0756394,-22.5999756 C27.6567137,-22.5999756 24.0685425,-19.0182536 24.0685425,-14.5999756 C24.0685425,-10.1906879 27.6534419,-6.59997559 32.0756394,-6.59997559 L56.0685425,-6.59997559 L56.0685425,17.3929275 C56.0685425,19.6035732 56.964932,21.6063078 58.4140138,23.0559004 L58.4114425,23.0511823 C59.8606253,24.5013859 61.8633581,25.4000244 64.0756394,25.4000244 L88.0685425,25.4000244 L88.0685425,49.3929275 C88.0685425,53.8118532 91.6502645,57.4000244 96.0685425,57.4000244 C100.47783,57.4000244 104.068542,53.815125 104.068542,49.3929275 L104.068542,17.4071213 C104.068542,15.1964759 103.172153,13.1937416 101.723072,11.744149 Z\" transform=\"translate(64.068542, 17.400024) scale(1, -1) rotate(-45.000000) translate(-64.068542, -17.400024) \"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/folder": {
            "title": "$:/core/images/folder",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-folder tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M55.6943257,128.000004 L7.99859666,128.000004 C3.5810937,128.000004 0,124.413822 0,119.996384 L0,48.0036243 C0,43.5833471 3.58387508,40.0000044 7.99859666,40.0000044 L16,40.0000044 L16,31.9999914 C16,27.5817181 19.5783731,24 24.0003461,24 L55.9996539,24 C60.4181231,24 64,27.5800761 64,31.9999914 L64,40.0000044 L104.001403,40.0000044 C108.418906,40.0000044 112,43.5861868 112,48.0036243 L112,59.8298353 L104,59.7475921 L104,51.9994189 C104,49.7887607 102.207895,48.0000044 99.9972215,48.0000044 L56,48.0000044 L56,36.0000255 C56,33.7898932 54.2072328,32 51.9957423,32 L28.0042577,32 C25.7890275,32 24,33.7908724 24,36.0000255 L24,48.0000044 L12.0027785,48.0000044 C9.78987688,48.0000044 8,49.7906032 8,51.9994189 L8,116.00059 C8,118.211248 9.79210499,120.000004 12.0027785,120.000004 L58.7630167,120.000004 L55.6943257,128.000004 L55.6943257,128.000004 Z\"></path>\n        <path d=\"M23.8728955,55.5 L119.875702,55.5 C124.293205,55.5 126.87957,59.5532655 125.650111,64.5630007 L112.305967,118.936999 C111.077582,123.942356 106.497904,128 102.083183,128 L6.08037597,128 C1.66287302,128 -0.923492342,123.946735 0.305967145,118.936999 L13.650111,64.5630007 C14.878496,59.5576436 19.4581739,55.5 23.8728955,55.5 L23.8728955,55.5 L23.8728955,55.5 Z M25.6530124,64 L113.647455,64 C115.858129,64 117.151473,66.0930612 116.538306,68.6662267 L105.417772,115.333773 C104.803671,117.910859 102.515967,120 100.303066,120 L12.3086228,120 C10.0979492,120 8.8046054,117.906939 9.41777189,115.333773 L20.5383062,68.6662267 C21.1524069,66.0891409 23.4401107,64 25.6530124,64 L25.6530124,64 L25.6530124,64 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/full-screen-button": {
            "title": "$:/core/images/full-screen-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-full-screen-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g>\n        <g>\n            <path d=\"M5.29777586e-31,8 C1.59060409e-15,3.581722 3.581722,0 8,0 L40,0 C44.418278,0 48,3.581722 48,8 C48,12.418278 44.418278,16 40,16 L16,16 L16,40 C16,44.418278 12.418278,48 8,48 C3.581722,48 -3.55271368e-15,44.418278 0,40 L3.55271368e-15,8 Z\"></path>\n        </g>\n        <g transform=\"translate(104.000000, 104.000000) rotate(-180.000000) translate(-104.000000, -104.000000) translate(80.000000, 80.000000)\">\n            <path d=\"M5.29777586e-31,8 C1.59060409e-15,3.581722 3.581722,0 8,0 L40,0 C44.418278,0 48,3.581722 48,8 C48,12.418278 44.418278,16 40,16 L16,16 L16,40 C16,44.418278 12.418278,48 8,48 C3.581722,48 -3.55271368e-15,44.418278 0,40 L3.55271368e-15,8 Z\"></path>\n        </g>\n        <g transform=\"translate(24.000000, 104.000000) rotate(-90.000000) translate(-24.000000, -104.000000) translate(0.000000, 80.000000)\">\n            <path d=\"M5.29777586e-31,8 C1.59060409e-15,3.581722 3.581722,0 8,0 L40,0 C44.418278,0 48,3.581722 48,8 C48,12.418278 44.418278,16 40,16 L16,16 L16,40 C16,44.418278 12.418278,48 8,48 C3.581722,48 -3.55271368e-15,44.418278 0,40 L3.55271368e-15,8 Z\"></path>\n        </g>\n        <g transform=\"translate(104.000000, 24.000000) rotate(90.000000) translate(-104.000000, -24.000000) translate(80.000000, 0.000000)\">\n            <path d=\"M5.29777586e-31,8 C1.59060409e-15,3.581722 3.581722,0 8,0 L40,0 C44.418278,0 48,3.581722 48,8 C48,12.418278 44.418278,16 40,16 L16,16 L16,40 C16,44.418278 12.418278,48 8,48 C3.581722,48 -3.55271368e-15,44.418278 0,40 L3.55271368e-15,8 Z\"></path>\n        </g>\n    </g>\n</svg>"
        },
        "$:/core/images/github": {
            "title": "$:/core/images/github",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-github tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n        <g fill-rule=\"evenodd\">\n            <path d=\"M63.9383506,1.60695328 C28.6017227,1.60695328 -0.055756057,30.2970814 -0.055756057,65.6906208 C-0.055756057,94.003092 18.2804728,118.019715 43.7123154,126.493393 C46.9143781,127.083482 48.0812647,125.104717 48.0812647,123.405261 C48.0812647,121.886765 48.02626,117.85449 47.9948287,112.508284 C30.1929317,116.379268 26.4368926,103.916587 26.4368926,103.916587 C23.5255693,96.5129372 19.3294921,94.5420399 19.3294921,94.5420399 C13.5186324,90.5687739 19.7695302,90.6474524 19.7695302,90.6474524 C26.1933001,91.099854 29.5721638,97.2525155 29.5721638,97.2525155 C35.2808718,107.044059 44.5531024,104.215566 48.1991321,102.575118 C48.7806109,98.4366275 50.4346826,95.612068 52.2616263,94.0109598 C38.0507543,92.3941159 23.1091047,86.8944862 23.1091047,62.3389152 C23.1091047,55.3443933 25.6039634,49.6205298 29.6978889,45.1437211 C29.0378318,43.5229433 26.8415704,37.0044266 30.3265147,28.1845627 C30.3265147,28.1845627 35.6973364,26.4615028 47.9241083,34.7542205 C53.027764,33.330139 58.5046663,32.6220321 63.9462084,32.5944947 C69.3838216,32.6220321 74.856795,33.330139 79.9683085,34.7542205 C92.1872225,26.4615028 97.5501864,28.1845627 97.5501864,28.1845627 C101.042989,37.0044266 98.8467271,43.5229433 98.190599,45.1437211 C102.292382,49.6205298 104.767596,55.3443933 104.767596,62.3389152 C104.767596,86.9574291 89.8023734,92.3744463 75.5482834,93.9598188 C77.8427675,95.9385839 79.8897303,99.8489072 79.8897303,105.828476 C79.8897303,114.392635 79.8111521,121.304544 79.8111521,123.405261 C79.8111521,125.120453 80.966252,127.114954 84.2115327,126.489459 C109.623731,117.996111 127.944244,93.9952241 127.944244,65.6906208 C127.944244,30.2970814 99.2867652,1.60695328 63.9383506,1.60695328\"></path>\n        </g>\n    </svg>\n"
        },
        "$:/core/images/globe": {
            "title": "$:/core/images/globe",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-globe tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M72.8111354,37.1275855 C72.8111354,37.9789875 72.8111354,38.8303894 72.8111354,39.6817913 C72.8111354,41.8784743 73.7885604,46.5631866 72.8111354,48.5143758 C71.3445471,51.4420595 68.1617327,52.0543531 66.4170946,54.3812641 C65.2352215,55.9575873 61.7987417,64.9821523 62.7262858,67.3005778 C66.6959269,77.2228204 74.26087,70.4881886 80.6887657,76.594328 C81.5527211,77.415037 83.5758191,78.8666631 83.985137,79.8899578 C87.2742852,88.1128283 76.4086873,94.8989524 87.7419325,106.189751 C88.9872885,107.430443 91.555495,102.372895 91.8205061,101.575869 C92.6726866,99.0129203 98.5458765,96.1267309 100.908882,94.5234439 C102.928056,93.1534443 105.782168,91.8557166 107.236936,89.7775886 C109.507391,86.5342557 108.717505,82.2640435 110.334606,79.0328716 C112.473794,74.7585014 114.163418,69.3979002 116.332726,65.0674086 C120.230862,57.2857361 121.054075,67.1596684 121.400359,67.5059523 C121.757734,67.8633269 122.411167,67.5059523 122.916571,67.5059523 C123.011132,67.5059523 124.364019,67.6048489 124.432783,67.5059523 C125.0832,66.5705216 123.390209,49.5852316 123.114531,48.2089091 C121.710578,41.1996597 116.17083,32.4278331 111.249523,27.7092761 C104.975994,21.6942076 104.160516,11.5121686 92.9912146,12.7547535 C92.7872931,12.7774397 87.906794,22.9027026 85.2136766,26.2672064 C81.486311,30.9237934 82.7434931,22.1144904 78.6876623,22.1144904 C78.6065806,22.1144904 77.5045497,22.0107615 77.4353971,22.1144904 C76.8488637,22.9942905 75.9952305,26.0101404 75.1288269,26.5311533 C74.8635477,26.6906793 73.4071369,26.2924966 73.2826811,26.5311533 C71.0401728,30.8313939 81.5394677,28.7427264 79.075427,34.482926 C76.7225098,39.9642538 72.747373,32.4860199 72.747373,43.0434079\"></path>\n        <path d=\"M44.4668556,7.01044608 C54.151517,13.1403033 45.1489715,19.2084878 47.1611905,23.2253896 C48.8157833,26.5283781 51.4021933,28.6198851 48.8753629,33.038878 C46.8123257,36.6467763 42.0052989,37.0050492 39.251679,39.7621111 C36.2115749,42.8060154 33.7884281,48.7028116 32.4624592,52.6732691 C30.8452419,57.5158356 47.0088721,59.5388126 44.5246867,63.6811917 C43.1386839,65.9923513 37.7785192,65.1466282 36.0880227,63.8791519 C34.9234453,63.0059918 32.4946425,63.3331166 31.6713597,62.0997342 C29.0575851,58.1839669 29.4107339,54.0758543 28.0457962,49.9707786 C27.1076833,47.1493864 21.732611,47.8501656 20.2022714,49.3776393 C19.6790362,49.8998948 19.8723378,51.1703278 19.8723378,51.8829111 C19.8723378,57.1682405 26.9914913,55.1986414 26.9914913,58.3421973 C26.9914913,72.9792302 30.9191897,64.8771867 38.1313873,69.6793121 C48.1678018,76.3618966 45.9763926,76.981595 53.0777543,84.0829567 C56.7511941,87.7563965 60.8192437,87.7689005 62.503478,93.3767069 C64.1046972,98.7081071 53.1759798,98.7157031 50.786754,100.825053 C49.663965,101.816317 47.9736094,104.970571 46.5680513,105.439676 C44.7757187,106.037867 43.334221,105.93607 41.6242359,107.219093 C39.1967302,109.040481 37.7241465,112.151588 37.6034934,112.030935 C35.4555278,109.88297 34.0848666,96.5511248 33.7147244,93.7726273 C33.1258872,89.3524817 28.1241923,88.2337027 26.7275443,84.7420826 C25.1572737,80.8164061 28.2518481,75.223612 25.599097,70.9819941 C19.0797019,60.557804 13.7775712,56.4811506 10.2493953,44.6896152 C9.3074899,41.5416683 13.5912267,38.1609942 15.1264825,35.8570308 C17.0029359,33.0410312 17.7876232,30.0028946 19.8723378,27.2224065 C22.146793,24.1888519 40.8551166,9.46076832 43.8574051,8.63490613 L44.4668556,7.01044608 Z\"></path>\n        <path d=\"M64,126 C98.2416545,126 126,98.2416545 126,64 C126,29.7583455 98.2416545,2 64,2 C29.7583455,2 2,29.7583455 2,64 C2,98.2416545 29.7583455,126 64,126 Z M64,120 C94.927946,120 120,94.927946 120,64 C120,33.072054 94.927946,8 64,8 C33.072054,8 8,33.072054 8,64 C8,94.927946 33.072054,120 64,120 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/heading-1": {
            "title": "$:/core/images/heading-1",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-heading-1 tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M14,30 L27.25,30 L27.25,60.104 L61.7,60.104 L61.7,30 L74.95,30 L74.95,105.684 L61.7,105.684 L61.7,71.552 L27.25,71.552 L27.25,105.684 L14,105.684 L14,30 Z M84.3350766,43.78 C86.8790893,43.78 89.3523979,43.5680021 91.7550766,43.144 C94.1577553,42.7199979 96.3307336,42.0133383 98.2740766,41.024 C100.21742,40.0346617 101.87807,38.7626744 103.256077,37.208 C104.634084,35.6533256 105.535075,33.7453446 105.959077,31.484 L115.817077,31.484 L115.817077,105.684 L102.567077,105.684 L102.567077,53.32 L84.3350766,53.32 L84.3350766,43.78 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/heading-2": {
            "title": "$:/core/images/heading-2",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-heading-2 tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M6,30 L19.25,30 L19.25,60.104 L53.7,60.104 L53.7,30 L66.95,30 L66.95,105.684 L53.7,105.684 L53.7,71.552 L19.25,71.552 L19.25,105.684 L6,105.684 L6,30 Z M125.519077,105.684 L74.8510766,105.684 C74.9217436,99.5359693 76.4057288,94.1653563 79.3030766,89.572 C82.2004244,84.9786437 86.1577182,80.986017 91.1750766,77.594 C93.5777553,75.8273245 96.0863969,74.113675 98.7010766,72.453 C101.315756,70.792325 103.718399,69.0080095 105.909077,67.1 C108.099754,65.1919905 109.901736,63.1250111 111.315077,60.899 C112.728417,58.6729889 113.47041,56.1113478 113.541077,53.214 C113.541077,51.8713266 113.382078,50.4403409 113.064077,48.921 C112.746075,47.4016591 112.127748,45.9883399 111.209077,44.681 C110.290405,43.3736601 109.018418,42.2783377 107.393077,41.395 C105.767735,40.5116622 103.647756,40.07 101.033077,40.07 C98.6303979,40.07 96.6340846,40.5469952 95.0440766,41.501 C93.4540687,42.4550048 92.1820814,43.762325 91.2280766,45.423 C90.2740719,47.083675 89.5674123,49.0446554 89.1080766,51.306 C88.648741,53.5673446 88.3837436,56.0053203 88.3130766,58.62 L76.2290766,58.62 C76.2290766,54.5213128 76.7767378,50.7230175 77.8720766,47.225 C78.9674154,43.7269825 80.610399,40.7060127 82.8010766,38.162 C84.9917542,35.6179873 87.6593942,33.6216739 90.8040766,32.173 C93.948759,30.7243261 97.6057224,30 101.775077,30 C106.297766,30 110.078395,30.7419926 113.117077,32.226 C116.155758,33.7100074 118.611401,35.5826554 120.484077,37.844 C122.356753,40.1053446 123.681739,42.5609868 124.459077,45.211 C125.236414,47.8610133 125.625077,50.3873213 125.625077,52.79 C125.625077,55.7580148 125.165748,58.4433213 124.247077,60.846 C123.328405,63.2486787 122.091751,65.4569899 120.537077,67.471 C118.982402,69.4850101 117.215753,71.3399915 115.237077,73.036 C113.2584,74.7320085 111.209087,76.3219926 109.089077,77.806 C106.969066,79.2900074 104.849087,80.7033266 102.729077,82.046 C100.609066,83.3886734 98.6480856,84.7313266 96.8460766,86.074 C95.0440676,87.4166734 93.47175,88.8123261 92.1290766,90.261 C90.7864032,91.7096739 89.8677458,93.2466585 89.3730766,94.872 L125.519077,94.872 L125.519077,105.684 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/heading-3": {
            "title": "$:/core/images/heading-3",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-heading-3 tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M6,30 L19.25,30 L19.25,60.104 L53.7,60.104 L53.7,30 L66.95,30 L66.95,105.684 L53.7,105.684 L53.7,71.552 L19.25,71.552 L19.25,105.684 L6,105.684 L6,30 Z M94.8850766,62.224 C96.8637532,62.294667 98.8424001,62.1533351 100.821077,61.8 C102.799753,61.4466649 104.566402,60.8283378 106.121077,59.945 C107.675751,59.0616623 108.930072,57.8426744 109.884077,56.288 C110.838081,54.7333256 111.315077,52.8253446 111.315077,50.564 C111.315077,47.3839841 110.237421,44.8400095 108.082077,42.932 C105.926733,41.0239905 103.153094,40.07 99.7610766,40.07 C97.641066,40.07 95.8037511,40.4939958 94.2490766,41.342 C92.6944022,42.1900042 91.4047484,43.3383261 90.3800766,44.787 C89.3554048,46.2356739 88.5957458,47.860991 88.1010766,49.663 C87.6064075,51.465009 87.3944096,53.3199905 87.4650766,55.228 L75.3810766,55.228 C75.5224107,51.623982 76.1937373,48.2850154 77.3950766,45.211 C78.596416,42.1369846 80.2393995,39.4693446 82.3240766,37.208 C84.4087537,34.9466554 86.9350618,33.1800064 89.9030766,31.908 C92.8710915,30.6359936 96.2277246,30 99.9730766,30 C102.870424,30 105.714729,30.4239958 108.506077,31.272 C111.297424,32.1200042 113.806065,33.3566585 116.032077,34.982 C118.258088,36.6073415 120.042403,38.6743208 121.385077,41.183 C122.72775,43.6916792 123.399077,46.5713171 123.399077,49.822 C123.399077,53.5673521 122.551085,56.8356527 120.855077,59.627 C119.159068,62.4183473 116.509095,64.4499936 112.905077,65.722 L112.905077,65.934 C117.145098,66.7820042 120.448731,68.8843166 122.816077,72.241 C125.183422,75.5976835 126.367077,79.6786426 126.367077,84.484 C126.367077,88.017351 125.660417,91.1796527 124.247077,93.971 C122.833736,96.7623473 120.925755,99.129657 118.523077,101.073 C116.120398,103.016343 113.329093,104.517995 110.149077,105.578 C106.969061,106.638005 103.612428,107.168 100.079077,107.168 C95.7683884,107.168 92.005426,106.549673 88.7900766,105.313 C85.5747272,104.076327 82.8894207,102.327345 80.7340766,100.066 C78.5787325,97.8046554 76.9357489,95.0840159 75.8050766,91.904 C74.6744043,88.7239841 74.0737436,85.1906861 74.0030766,81.304 L86.0870766,81.304 C85.9457426,85.8266893 87.0587315,89.5896517 89.4260766,92.593 C91.7934218,95.5963483 95.3443863,97.098 100.079077,97.098 C104.107097,97.098 107.481396,95.9496782 110.202077,93.653 C112.922757,91.3563219 114.283077,88.0880212 114.283077,83.848 C114.283077,80.9506522 113.717749,78.6540085 112.587077,76.958 C111.456404,75.2619915 109.972419,73.9723378 108.135077,73.089 C106.297734,72.2056623 104.230755,71.6580011 101.934077,71.446 C99.6373985,71.2339989 97.2877553,71.163333 94.8850766,71.234 L94.8850766,62.224 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/heading-4": {
            "title": "$:/core/images/heading-4",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-heading-4 tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M8,30 L21.25,30 L21.25,60.104 L55.7,60.104 L55.7,30 L68.95,30 L68.95,105.684 L55.7,105.684 L55.7,71.552 L21.25,71.552 L21.25,105.684 L8,105.684 L8,30 Z M84.5890766,78.548 L107.061077,78.548 L107.061077,45.9 L106.849077,45.9 L84.5890766,78.548 Z M128.049077,88.088 L118.509077,88.088 L118.509077,105.684 L107.061077,105.684 L107.061077,88.088 L75.2610766,88.088 L75.2610766,76.11 L107.061077,31.484 L118.509077,31.484 L118.509077,78.548 L128.049077,78.548 L128.049077,88.088 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/heading-5": {
            "title": "$:/core/images/heading-5",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-heading-5 tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M6,30 L19.25,30 L19.25,60.104 L53.7,60.104 L53.7,30 L66.95,30 L66.95,105.684 L53.7,105.684 L53.7,71.552 L19.25,71.552 L19.25,105.684 L6,105.684 L6,30 Z M83.7550766,31.484 L122.127077,31.484 L122.127077,42.296 L92.7650766,42.296 L88.9490766,61.164 L89.1610766,61.376 C90.7864181,59.5386575 92.8533974,58.1430048 95.3620766,57.189 C97.8707558,56.2349952 100.361731,55.758 102.835077,55.758 C106.509762,55.758 109.795729,56.3763272 112.693077,57.613 C115.590424,58.8496729 118.0284,60.5809889 120.007077,62.807 C121.985753,65.0330111 123.487405,67.6653181 124.512077,70.704 C125.536748,73.7426819 126.049077,77.028649 126.049077,80.562 C126.049077,83.5300148 125.572081,86.5863176 124.618077,89.731 C123.664072,92.8756824 122.144754,95.7376538 120.060077,98.317 C117.9754,100.896346 115.30776,103.016325 112.057077,104.677 C108.806394,106.337675 104.919766,107.168 100.397077,107.168 C96.7930586,107.168 93.454092,106.691005 90.3800766,105.737 C87.3060613,104.782995 84.6030883,103.35201 82.2710766,101.444 C79.939065,99.5359905 78.0840835,97.1863473 76.7060766,94.395 C75.3280697,91.6036527 74.5684107,88.3353521 74.4270766,84.59 L86.5110766,84.59 C86.8644117,88.6180201 88.2423979,91.7096559 90.6450766,93.865 C93.0477553,96.0203441 96.2277235,97.098 100.185077,97.098 C102.729089,97.098 104.884401,96.6740042 106.651077,95.826 C108.417752,94.9779958 109.848738,93.8120074 110.944077,92.328 C112.039415,90.8439926 112.816741,89.1126766 113.276077,87.134 C113.735412,85.1553234 113.965077,83.0353446 113.965077,80.774 C113.965077,78.7246564 113.682413,76.763676 113.117077,74.891 C112.55174,73.018324 111.703749,71.3753404 110.573077,69.962 C109.442404,68.5486596 107.976086,67.4180042 106.174077,66.57 C104.372068,65.7219958 102.269755,65.298 99.8670766,65.298 C97.3230639,65.298 94.9380878,65.7749952 92.7120766,66.729 C90.4860655,67.6830048 88.8784149,69.4673203 87.8890766,72.082 L75.8050766,72.082 L83.7550766,31.484 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/heading-6": {
            "title": "$:/core/images/heading-6",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-heading-6 tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M6,30 L19.25,30 L19.25,60.104 L53.7,60.104 L53.7,30 L66.95,30 L66.95,105.684 L53.7,105.684 L53.7,71.552 L19.25,71.552 L19.25,105.684 L6,105.684 L6,30 Z M112.587077,50.246 C112.304409,47.2073181 111.226753,44.751676 109.354077,42.879 C107.481401,41.006324 104.955093,40.07 101.775077,40.07 C99.584399,40.07 97.6940846,40.4763293 96.1040766,41.289 C94.5140687,42.1016707 93.1714154,43.1793266 92.0760766,44.522 C90.9807378,45.8646734 90.0974133,47.401658 89.4260766,49.133 C88.7547399,50.864342 88.2070787,52.6839905 87.7830766,54.592 C87.3590745,56.5000095 87.0587442,58.390324 86.8820766,60.263 C86.7054091,62.135676 86.5464107,63.8846585 86.4050766,65.51 L86.6170766,65.722 C88.2424181,62.7539852 90.4860623,60.5456739 93.3480766,59.097 C96.2100909,57.6483261 99.3017267,56.924 102.623077,56.924 C106.297762,56.924 109.583729,57.5599936 112.481077,58.832 C115.378424,60.1040064 117.834067,61.8529889 119.848077,64.079 C121.862087,66.3050111 123.399071,68.9373181 124.459077,71.976 C125.519082,75.0146819 126.049077,78.300649 126.049077,81.834 C126.049077,85.438018 125.466082,88.7769846 124.300077,91.851 C123.134071,94.9250154 121.455754,97.6103219 119.265077,99.907 C117.074399,102.203678 114.459758,103.987994 111.421077,105.26 C108.382395,106.532006 105.025762,107.168 101.351077,107.168 C95.9097161,107.168 91.4400941,106.16101 87.9420766,104.147 C84.4440591,102.13299 81.6880867,99.3770175 79.6740766,95.879 C77.6600666,92.3809825 76.2644138,88.2823568 75.4870766,83.583 C74.7097394,78.8836432 74.3210766,73.8133605 74.3210766,68.372 C74.3210766,63.9199777 74.7980719,59.4326893 75.7520766,54.91 C76.7060814,50.3873107 78.278399,46.2710186 80.4690766,42.561 C82.6597542,38.8509815 85.5393921,35.8300117 89.1080766,33.498 C92.6767611,31.1659883 97.0757171,30 102.305077,30 C105.273091,30 108.064397,30.4946617 110.679077,31.484 C113.293756,32.4733383 115.608067,33.8513245 117.622077,35.618 C119.636087,37.3846755 121.27907,39.5046543 122.551077,41.978 C123.823083,44.4513457 124.529743,47.2073181 124.671077,50.246 L112.587077,50.246 Z M100.927077,97.098 C103.117754,97.098 105.025735,96.6563378 106.651077,95.773 C108.276418,94.8896623 109.636738,93.7413404 110.732077,92.328 C111.827415,90.9146596 112.640074,89.271676 113.170077,87.399 C113.700079,85.526324 113.965077,83.6006766 113.965077,81.622 C113.965077,79.6433234 113.700079,77.7353425 113.170077,75.898 C112.640074,74.0606575 111.827415,72.4530069 110.732077,71.075 C109.636738,69.6969931 108.276418,68.5840042 106.651077,67.736 C105.025735,66.8879958 103.117754,66.464 100.927077,66.464 C98.736399,66.464 96.8107516,66.8703293 95.1500766,67.683 C93.4894017,68.4956707 92.0937489,69.5909931 90.9630766,70.969 C89.8324043,72.3470069 88.9844128,73.9546575 88.4190766,75.792 C87.8537405,77.6293425 87.5710766,79.5726564 87.5710766,81.622 C87.5710766,83.6713436 87.8537405,85.6146575 88.4190766,87.452 C88.9844128,89.2893425 89.8324043,90.9323261 90.9630766,92.381 C92.0937489,93.8296739 93.4894017,94.9779958 95.1500766,95.826 C96.8107516,96.6740042 98.736399,97.098 100.927077,97.098 L100.927077,97.098 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/help": {
            "title": "$:/core/images/help",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-help tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M36.0548906,111.44117 C30.8157418,115.837088 20.8865444,118.803477 9.5,118.803477 C7.86465619,118.803477 6.25937294,118.742289 4.69372699,118.624467 C12.612543,115.984876 18.7559465,110.02454 21.0611049,102.609942 C8.74739781,92.845129 1.04940554,78.9359851 1.04940554,63.5 C1.04940554,33.9527659 29.2554663,10 64.0494055,10 C98.8433448,10 127.049406,33.9527659 127.049406,63.5 C127.049406,93.0472341 98.8433448,117 64.0494055,117 C53.9936953,117 44.48824,114.999337 36.0548906,111.44117 L36.0548906,111.44117 Z M71.4042554,77.5980086 C71.406883,77.2865764 71.4095079,76.9382011 71.4119569,76.5610548 C71.4199751,75.3262169 71.4242825,74.0811293 71.422912,72.9158546 C71.4215244,71.736154 71.4143321,70.709635 71.4001396,69.8743525 C71.4078362,68.5173028 71.9951951,67.7870427 75.1273009,65.6385471 C75.2388969,65.5619968 76.2124091,64.8981068 76.5126553,64.6910879 C79.6062455,62.5580654 81.5345849,60.9050204 83.2750652,58.5038955 C85.6146327,55.2762841 86.8327108,51.426982 86.8327108,46.8554323 C86.8327108,33.5625756 76.972994,24.9029551 65.3778484,24.9029551 C54.2752771,24.9029551 42.8794554,34.5115163 41.3121702,47.1975534 C40.9043016,50.4989536 43.2499725,53.50591 46.5513726,53.9137786 C49.8527728,54.3216471 52.8597292,51.9759763 53.2675978,48.6745761 C54.0739246,42.1479456 60.2395837,36.9492759 65.3778484,36.9492759 C70.6427674,36.9492759 74.78639,40.5885487 74.78639,46.8554323 C74.78639,50.4892974 73.6853224,52.008304 69.6746221,54.7736715 C69.4052605,54.9593956 68.448509,55.6118556 68.3131127,55.7047319 C65.6309785,57.5445655 64.0858213,58.803255 62.6123358,60.6352315 C60.5044618,63.2559399 59.3714208,66.3518252 59.3547527,69.9487679 C59.3684999,70.8407274 59.3752803,71.8084521 59.3765995,72.9300232 C59.3779294,74.0607297 59.3737237,75.2764258 59.36589,76.482835 C59.3634936,76.8518793 59.3609272,77.1924914 59.3583633,77.4963784 C59.3568319,77.6778944 59.3556368,77.8074256 59.3549845,77.8730928 C59.3219814,81.1994287 61.9917551,83.9227111 65.318091,83.9557142 C68.644427,83.9887173 71.3677093,81.3189435 71.4007124,77.9926076 C71.4014444,77.9187458 71.402672,77.7856841 71.4042554,77.5980086 Z M65.3778489,102.097045 C69.5359735,102.097045 72.9067994,98.7262189 72.9067994,94.5680944 C72.9067994,90.4099698 69.5359735,87.0391439 65.3778489,87.0391439 C61.2197243,87.0391439 57.8488984,90.4099698 57.8488984,94.5680944 C57.8488984,98.7262189 61.2197243,102.097045 65.3778489,102.097045 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/home-button": {
            "title": "$:/core/images/home-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-home-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M112.9847,119.501583 C112.99485,119.336814 113,119.170705 113,119.003406 L113,67.56802 C116.137461,70.5156358 121.076014,70.4518569 124.133985,67.3938855 C127.25818,64.2696912 127.260618,59.2068102 124.131541,56.0777326 L70.3963143,2.34250601 C68.8331348,0.779326498 66.7828947,-0.000743167069 64.7337457,1.61675364e-05 C62.691312,-0.00409949529 60.6426632,0.777559815 59.077717,2.34250601 L33,28.420223 L33,28.420223 L33,8.00697327 C33,3.58484404 29.4092877,0 25,0 C20.581722,0 17,3.59075293 17,8.00697327 L17,44.420223 L5.3424904,56.0777326 C2.21694607,59.2032769 2.22220878,64.2760483 5.34004601,67.3938855 C8.46424034,70.5180798 13.5271213,70.5205187 16.6561989,67.3914411 L17,67.04764 L17,119.993027 C17,119.994189 17.0000002,119.995351 17.0000007,119.996514 C17.0000002,119.997675 17,119.998838 17,120 C17,124.418278 20.5881049,128 24.9992458,128 L105.000754,128 C109.418616,128 113,124.409288 113,120 C113,119.832611 112.99485,119.666422 112.9847,119.501583 Z M97,112 L97,51.5736087 L97,51.5736087 L64.7370156,19.3106244 L33,51.04764 L33,112 L97,112 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/import-button": {
            "title": "$:/core/images/import-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-import-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M105.449437,94.2138951 C105.449437,94.2138951 110.049457,94.1897106 110.049457,99.4026111 C110.049457,104.615512 105.163246,104.615511 105.163246,104.615511 L45.0075072,105.157833 C45.0075072,105.157833 0.367531803,106.289842 0.367532368,66.6449212 C0.367532934,27.0000003 45.0428249,27.0000003 45.0428249,27.0000003 L105.532495,27.0000003 C105.532495,27.0000003 138.996741,25.6734987 138.996741,55.1771866 C138.996741,84.6808745 105.727102,82.8457535 105.727102,82.8457535 L56.1735087,82.8457535 C56.1735087,82.8457535 22.6899229,85.1500223 22.6899229,66.0913753 C22.6899229,47.0327282 56.1735087,49.3383013 56.1735087,49.3383013 L105.727102,49.3383013 C105.727102,49.3383013 111.245209,49.3383024 111.245209,54.8231115 C111.245209,60.3079206 105.727102,60.5074524 105.727102,60.5074524 L56.1735087,60.5074524 C56.1735087,60.5074524 37.48913,60.5074528 37.48913,66.6449195 C37.48913,72.7823862 56.1735087,71.6766023 56.1735087,71.6766023 L105.727102,71.6766029 C105.727102,71.6766029 127.835546,73.1411469 127.835546,55.1771866 C127.835546,35.5304025 105.727102,38.3035317 105.727102,38.3035317 L45.0428249,38.3035317 C45.0428249,38.3035317 11.5287276,38.3035313 11.5287276,66.6449208 C11.5287276,94.9863103 45.0428244,93.9579678 45.0428244,93.9579678 L105.449437,94.2138951 Z\" transform=\"translate(69.367532, 66.000000) rotate(-45.000000) translate(-69.367532, -66.000000) \"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/info-button": {
            "title": "$:/core/images/info-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-info-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n    <g fill-rule=\"evenodd\">\n        <g transform=\"translate(0.049406, 0.000000)\">\n            <path d=\"M64,128 C99.346224,128 128,99.346224 128,64 C128,28.653776 99.346224,0 64,0 C28.653776,0 0,28.653776 0,64 C0,99.346224 28.653776,128 64,128 Z M64,112 C90.509668,112 112,90.509668 112,64 C112,37.490332 90.509668,16 64,16 C37.490332,16 16,37.490332 16,64 C16,90.509668 37.490332,112 64,112 Z\"></path>\n            <circle cx=\"64\" cy=\"32\" r=\"8\"></circle>\n            <rect x=\"56\" y=\"48\" width=\"16\" height=\"56\" rx=\"8\"></rect>\n        </g>\n    </g>\n</svg>"
        },
        "$:/core/images/italic": {
            "title": "$:/core/images/italic",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-italic tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n         <polygon points=\"66.7114846 0 89.1204482 0 62.4089636 128 40 128\"></polygon>\n    </g>\n</svg>"
        },
        "$:/core/images/left-arrow": {
            "created": "20150315234410875",
            "modified": "20150315235324760",
            "tags": "$:/tags/Image",
            "title": "$:/core/images/left-arrow",
            "text": "<svg class=\"tc-image-left-arrow tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <path transform=\"rotate(135, 63.8945, 64.1752)\" d=\"m109.07576,109.35336c-1.43248,1.43361 -3.41136,2.32182 -5.59717,2.32182l-79.16816,0c-4.36519,0 -7.91592,-3.5444 -7.91592,-7.91666c0,-4.36337 3.54408,-7.91667 7.91592,-7.91667l71.25075,0l0,-71.25075c0,-4.3652 3.54442,-7.91592 7.91667,-7.91592c4.36336,0 7.91667,3.54408 7.91667,7.91592l0,79.16815c0,2.1825 -0.88602,4.16136 -2.3185,5.59467l-0.00027,-0.00056z\"/>\n</svg>\n"
        },
        "$:/core/images/line-width": {
            "title": "$:/core/images/line-width",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-line-width tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M128,-97 L112.992786,-97 C112.452362,-97 112,-96.5522847 112,-96 C112,-95.4438648 112.444486,-95 112.992786,-95 L128,-95 L128,-97 Z M128,-78.6794919 L111.216185,-88.3696322 C110.748163,-88.6398444 110.132549,-88.4782926 109.856406,-88 C109.578339,-87.5183728 109.741342,-86.9117318 110.216185,-86.6375814 L128,-76.3700908 L128,-78.6794919 Z M78.6794919,-128 L88.3696322,-111.216185 C88.6437826,-110.741342 88.4816272,-110.134474 88,-109.856406 C87.5217074,-109.580264 86.9077936,-109.748163 86.6375814,-110.216185 L76.3700908,-128 L78.6794919,-128 Z M97,-128 L97,-112.992786 C97,-112.444486 96.5561352,-112 96,-112 C95.4477153,-112 95,-112.452362 95,-112.992786 L95,-128 L97,-128 Z M115.629909,-128 L105.362419,-110.216185 C105.088268,-109.741342 104.481627,-109.578339 104,-109.856406 C103.521707,-110.132549 103.360156,-110.748163 103.630368,-111.216185 L113.320508,-128 L115.629909,-128 Z M128,-113.320508 L111.216185,-103.630368 C110.741342,-103.356217 110.134474,-103.518373 109.856406,-104 C109.580264,-104.478293 109.748163,-105.092206 110.216185,-105.362419 L128,-115.629909 L128,-113.320508 Z M48,-96 C48,-96.5522847 48.4523621,-97 48.9927864,-97 L79.0072136,-97 C79.5555144,-97 80,-96.5561352 80,-96 C80,-95.4477153 79.5476379,-95 79.0072136,-95 L48.9927864,-95 C48.4444856,-95 48,-95.4438648 48,-96 Z M54.4307806,-120 C54.706923,-120.478293 55.3225377,-120.639844 55.7905589,-120.369632 L81.7838153,-105.362419 C82.2586577,-105.088268 82.4216611,-104.481627 82.1435935,-104 C81.8674512,-103.521707 81.2518365,-103.360156 80.7838153,-103.630368 L54.7905589,-118.637581 C54.3157165,-118.911732 54.152713,-119.518373 54.4307806,-120 Z M104,-82.1435935 C104.478293,-82.4197359 105.092206,-82.2518365 105.362419,-81.7838153 L120.369632,-55.7905589 C120.643783,-55.3157165 120.481627,-54.7088482 120,-54.4307806 C119.521707,-54.1546382 118.907794,-54.3225377 118.637581,-54.7905589 L103.630368,-80.7838153 C103.356217,-81.2586577 103.518373,-81.865526 104,-82.1435935 Z M96,-80 C96.5522847,-80 97,-79.5476379 97,-79.0072136 L97,-48.9927864 C97,-48.4444856 96.5561352,-48 96,-48 C95.4477153,-48 95,-48.4523621 95,-48.9927864 L95,-79.0072136 C95,-79.5555144 95.4438648,-80 96,-80 Z M88,-82.1435935 C88.4782926,-81.8674512 88.6398444,-81.2518365 88.3696322,-80.7838153 L73.3624186,-54.7905589 C73.0882682,-54.3157165 72.4816272,-54.152713 72,-54.4307806 C71.5217074,-54.706923 71.3601556,-55.3225377 71.6303678,-55.7905589 L86.6375814,-81.7838153 C86.9117318,-82.2586577 87.5183728,-82.4216611 88,-82.1435935 Z M82.1435935,-88 C82.4197359,-87.5217074 82.2518365,-86.9077936 81.7838153,-86.6375814 L55.7905589,-71.6303678 C55.3157165,-71.3562174 54.7088482,-71.5183728 54.4307806,-72 C54.1546382,-72.4782926 54.3225377,-73.0922064 54.7905589,-73.3624186 L80.7838153,-88.3696322 C81.2586577,-88.6437826 81.865526,-88.4816272 82.1435935,-88 Z M1.30626177e-08,-41.9868843 L15.0170091,-57.9923909 L20.7983821,-52.9749272 L44.7207091,-81.2095939 L73.4260467,-42.1002685 L85.984793,-56.6159488 L104.48741,-34.0310661 L127.969109,-47.4978019 L127.969109,7.99473128e-07 L1.30626177e-08,7.99473128e-07 L1.30626177e-08,-41.9868843 Z M96,-84 C102.627417,-84 108,-89.372583 108,-96 C108,-102.627417 102.627417,-108 96,-108 C89.372583,-108 84,-102.627417 84,-96 C84,-89.372583 89.372583,-84 96,-84 Z\"></path>\n        <path d=\"M16,18 L112,18 C113.104569,18 114,17.1045695 114,16 C114,14.8954305 113.104569,14 112,14 L16,14 C14.8954305,14 14,14.8954305 14,16 C14,17.1045695 14.8954305,18 16,18 L16,18 Z M16,35 L112,35 C114.209139,35 116,33.209139 116,31 C116,28.790861 114.209139,27 112,27 L16,27 C13.790861,27 12,28.790861 12,31 C12,33.209139 13.790861,35 16,35 L16,35 Z M16,56 L112,56 C115.313708,56 118,53.3137085 118,50 C118,46.6862915 115.313708,44 112,44 L16,44 C12.6862915,44 10,46.6862915 10,50 C10,53.3137085 12.6862915,56 16,56 L16,56 Z M16,85 L112,85 C117.522847,85 122,80.5228475 122,75 C122,69.4771525 117.522847,65 112,65 L16,65 C10.4771525,65 6,69.4771525 6,75 C6,80.5228475 10.4771525,85 16,85 L16,85 Z M16,128 L112,128 C120.836556,128 128,120.836556 128,112 C128,103.163444 120.836556,96 112,96 L16,96 C7.163444,96 0,103.163444 0,112 C0,120.836556 7.163444,128 16,128 L16,128 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/link": {
            "title": "$:/core/images/link",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-link tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M128.719999,57.568543 C130.219553,53.8628171 131.045202,49.8121445 131.045202,45.5685425 C131.045202,27.8915447 116.718329,13.5685425 99.0452364,13.5685425 L67.0451674,13.5685425 C49.3655063,13.5685425 35.0452019,27.8954305 35.0452019,45.5685425 C35.0452019,63.2455403 49.3720745,77.5685425 67.0451674,77.5685425 L99.0452364,77.5685425 C100.406772,77.5685425 101.748384,77.4835732 103.065066,77.3186499 C96.4792444,73.7895096 91.1190212,68.272192 87.7873041,61.5685425 L67.0506214,61.5685425 C58.2110723,61.5685425 51.0452019,54.4070414 51.0452019,45.5685425 C51.0452019,36.7319865 58.2005234,29.5685425 67.0506214,29.5685425 L99.0397824,29.5685425 C107.879331,29.5685425 115.045202,36.7300436 115.045202,45.5685425 C115.045202,48.9465282 113.99957,52.0800164 112.21335,54.6623005 C114.314383,56.4735917 117.050039,57.5685425 120.041423,57.5685425 L128.720003,57.5685425 Z\" transform=\"translate(83.045202, 45.568542) rotate(-225.000000) translate(-83.045202, -45.568542)\"></path>\n        <path d=\"M-0.106255113,71.0452019 C-1.60580855,74.7509276 -2.43145751,78.8016001 -2.43145751,83.0452019 C-2.43145751,100.7222 11.8954151,115.045202 29.568508,115.045202 L61.568577,115.045202 C79.2482381,115.045202 93.5685425,100.718314 93.5685425,83.0452019 C93.5685425,65.3682041 79.2416699,51.0452019 61.568577,51.0452019 L29.568508,51.0452019 C28.206973,51.0452019 26.8653616,51.1301711 25.5486799,51.2950943 C32.1345,54.8242347 37.4947231,60.3415524 40.8264403,67.0452019 L61.563123,67.0452019 C70.4026721,67.0452019 77.5685425,74.206703 77.5685425,83.0452019 C77.5685425,91.8817579 70.413221,99.0452019 61.563123,99.0452019 L29.573962,99.0452019 C20.7344129,99.0452019 13.5685425,91.8837008 13.5685425,83.0452019 C13.5685425,79.6672162 14.6141741,76.533728 16.4003949,73.9514439 C14.2993609,72.1401527 11.5637054,71.0452019 8.5723215,71.0452019 L-0.106255113,71.0452019 Z\" transform=\"translate(45.568542, 83.045202) rotate(-225.000000) translate(-45.568542, -83.045202)\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/list-bullet": {
            "title": "$:/core/images/list-bullet",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-list-bullet tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M11.6363636,40.2727273 C18.0629498,40.2727273 23.2727273,35.0629498 23.2727273,28.6363636 C23.2727273,22.2097775 18.0629498,17 11.6363636,17 C5.20977746,17 0,22.2097775 0,28.6363636 C0,35.0629498 5.20977746,40.2727273 11.6363636,40.2727273 Z M11.6363636,75.1818182 C18.0629498,75.1818182 23.2727273,69.9720407 23.2727273,63.5454545 C23.2727273,57.1188684 18.0629498,51.9090909 11.6363636,51.9090909 C5.20977746,51.9090909 0,57.1188684 0,63.5454545 C0,69.9720407 5.20977746,75.1818182 11.6363636,75.1818182 Z M11.6363636,110.090909 C18.0629498,110.090909 23.2727273,104.881132 23.2727273,98.4545455 C23.2727273,92.0279593 18.0629498,86.8181818 11.6363636,86.8181818 C5.20977746,86.8181818 0,92.0279593 0,98.4545455 C0,104.881132 5.20977746,110.090909 11.6363636,110.090909 Z M34.9090909,22.8181818 L128,22.8181818 L128,34.4545455 L34.9090909,34.4545455 L34.9090909,22.8181818 Z M34.9090909,57.7272727 L128,57.7272727 L128,69.3636364 L34.9090909,69.3636364 L34.9090909,57.7272727 Z M34.9090909,92.6363636 L128,92.6363636 L128,104.272727 L34.9090909,104.272727 L34.9090909,92.6363636 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/list-number": {
            "title": "$:/core/images/list-number",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-list-number tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M33.8390805,22.3563218 L128,22.3563218 L128,34.1264368 L33.8390805,34.1264368 L33.8390805,22.3563218 Z M33.8390805,57.6666667 L128,57.6666667 L128,69.4367816 L33.8390805,69.4367816 L33.8390805,57.6666667 Z M33.8390805,92.9770115 L128,92.9770115 L128,104.747126 L33.8390805,104.747126 L33.8390805,92.9770115 Z M0.379509711,42.6307008 L0.379509711,40.4082314 L1.37821948,40.4082314 C2.20382368,40.4082314 2.82301754,40.268077 3.23581964,39.9877642 C3.64862174,39.7074513 3.85501969,39.0400498 3.85501969,37.9855395 L3.85501969,22.7686318 C3.85501969,21.3270228 3.66193774,20.4327047 3.27576803,20.0856507 C2.88959832,19.7385967 1.79768657,19.5650723 0,19.5650723 L0,17.4226919 C3.50215975,17.2758613 6.25191314,16.4683055 8.24934266,15 L10.3666074,15 L10.3666074,37.865406 C10.3666074,38.786434 10.5164123,39.4404875 10.8160268,39.8275862 C11.1156412,40.2146849 11.764796,40.4082314 12.7635108,40.4082314 L13.7622206,40.4082314 L13.7622206,42.6307008 L0.379509711,42.6307008 Z M0.0798967812,77.9873934 L0.0798967812,76.0852799 C7.27064304,69.5312983 10.8659622,63.5046623 10.8659622,58.005191 C10.8659622,56.4434479 10.5397203,55.195407 9.88722667,54.2610308 C9.23473303,53.3266546 8.36253522,52.8594735 7.27060709,52.8594735 C6.3784219,52.8594735 5.61608107,53.1764892 4.98356173,53.8105302 C4.35104238,54.4445712 4.03478745,55.1753759 4.03478745,56.0029663 C4.03478745,56.9773871 4.28113339,57.8316611 4.77383268,58.5658139 C4.88036225,58.7259926 4.93362624,58.8461249 4.93362624,58.9262143 C4.93362624,59.0730449 4.77383427,59.2065252 4.45424555,59.3266593 C4.2411864,59.4067486 3.70188852,59.6336652 2.83633573,60.0074156 C1.99741533,60.3811661 1.47809145,60.5680386 1.2783485,60.5680386 C1.03865696,60.5680386 0.765679018,60.1976307 0.459406492,59.4568039 C0.153133966,58.715977 0,57.9184322 0,57.0641453 C0,55.1153036 0.848894811,53.5202138 2.5467099,52.2788283 C4.24452499,51.0374428 6.34512352,50.4167594 8.84856852,50.4167594 C11.3120649,50.4167594 13.3793735,51.0874979 15.0505562,52.4289952 C16.7217389,53.7704924 17.5573177,55.5224215 17.5573177,57.684835 C17.5573177,58.9662652 17.2743527,60.2076321 16.7084144,61.4089729 C16.142476,62.6103138 14.7875733,64.4623531 12.6436656,66.9651465 C10.4997579,69.4679398 8.40914641,71.7804862 6.3717683,73.902855 L17.8169822,73.902855 L16.7982982,79.6292176 L14.6810335,79.6292176 C14.7609307,79.3489048 14.8008787,79.0952922 14.8008787,78.8683723 C14.8008787,78.4812736 14.7010087,78.237672 14.5012658,78.1375603 C14.3015228,78.0374485 13.9020429,77.9873934 13.3028141,77.9873934 L0.0798967812,77.9873934 Z M12.2042333,97.1935484 C13.9486551,97.2335931 15.4400468,97.8309175 16.6784531,98.9855395 C17.9168594,100.140162 18.5360532,101.75861 18.5360532,103.840934 C18.5360532,106.830938 17.4041935,109.233584 15.14044,111.048943 C12.8766866,112.864303 10.1402492,113.771969 6.93104577,113.771969 C4.92030005,113.771969 3.26245842,113.388213 1.95747114,112.62069 C0.652483855,111.853166 0,110.848727 0,109.607341 C0,108.833144 0.26964894,108.209124 0.808954909,107.735261 C1.34826088,107.261399 1.93749375,107.024472 2.57667119,107.024472 C3.21584864,107.024472 3.73850152,107.224692 4.14464552,107.625139 C4.55078953,108.025586 4.92696644,108.67964 5.27318756,109.587319 C5.73925445,110.855401 6.51158227,111.489433 7.59019421,111.489433 C8.85523291,111.489433 9.87723568,111.012241 10.6562332,110.057842 C11.4352307,109.103444 11.8247236,107.371536 11.8247236,104.862069 C11.8247236,103.153495 11.7048796,101.838714 11.4651881,100.917686 C11.2254966,99.9966584 10.6728827,99.5361513 9.80732989,99.5361513 C9.22141723,99.5361513 8.62219737,99.843156 8.00965231,100.457175 C7.51695303,100.951059 7.07752513,101.197998 6.69135542,101.197998 C6.3584505,101.197998 6.08880156,101.051169 5.88240051,100.757508 C5.67599946,100.463847 5.57280049,100.183539 5.57280049,99.916574 C5.57280049,99.5962164 5.67599946,99.3225818 5.88240051,99.0956618 C6.08880156,98.8687419 6.57150646,98.5016711 7.33052967,97.9944383 C10.2068282,96.0722929 11.6449559,93.9766521 11.6449559,91.7074527 C11.6449559,90.5194601 11.3386879,89.615131 10.7261429,88.9944383 C10.1135978,88.3737455 9.37455999,88.0634038 8.5090072,88.0634038 C7.71003539,88.0634038 6.98431355,88.3270274 6.33181991,88.8542825 C5.67932627,89.3815377 5.35308434,90.0122321 5.35308434,90.7463849 C5.35308434,91.3871 5.60608828,91.9810874 6.11210376,92.5283648 C6.28521432,92.7285883 6.3717683,92.8954387 6.3717683,93.028921 C6.3717683,93.1490551 5.80250943,93.4560598 4.6639746,93.9499444 C3.52543978,94.4438289 2.80970494,94.6907675 2.51674861,94.6907675 C2.10394651,94.6907675 1.76771758,94.3570667 1.50805174,93.6896552 C1.24838591,93.0222436 1.11855494,92.4082342 1.11855494,91.8476085 C1.11855494,90.0989901 2.04734573,88.6240327 3.90495518,87.4226919 C5.76256463,86.2213511 7.86982116,85.6206897 10.226788,85.6206897 C12.2907985,85.6206897 14.0784711,86.0678487 15.5898594,86.9621802 C17.1012478,87.8565117 17.8569306,89.0778566 17.8569306,90.6262514 C17.8569306,91.987771 17.2876717,93.2491599 16.1491369,94.4104561 C15.0106021,95.5717522 13.6956474,96.4994404 12.2042333,97.1935484 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/list": {
            "title": "$:/core/images/list",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-list tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M0.719999312,185.568543 C2.21955287,181.862817 3.0452019,177.812144 3.0452019,173.568542 C3.0452019,155.891545 -11.2816707,141.568542 -28.9547636,141.568542 L-60.9548326,141.568542 C-78.6344937,141.568542 -92.9547981,155.895431 -92.9547981,173.568542 C-92.9547981,191.24554 -78.6279255,205.568542 -60.9548326,205.568542 L-28.9547636,205.568542 C-27.593228,205.568542 -26.2516158,205.483573 -24.9349335,205.31865 C-31.5207556,201.78951 -36.8809788,196.272192 -40.2126959,189.568542 L-60.9493786,189.568542 C-69.7889277,189.568542 -76.9547981,182.407041 -76.9547981,173.568542 C-76.9547981,164.731986 -69.7994766,157.568542 -60.9493786,157.568542 L-28.9602176,157.568542 C-20.1206685,157.568542 -12.9547981,164.730044 -12.9547981,173.568542 C-12.9547981,176.946528 -14.0004297,180.080016 -15.7866505,182.6623 C-13.6856165,184.473592 -10.949961,185.568542 -7.9585771,185.568542 L0.720002586,185.568542 Z\" transform=\"translate(-44.954798, 173.568542) rotate(-225.000000) translate(44.954798, -173.568542) \"></path>\n        <path d=\"M87.7480315,128 L23.9992458,128 C19.5813843,128 16,124.409247 16,119.993027 L16,8.00697327 C16,3.58484404 19.5881049,0 23.9992458,0 L104.000754,0 C108.418616,0 112,3.59075293 112,8.00697327 L112,104 L91.2492027,104 C90.2848199,104 89.410573,104.391703 88.7768998,105.025201 C88.1373658,105.661376 87.7480315,106.53563 87.7480315,107.501171 L87.7480315,128 Z M95.7480315,127.879386 L111.627417,112 L95.7480315,112 L95.7480315,127.879386 Z M40,15.5089165 C40,13.5709954 41.5636015,12 43.4998101,12 L98.5001899,12 C100.433082,12 102,13.5614718 102,15.5089165 L102,16.4910835 C102,18.4290046 100.436399,20 98.5001899,20 L43.4998101,20 C41.5669183,20 40,18.4385282 40,16.4910835 L40,15.5089165 Z M32,22 C35.3137085,22 38,19.3137085 38,16 C38,12.6862915 35.3137085,10 32,10 C28.6862915,10 26,12.6862915 26,16 C26,19.3137085 28.6862915,22 32,22 Z M40,31.5089165 C40,29.5709954 41.5636015,28 43.4998101,28 L98.5001899,28 C100.433082,28 102,29.5614718 102,31.5089165 L102,32.4910835 C102,34.4290046 100.436399,36 98.5001899,36 L43.4998101,36 C41.5669183,36 40,34.4385282 40,32.4910835 L40,31.5089165 Z M40,47.5089165 C40,45.5709954 41.5636015,44 43.4998101,44 L98.5001899,44 C100.433082,44 102,45.5614718 102,47.5089165 L102,48.4910835 C102,50.4290046 100.436399,52 98.5001899,52 L43.4998101,52 C41.5669183,52 40,50.4385282 40,48.4910835 L40,47.5089165 Z M40,63.5089165 C40,61.5709954 41.5636015,60 43.4998101,60 L98.5001899,60 C100.433082,60 102,61.5614718 102,63.5089165 L102,64.4910835 C102,66.4290046 100.436399,68 98.5001899,68 L43.4998101,68 C41.5669183,68 40,66.4385282 40,64.4910835 L40,63.5089165 Z M40,79.5089165 C40,77.5709954 41.5636015,76 43.4998101,76 L98.5001899,76 C100.433082,76 102,77.5614718 102,79.5089165 L102,80.4910835 C102,82.4290046 100.436399,84 98.5001899,84 L43.4998101,84 C41.5669183,84 40,82.4385282 40,80.4910835 L40,79.5089165 Z M40,95.5089165 C40,93.5709954 41.5636015,92 43.4998101,92 L98.5001899,92 C100.433082,92 102,93.5614718 102,95.5089165 L102,96.4910835 C102,98.4290046 100.436399,100 98.5001899,100 L43.4998101,100 C41.5669183,100 40,98.4385282 40,96.4910835 L40,95.5089165 Z M40,111.508916 C40,109.570995 41.5680474,108 43.4972017,108 L76.5027983,108 C78.4342495,108 80,109.561472 80,111.508916 L80,112.491084 C80,114.429005 78.4319526,116 76.5027983,116 L43.4972017,116 C41.5657505,116 40,114.438528 40,112.491084 L40,111.508916 Z M32,38 C35.3137085,38 38,35.3137085 38,32 C38,28.6862915 35.3137085,26 32,26 C28.6862915,26 26,28.6862915 26,32 C26,35.3137085 28.6862915,38 32,38 Z M32,54 C35.3137085,54 38,51.3137085 38,48 C38,44.6862915 35.3137085,42 32,42 C28.6862915,42 26,44.6862915 26,48 C26,51.3137085 28.6862915,54 32,54 Z M32,70 C35.3137085,70 38,67.3137085 38,64 C38,60.6862915 35.3137085,58 32,58 C28.6862915,58 26,60.6862915 26,64 C26,67.3137085 28.6862915,70 32,70 Z M32,86 C35.3137085,86 38,83.3137085 38,80 C38,76.6862915 35.3137085,74 32,74 C28.6862915,74 26,76.6862915 26,80 C26,83.3137085 28.6862915,86 32,86 Z M32,102 C35.3137085,102 38,99.3137085 38,96 C38,92.6862915 35.3137085,90 32,90 C28.6862915,90 26,92.6862915 26,96 C26,99.3137085 28.6862915,102 32,102 Z M32,118 C35.3137085,118 38,115.313708 38,112 C38,108.686292 35.3137085,106 32,106 C28.6862915,106 26,108.686292 26,112 C26,115.313708 28.6862915,118 32,118 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/locked-padlock": {
            "title": "$:/core/images/locked-padlock",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-locked-padlock tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M96.4723753,64 L105,64 L105,96.0097716 C105,113.673909 90.6736461,128 73.001193,128 L55.998807,128 C38.3179793,128 24,113.677487 24,96.0097716 L24,64 L32.0000269,64 C32.0028554,48.2766389 32.3030338,16.2688026 64.1594984,16.2688041 C95.9543927,16.2688056 96.4648869,48.325931 96.4723753,64 Z M80.5749059,64 L48.4413579,64 C48.4426205,47.71306 48.5829272,31.9999996 64.1595001,31.9999996 C79.8437473,31.9999996 81.1369461,48.1359182 80.5749059,64 Z M67.7315279,92.3641717 C70.8232551,91.0923621 73,88.0503841 73,84.5 C73,79.8055796 69.1944204,76 64.5,76 C59.8055796,76 56,79.8055796 56,84.5 C56,87.947435 58.0523387,90.9155206 61.0018621,92.2491029 L55.9067479,115.020857 L72.8008958,115.020857 L67.7315279,92.3641717 L67.7315279,92.3641717 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/mail": {
            "title": "$:/core/images/mail",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-mail tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M122.826782,104.894066 C121.945525,105.22777 120.990324,105.41043 119.993027,105.41043 L8.00697327,105.41043 C7.19458381,105.41043 6.41045219,105.289614 5.67161357,105.064967 L5.67161357,105.064967 L39.8346483,70.9019325 L60.6765759,91.7438601 C61.6118278,92.679112 62.8865166,93.0560851 64.0946097,92.8783815 C65.2975108,93.0473238 66.5641085,92.6696979 67.4899463,91.7438601 L88.5941459,70.6396605 C88.6693095,70.7292352 88.7490098,70.8162939 88.8332479,70.9005321 L122.826782,104.894066 Z M127.903244,98.6568194 C127.966933,98.2506602 128,97.8343714 128,97.4103789 L128,33.410481 C128,32.7414504 127.917877,32.0916738 127.763157,31.4706493 L94.2292399,65.0045665 C94.3188145,65.0797417 94.4058701,65.1594458 94.4901021,65.2436778 L127.903244,98.6568194 Z M0.205060636,99.2178117 C0.0709009529,98.6370366 0,98.0320192 0,97.4103789 L0,33.410481 C0,32.694007 0.0944223363,31.9995312 0.27147538,31.3387595 L0.27147538,31.3387595 L34.1777941,65.2450783 L0.205060636,99.2178117 L0.205060636,99.2178117 Z M5.92934613,25.6829218 C6.59211333,25.5051988 7.28862283,25.4104299 8.00697327,25.4104299 L119.993027,25.4104299 C120.759109,25.4104299 121.500064,25.5178649 122.201605,25.7184927 L122.201605,25.7184927 L64.0832611,83.8368368 L5.92934613,25.6829218 L5.92934613,25.6829218 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/menu-button": {
            "title": "$:/core/images/menu-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-menu-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n    <rect x=\"0\" y=\"16\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n    <rect x=\"0\" y=\"56\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n    <rect x=\"0\" y=\"96\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n</svg>"
        },
        "$:/core/images/mono-block": {
            "title": "$:/core/images/mono-block",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-mono-block tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M23.9653488,32.9670593 L24.3217888,32.9670593 C25.0766067,32.9670593 25.6497006,33.1592554 26.0410876,33.5436534 C26.4324747,33.9280514 26.6281653,34.4906619 26.6281653,35.2315017 C26.6281653,36.0562101 26.4219913,36.6502709 26.009637,37.0137017 C25.5972828,37.3771326 24.9158602,37.5588453 23.9653488,37.5588453 L17.6542639,37.5588453 C16.6897744,37.5588453 16.0048573,37.380627 15.5994921,37.0241852 C15.1941269,36.6677435 14.9914474,36.0701882 14.9914474,35.2315017 C14.9914474,34.4207713 15.1941269,33.8406885 15.5994921,33.4912358 C16.0048573,33.141783 16.6897744,32.9670593 17.6542639,32.9670593 L18.388111,32.9670593 L17.5284616,30.5139133 L8.47069195,30.5139133 L7.5691084,32.9670593 L8.30295547,32.9670593 C9.25346691,32.9670593 9.93488953,33.1452775 10.3472438,33.5017193 C10.759598,33.8581611 10.965772,34.4347494 10.965772,35.2315017 C10.965772,36.0562101 10.759598,36.6502709 10.3472438,37.0137017 C9.93488953,37.3771326 9.25346691,37.5588453 8.30295547,37.5588453 L2.89345418,37.5588453 C1.92896463,37.5588453 1.24404754,37.3771326 0.838682371,37.0137017 C0.433317198,36.6502709 0.230637652,36.0562101 0.230637652,35.2315017 C0.230637652,34.4906619 0.426328248,33.9280514 0.817715312,33.5436534 C1.20910238,33.1592554 1.78219626,32.9670593 2.53701417,32.9670593 L2.89345418,32.9670593 L8.51262607,17.3256331 L6.83526132,17.3256331 C5.88474988,17.3256331 5.20332727,17.1439204 4.79097304,16.7804895 C4.37861882,16.4170587 4.1724448,15.8299869 4.1724448,15.0192565 C4.1724448,14.1945481 4.37861882,13.6004873 4.79097304,13.2370565 C5.20332727,12.8736257 5.88474988,12.691913 6.83526132,12.691913 L14.6979086,12.691913 C15.9419603,12.691913 16.815579,13.3628521 17.318791,14.7047506 L17.318791,14.7676518 L23.9653488,32.9670593 Z M12.9786097,17.3256331 L9.9383861,26.1737321 L16.0188333,26.1737321 L12.9786097,17.3256331 Z M35.3809383,26.6979086 L35.3809383,33.0928616 L38.5259972,33.0928616 C40.7485166,33.0928616 42.3140414,32.8482484 43.2226185,32.3590146 C44.1311956,31.8697807 44.5854773,31.0520736 44.5854773,29.9058686 C44.5854773,28.7456855 44.1521624,27.9209895 43.2855197,27.4317556 C42.4188769,26.9425218 40.9022748,26.6979086 38.7356678,26.6979086 L35.3809383,26.6979086 Z M46.0741385,24.370565 C47.5977525,24.9296893 48.7159844,25.6949794 49.428868,26.666458 C50.1417516,27.6379366 50.498188,28.8784752 50.498188,30.388111 C50.498188,31.6601189 50.1906743,32.8202846 49.5756374,33.8686428 C48.9606006,34.917001 48.0799929,35.7766419 46.933788,36.4475911 C46.2628387,36.8389782 45.5115266,37.1220307 44.6798291,37.296757 C43.8481316,37.4714834 42.6704935,37.5588453 41.1468796,37.5588453 L39.3856466,37.5588453 L30.2020747,37.5588453 C29.2795194,37.5588453 28.6190637,37.3771326 28.2206876,37.0137017 C27.8223114,36.6502709 27.6231264,36.0562101 27.6231264,35.2315017 C27.6231264,34.4906619 27.811828,33.9280514 28.189237,33.5436534 C28.5666459,33.1592554 29.118773,32.9670593 29.8456347,32.9670593 L30.2020747,32.9670593 L30.2020747,17.3256331 L29.8456347,17.3256331 C29.118773,17.3256331 28.5666459,17.1299425 28.189237,16.7385554 C27.811828,16.3471683 27.6231264,15.7740744 27.6231264,15.0192565 C27.6231264,14.2085262 27.8258059,13.6179599 28.2311711,13.24754 C28.6365363,12.8771201 29.2934976,12.691913 30.2020747,12.691913 L39.8469219,12.691913 C42.796303,12.691913 45.0362615,13.2650068 46.5668644,14.4112118 C48.0974674,15.5574168 48.8627574,17.2347648 48.8627574,19.443306 C48.8627574,20.5335986 48.6286276,21.4945792 48.1603609,22.3262767 C47.6920943,23.1579742 46.9966938,23.8393968 46.0741385,24.370565 L46.0741385,24.370565 Z M35.3809383,17.1998307 L35.3809383,22.4835296 L38.2114913,22.4835296 C39.9307988,22.4835296 41.1433816,22.2808501 41.8492761,21.8754849 C42.5551706,21.4701197 42.9081126,20.7852027 42.9081126,19.8207131 C42.9081126,18.912136 42.5901154,18.2481858 41.9541114,17.8288425 C41.3181074,17.4094992 40.2872373,17.1998307 38.8614701,17.1998307 L35.3809383,17.1998307 Z M71.244119,13.3838259 C71.5236812,12.880614 71.8102281,12.5241775 72.1037684,12.3145059 C72.3973087,12.1048342 72.7677231,12 73.2150226,12 C73.8999499,12 74.3856819,12.1817127 74.6722332,12.5451435 C74.9587844,12.9085744 75.1020579,13.5305909 75.1020579,14.4112118 L75.143992,19.8626472 C75.143992,20.8271368 74.9867406,21.4771091 74.6722332,21.8125837 C74.3577257,22.1480584 73.7881263,22.3157932 72.9634178,22.3157932 C72.3763372,22.3157932 71.92555,22.1760142 71.6110425,21.896452 C71.2965351,21.6168898 71.0274605,21.0997075 70.8038107,20.3448896 C70.4403799,19.0169692 69.8602971,18.0629775 69.0635448,17.482886 C68.2667926,16.9027945 67.1625385,16.612753 65.7507494,16.612753 C63.5981206,16.612753 61.9487284,17.3396038 60.8025235,18.7933272 C59.6563185,20.2470506 59.0832246,22.3507245 59.0832246,25.104412 C59.0832246,27.8441215 59.6633074,29.9477954 60.8234905,31.4154969 C61.9836736,32.8831984 63.6400547,33.6170381 65.7926836,33.6170381 C67.2603851,33.6170381 68.878327,33.1278116 70.6465578,32.149344 C72.4147886,31.1708763 73.5295261,30.6816498 73.9908037,30.6816498 C74.53595,30.6816498 74.9937262,30.9122852 75.3641461,31.3735628 C75.734566,31.8348404 75.9197732,32.4079343 75.9197732,33.0928616 C75.9197732,34.3229353 74.836486,35.4831009 72.669879,36.5733935 C70.5032721,37.663686 68.0641285,38.2088241 65.3523753,38.2088241 C61.6901107,38.2088241 58.7267959,36.9997358 56.4623422,34.5815228 C54.1978885,32.1633099 53.0656786,29.0043046 53.0656786,25.104412 C53.0656786,21.3443006 54.2118664,18.22024 56.5042763,15.7321366 C58.7966863,13.2440331 61.7040894,12 65.226573,12 C66.2190187,12 67.1974717,12.1118232 68.1619613,12.3354729 C69.1264508,12.5591227 70.1538264,12.9085702 71.244119,13.3838259 L71.244119,13.3838259 Z M81.4645862,32.9670593 L81.4645862,17.3256331 L81.1081461,17.3256331 C80.3533282,17.3256331 79.7802344,17.1299425 79.3888473,16.7385554 C78.9974602,16.3471683 78.8017696,15.7740744 78.8017696,15.0192565 C78.8017696,14.2085262 79.0114381,13.6179599 79.4307814,13.24754 C79.8501247,12.8771201 80.5280528,12.691913 81.4645862,12.691913 L85.4063933,12.691913 L86.6434498,12.691913 C89.5648747,12.691913 91.7034933,12.8177141 93.0593699,13.06932 C94.4152465,13.320926 95.5684233,13.740263 96.5189347,14.3273436 C98.210286,15.3337675 99.5067362,16.7699967 100.408324,18.6360743 C101.309912,20.5021519 101.7607,22.6582429 101.7607,25.104412 C101.7607,27.6903623 101.247012,29.9512876 100.219621,31.8872557 C99.1922296,33.8232239 97.7350336,35.2874089 95.8479888,36.2798546 C94.9953241,36.7271541 93.9959043,37.0521403 92.8496993,37.2548229 C91.7034944,37.4575055 89.9981906,37.5588453 87.7337369,37.5588453 L85.4063933,37.5588453 L81.4645862,37.5588453 C80.5000966,37.5588453 79.8151795,37.380627 79.4098143,37.0241852 C79.0044492,36.6677435 78.8017696,36.0701882 78.8017696,35.2315017 C78.8017696,34.4906619 78.9974602,33.9280514 79.3888473,33.5436534 C79.7802344,33.1592554 80.3533282,32.9670593 81.1081461,32.9670593 L81.4645862,32.9670593 Z M86.8740874,17.2417648 L86.8740874,32.9670593 L88.0692098,32.9670593 C90.7110725,32.9670593 92.6609895,32.3205814 93.9190194,31.0276063 C95.1770492,29.7346312 95.8060547,27.7462749 95.8060547,25.0624779 C95.8060547,22.4206153 95.1665658,20.4497314 93.8875688,19.1497672 C92.6085718,17.849803 90.6831161,17.1998307 88.1111439,17.1998307 C87.7756693,17.1998307 87.5205727,17.2033252 87.3458463,17.2103142 C87.1711199,17.2173033 87.0138685,17.2277867 86.8740874,17.2417648 L86.8740874,17.2417648 Z M121.94052,17.1159625 L112.190837,17.1159625 L112.190837,22.4835296 L115.88104,22.4835296 L115.88104,22.2319249 C115.88104,21.4351727 116.055763,20.841112 116.405216,20.4497249 C116.754669,20.0583378 117.285829,19.8626472 117.998713,19.8626472 C118.627728,19.8626472 119.141415,20.0408655 119.539792,20.3973072 C119.938168,20.753749 120.137353,21.2045363 120.137353,21.7496826 C120.137353,21.7776388 120.144342,21.8684951 120.15832,22.0222543 C120.172298,22.1760135 120.179287,22.3297704 120.179287,22.4835296 L120.179287,26.8237109 C120.179287,27.7602442 120.011552,28.4311834 119.676077,28.8365486 C119.340603,29.2419138 118.795465,29.4445933 118.040647,29.4445933 C117.327763,29.4445933 116.789614,29.2558917 116.426183,28.8784827 C116.062752,28.5010738 115.88104,27.9419578 115.88104,27.201118 L115.88104,26.8237109 L112.190837,26.8237109 L112.190837,33.0928616 L121.94052,33.0928616 L121.94052,30.5977816 C121.94052,29.6612482 122.118738,28.9903091 122.47518,28.5849439 C122.831622,28.1795787 123.415199,27.9768992 124.225929,27.9768992 C125.022682,27.9768992 125.592281,28.1760842 125.934745,28.5744604 C126.277208,28.9728365 126.448438,29.6472701 126.448438,30.5977816 L126.448438,35.6718099 C126.448438,36.4266278 126.30167,36.9298322 126.008129,37.1814382 C125.714589,37.4330442 125.134506,37.5588453 124.267863,37.5588453 L107.095842,37.5588453 C106.173287,37.5588453 105.512831,37.3771326 105.114455,37.0137017 C104.716079,36.6502709 104.516894,36.0562101 104.516894,35.2315017 C104.516894,34.4906619 104.705595,33.9280514 105.083004,33.5436534 C105.460413,33.1592554 106.01254,32.9670593 106.739402,32.9670593 L107.095842,32.9670593 L107.095842,17.3256331 L106.739402,17.3256331 C106.026518,17.3256331 105.477886,17.126448 105.093488,16.7280719 C104.70909,16.3296957 104.516894,15.7600963 104.516894,15.0192565 C104.516894,14.2085262 104.719573,13.6179599 105.124938,13.24754 C105.530304,12.8771201 106.187265,12.691913 107.095842,12.691913 L124.267863,12.691913 C125.120528,12.691913 125.697116,12.8212085 125.997646,13.0798036 C126.298175,13.3383986 126.448438,13.8520864 126.448438,14.6208824 L126.448438,19.3175037 C126.448438,20.2680151 126.273714,20.9494377 125.924261,21.361792 C125.574808,21.7741462 125.008703,21.9803202 124.225929,21.9803202 C123.415199,21.9803202 122.831622,21.7706517 122.47518,21.3513084 C122.118738,20.9319652 121.94052,20.254037 121.94052,19.3175037 L121.94052,17.1159625 Z M19.7719369,47.6405477 C20.037521,47.1373358 20.3205734,46.7808993 20.6211028,46.5712277 C20.9216322,46.361556 21.295541,46.2567218 21.7428405,46.2567218 C22.4277678,46.2567218 22.9134998,46.4384345 23.2000511,46.8018653 C23.4866023,47.1652962 23.6298758,47.7873127 23.6298758,48.6679336 L23.6718099,54.119369 C23.6718099,55.0838586 23.5145586,55.7338309 23.2000511,56.0693055 C22.8855436,56.4047802 22.3089553,56.572515 21.4702687,56.572515 C20.8831881,56.572515 20.4254119,56.4292415 20.0969263,56.1426902 C19.7684407,55.856139 19.4993662,55.3424512 19.2896945,54.6016114 C18.9122856,53.2597129 18.3322027,52.3022267 17.5494286,51.7291243 C16.7666545,51.1560218 15.6693894,50.8694748 14.2576003,50.8694748 C12.1049715,50.8694748 10.4590738,51.5963256 9.31985785,53.050049 C8.18064193,54.5037724 7.61104252,56.6074463 7.61104252,59.3611338 C7.61104252,62.1148214 8.20859773,64.2429566 9.40372609,65.7456034 C10.5988544,67.2482501 12.2936748,67.9995623 14.488238,67.9995623 C14.9914499,67.9995623 15.5645438,67.9401562 16.2075368,67.8213423 C16.8505299,67.7025283 17.6053364,67.5173212 18.4719792,67.2657152 L18.4719792,63.9529198 L16.1027015,63.9529198 C15.1521901,63.9529198 14.4777564,63.7781961 14.0793803,63.4287433 C13.6810042,63.0792906 13.4818191,62.4992078 13.4818191,61.6884774 C13.4818191,60.8497908 13.6810042,60.2522356 14.0793803,59.8957938 C14.4777564,59.5393521 15.1521901,59.3611338 16.1027015,59.3611338 L23.6718099,59.3611338 C24.6502776,59.3611338 25.3386891,59.5358576 25.7370653,59.8853103 C26.1354414,60.2347631 26.3346265,60.8218348 26.3346265,61.6465433 C26.3346265,62.3873831 26.1354414,62.9569825 25.7370653,63.3553586 C25.3386891,63.7537347 24.7621008,63.9529198 24.0072829,63.9529198 L23.6718099,63.9529198 L23.6718099,68.9430799 L23.6718099,69.1946846 C23.6718099,69.6419841 23.6228873,69.9529924 23.5250405,70.1277188 C23.4271937,70.3024451 23.2315031,70.4806634 22.9379628,70.6623788 C22.1412106,71.1376345 20.8762107,71.5569715 19.1429251,71.9204023 C17.4096396,72.2838332 15.6554131,72.4655459 13.8801932,72.4655459 C10.2179286,72.4655459 7.25461383,71.2564576 4.99016011,68.8382446 C2.72570638,66.4200317 1.59349651,63.2610264 1.59349651,59.3611338 C1.59349651,55.6010224 2.73968428,52.4769618 5.03209423,49.9888583 C7.32450417,47.5007549 10.2319073,46.2567218 13.7543909,46.2567218 C14.7328585,46.2567218 15.7078171,46.368545 16.6792957,46.5921947 C17.6507743,46.8158445 18.6816444,47.165292 19.7719369,47.6405477 L19.7719369,47.6405477 Z M35.611576,51.5823548 L35.611576,56.4047785 L42.4678043,56.4047785 L42.4678043,51.5823548 L42.1323314,51.5823548 C41.3775135,51.5823548 40.8009251,51.3866642 40.402549,50.9952772 C40.0041729,50.6038901 39.8049878,50.0307962 39.8049878,49.2759783 C39.8049878,48.4512699 40.0111618,47.8572091 40.4235161,47.4937783 C40.8358703,47.1303474 41.5172929,46.9486347 42.4678043,46.9486347 L47.8773056,46.9486347 C48.8278171,46.9486347 49.5022507,47.1303474 49.9006269,47.4937783 C50.299003,47.8572091 50.498188,48.4512699 50.498188,49.2759783 C50.498188,50.0307962 50.3059919,50.6038901 49.9215939,50.9952772 C49.5371959,51.3866642 48.9745854,51.5823548 48.2337456,51.5823548 L47.8773056,51.5823548 L47.8773056,67.2237811 L48.2337456,67.2237811 C48.9885636,67.2237811 49.5616574,67.4159772 49.9530445,67.8003752 C50.3444316,68.1847732 50.5401222,68.7473837 50.5401222,69.4882235 C50.5401222,70.3129319 50.3374426,70.9069927 49.9320774,71.2704235 C49.5267123,71.6338543 48.8417952,71.815567 47.8773056,71.815567 L42.4678043,71.815567 C41.5033148,71.815567 40.8183977,71.6373488 40.4130325,71.280907 C40.0076674,70.9244652 39.8049878,70.32691 39.8049878,69.4882235 C39.8049878,68.7473837 40.0041729,68.1847732 40.402549,67.8003752 C40.8009251,67.4159772 41.3775135,67.2237811 42.1323314,67.2237811 L42.4678043,67.2237811 L42.4678043,61.0384986 L35.611576,61.0384986 L35.611576,67.2237811 L35.9470489,67.2237811 C36.7018668,67.2237811 37.2784552,67.4159772 37.6768313,67.8003752 C38.0752074,68.1847732 38.2743925,68.7473837 38.2743925,69.4882235 C38.2743925,70.3129319 38.0682185,70.9069927 37.6558642,71.2704235 C37.24351,71.6338543 36.5620874,71.815567 35.611576,71.815567 L30.2020747,71.815567 C29.2375851,71.815567 28.552668,71.6373488 28.1473029,71.280907 C27.7419377,70.9244652 27.5392581,70.32691 27.5392581,69.4882235 C27.5392581,68.7473837 27.7349487,68.1847732 28.1263358,67.8003752 C28.5177229,67.4159772 29.0908168,67.2237811 29.8456347,67.2237811 L30.2020747,67.2237811 L30.2020747,51.5823548 L29.8456347,51.5823548 C29.1047949,51.5823548 28.5421844,51.3866642 28.1577864,50.9952772 C27.7733884,50.6038901 27.5811923,50.0307962 27.5811923,49.2759783 C27.5811923,48.4512699 27.7803773,47.8572091 28.1787534,47.4937783 C28.5771296,47.1303474 29.2515632,46.9486347 30.2020747,46.9486347 L35.611576,46.9486347 C36.5481093,46.9486347 37.2260374,47.1303474 37.6453807,47.4937783 C38.064724,47.8572091 38.2743925,48.4512699 38.2743925,49.2759783 C38.2743925,50.0307962 38.0752074,50.6038901 37.6768313,50.9952772 C37.2784552,51.3866642 36.7018668,51.5823548 35.9470489,51.5823548 L35.611576,51.5823548 Z M67.365213,51.5823548 L67.365213,67.2237811 L70.887679,67.2237811 C71.8381904,67.2237811 72.519613,67.4019993 72.9319673,67.7584411 C73.3443215,68.1148829 73.5504955,68.6914712 73.5504955,69.4882235 C73.5504955,70.2989538 73.340827,70.8895201 72.9214837,71.25994 C72.5021404,71.6303599 71.8242123,71.815567 70.887679,71.815567 L58.4332458,71.815567 C57.4827343,71.815567 56.8013117,71.6338543 56.3889575,71.2704235 C55.9766033,70.9069927 55.7704292,70.3129319 55.7704292,69.4882235 C55.7704292,68.6774931 55.9731088,68.0974103 56.378474,67.7479575 C56.7838391,67.3985048 57.4687562,67.2237811 58.4332458,67.2237811 L61.9557117,67.2237811 L61.9557117,51.5823548 L58.4332458,51.5823548 C57.4827343,51.5823548 56.8013117,51.4006421 56.3889575,51.0372113 C55.9766033,50.6737805 55.7704292,50.0867087 55.7704292,49.2759783 C55.7704292,48.4512699 55.9731088,47.8641981 56.378474,47.5147453 C56.7838391,47.1652926 57.4687562,46.9905689 58.4332458,46.9905689 L70.887679,46.9905689 C71.8801247,46.9905689 72.5720308,47.1652926 72.9634178,47.5147453 C73.3548049,47.8641981 73.5504955,48.4512699 73.5504955,49.2759783 C73.5504955,50.0867087 73.347816,50.6737805 72.9424508,51.0372113 C72.5370856,51.4006421 71.8521685,51.5823548 70.887679,51.5823548 L67.365213,51.5823548 Z M97.8608265,51.5823548 L97.8608265,63.1771386 L97.8608265,63.5755127 C97.8608265,65.4485794 97.7385199,66.8044357 97.493903,67.6431222 C97.2492861,68.4818088 96.8404325,69.2296264 96.26733,69.8865976 C95.5264902,70.7392623 94.4991146,71.3822457 93.1851723,71.815567 C91.87123,72.2488884 90.2917273,72.4655459 88.4466169,72.4655459 C87.1466527,72.4655459 85.8921362,72.3397448 84.6830298,72.0881388 C83.4739233,71.8365328 82.3102631,71.4591296 81.1920144,70.9559176 C80.5769776,70.6763554 80.175113,70.31293 79.9864085,69.8656305 C79.797704,69.418331 79.7033532,68.6914802 79.7033532,67.6850564 L79.7033532,63.3658422 C79.7033532,62.1637247 79.8780769,61.3250508 80.2275297,60.849795 C80.5769824,60.3745393 81.185021,60.136915 82.0516638,60.136915 C83.2957156,60.136915 83.9806326,61.0524675 84.1064356,62.8835998 C84.1204137,63.2050963 84.1413806,63.4497096 84.1693368,63.6174469 C84.3370741,65.2389076 84.7144774,66.3466561 85.301558,66.9407258 C85.8886386,67.5347954 86.8251579,67.8318258 88.1111439,67.8318258 C89.7046484,67.8318258 90.8263749,67.4089943 91.476357,66.5633187 C92.126339,65.7176431 92.4513252,64.1765796 92.4513252,61.9400821 L92.4513252,51.5823548 L88.9288593,51.5823548 C87.9783478,51.5823548 87.2969252,51.4006421 86.884571,51.0372113 C86.4722168,50.6737805 86.2660427,50.0867087 86.2660427,49.2759783 C86.2660427,48.4512699 86.4652278,47.8641981 86.8636039,47.5147453 C87.26198,47.1652926 87.9503916,46.9905689 88.9288593,46.9905689 L99.6220595,46.9905689 C100.600527,46.9905689 101.288939,47.1652926 101.687315,47.5147453 C102.085691,47.8641981 102.284876,48.4512699 102.284876,49.2759783 C102.284876,50.0867087 102.078702,50.6737805 101.666348,51.0372113 C101.253994,51.4006421 100.572571,51.5823548 99.6220595,51.5823548 L97.8608265,51.5823548 Z M112.505343,51.5823548 L112.505343,57.9353738 L118.984165,51.4565525 C118.257303,51.3726838 117.747109,51.1665098 117.453569,50.8380242 C117.160029,50.5095387 117.013261,49.9888619 117.013261,49.2759783 C117.013261,48.4512699 117.212446,47.8572091 117.610822,47.4937783 C118.009198,47.1303474 118.683632,46.9486347 119.634143,46.9486347 L124.771073,46.9486347 C125.721584,46.9486347 126.396018,47.1303474 126.794394,47.4937783 C127.19277,47.8572091 127.391955,48.4512699 127.391955,49.2759783 C127.391955,50.0447743 127.19277,50.6213627 126.794394,51.0057607 C126.396018,51.3901587 125.812441,51.5823548 125.043645,51.5823548 L124.561402,51.5823548 L118.459988,57.641835 C119.592215,58.4805215 120.626579,59.5812811 121.563113,60.9441468 C122.499646,62.3070125 123.596911,64.400203 124.854941,67.2237811 L125.127513,67.2237811 L125.546854,67.2237811 C126.371563,67.2237811 126.98659,67.4124827 127.391955,67.7898917 C127.79732,68.1673006 128,68.7334056 128,69.4882235 C128,70.3129319 127.793826,70.9069927 127.381472,71.2704235 C126.969118,71.6338543 126.287695,71.815567 125.337183,71.815567 L122.758235,71.815567 C121.626008,71.815567 120.710456,71.0537715 120.01155,69.5301576 C119.885747,69.2505954 119.787902,69.026949 119.718012,68.8592117 C118.795456,66.9022764 117.949793,65.3926632 117.180997,64.3303269 C116.412201,63.2679906 115.510627,62.2965265 114.476247,61.4159056 L112.505343,63.302941 L112.505343,67.2237811 L112.840816,67.2237811 C113.595634,67.2237811 114.172222,67.4159772 114.570599,67.8003752 C114.968975,68.1847732 115.16816,68.7473837 115.16816,69.4882235 C115.16816,70.3129319 114.961986,70.9069927 114.549631,71.2704235 C114.137277,71.6338543 113.455855,71.815567 112.505343,71.815567 L107.095842,71.815567 C106.131352,71.815567 105.446435,71.6373488 105.04107,71.280907 C104.635705,70.9244652 104.433025,70.32691 104.433025,69.4882235 C104.433025,68.7473837 104.628716,68.1847732 105.020103,67.8003752 C105.41149,67.4159772 105.984584,67.2237811 106.739402,67.2237811 L107.095842,67.2237811 L107.095842,51.5823548 L106.739402,51.5823548 C105.998562,51.5823548 105.435952,51.3866642 105.051554,50.9952772 C104.667156,50.6038901 104.474959,50.0307962 104.474959,49.2759783 C104.474959,48.4512699 104.674145,47.8572091 105.072521,47.4937783 C105.470897,47.1303474 106.14533,46.9486347 107.095842,46.9486347 L112.505343,46.9486347 C113.441877,46.9486347 114.119805,47.1303474 114.539148,47.4937783 C114.958491,47.8572091 115.16816,48.4512699 115.16816,49.2759783 C115.16816,50.0307962 114.968975,50.6038901 114.570599,50.9952772 C114.172222,51.3866642 113.595634,51.5823548 112.840816,51.5823548 L112.505343,51.5823548 Z M13.439885,96.325622 L17.4445933,84.4372993 C17.6961993,83.6545252 18.0456468,83.0849258 18.4929463,82.728484 C18.9402458,82.3720422 19.5343065,82.193824 20.2751463,82.193824 L23.5460076,82.193824 C24.496519,82.193824 25.1779416,82.3755367 25.5902958,82.7389675 C26.0026501,83.1023984 26.2088241,83.6964591 26.2088241,84.5211676 C26.2088241,85.2759855 26.009639,85.8490794 25.6112629,86.2404664 C25.2128868,86.6318535 24.6362984,86.8275441 23.8814805,86.8275441 L23.5460076,86.8275441 L24.1330852,102.46897 L24.4895252,102.46897 C25.2443431,102.46897 25.8104481,102.661166 26.187857,103.045564 C26.565266,103.429962 26.7539676,103.992573 26.7539676,104.733413 C26.7539676,105.558121 26.5547826,106.152182 26.1564064,106.515613 C25.7580303,106.879044 25.0835967,107.060756 24.1330852,107.060756 L19.4154969,107.060756 C18.4649855,107.060756 17.7905518,106.882538 17.3921757,106.526096 C16.9937996,106.169654 16.7946145,105.572099 16.7946145,104.733413 C16.7946145,103.992573 16.9868106,103.429962 17.3712086,103.045564 C17.7556066,102.661166 18.325206,102.46897 19.0800239,102.46897 L19.4154969,102.46897 L19.1219581,89.6790642 L16.0607674,99.1981091 C15.8371177,99.9109927 15.5191204,100.42468 15.1067662,100.739188 C14.694412,101.053695 14.1248126,101.210947 13.3979509,101.210947 C12.6710892,101.210947 12.0945008,101.053695 11.6681685,100.739188 C11.2418362,100.42468 10.91685,99.9109927 10.6932002,99.1981091 L7.65297664,89.6790642 L7.35943781,102.46897 L7.69491075,102.46897 C8.44972866,102.46897 9.01932808,102.661166 9.40372609,103.045564 C9.78812409,103.429962 9.98032022,103.992573 9.98032022,104.733413 C9.98032022,105.558121 9.77764067,106.152182 9.3722755,106.515613 C8.96691032,106.879044 8.29597114,107.060756 7.35943781,107.060756 L2.62088241,107.060756 C1.68434908,107.060756 1.01340989,106.879044 0.608044719,106.515613 C0.202679546,106.152182 0,105.558121 0,104.733413 C0,103.992573 0.192196121,103.429962 0.57659413,103.045564 C0.960992139,102.661166 1.53059155,102.46897 2.28540946,102.46897 L2.62088241,102.46897 L3.22892713,86.8275441 L2.89345418,86.8275441 C2.13863627,86.8275441 1.56204791,86.6318535 1.16367179,86.2404664 C0.765295672,85.8490794 0.5661106,85.2759855 0.5661106,84.5211676 C0.5661106,83.6964591 0.772284622,83.1023984 1.18463885,82.7389675 C1.59699308,82.3755367 2.27841569,82.193824 3.22892713,82.193824 L6.49978838,82.193824 C7.22665007,82.193824 7.81022738,82.3685477 8.25053783,82.7180005 C8.69084827,83.0674532 9.05077919,83.6405471 9.33034138,84.4372993 L13.439885,96.325622 Z M43.8935644,98.3803938 L43.8935644,86.8275441 L42.7403761,86.8275441 C41.8178209,86.8275441 41.1573651,86.6458314 40.758989,86.2824006 C40.3606129,85.9189697 40.1614278,85.3318979 40.1614278,84.5211676 C40.1614278,83.7104372 40.3606129,83.119871 40.758989,82.7494511 C41.1573651,82.3790312 41.8178209,82.193824 42.7403761,82.193824 L48.6950209,82.193824 C49.6035981,82.193824 50.2605593,82.3790312 50.6659245,82.7494511 C51.0712897,83.119871 51.2739692,83.7104372 51.2739692,84.5211676 C51.2739692,85.2620074 51.0817731,85.8316068 50.6973751,86.2299829 C50.3129771,86.628359 49.7643445,86.8275441 49.051461,86.8275441 L48.6950209,86.8275441 L48.6950209,105.865634 C48.6950209,106.522605 48.6251315,106.934953 48.4853504,107.10269 C48.3455693,107.270428 48.0310665,107.354295 47.5418327,107.354295 L45.4451268,107.354295 C44.7741775,107.354295 44.3024234,107.284406 44.0298503,107.144625 C43.7572771,107.004843 43.5231473,106.76023 43.3274538,106.410777 L34.6051571,91.0838571 L34.6051571,102.46897 L35.8212466,102.46897 C36.7298237,102.46897 37.379796,102.643694 37.7711831,102.993147 C38.1625701,103.3426 38.3582607,103.922682 38.3582607,104.733413 C38.3582607,105.558121 38.1590757,106.152182 37.7606995,106.515613 C37.3623234,106.879044 36.7158456,107.060756 35.8212466,107.060756 L29.8037005,107.060756 C28.8951234,107.060756 28.2381621,106.879044 27.832797,106.515613 C27.4274318,106.152182 27.2247522,105.558121 27.2247522,104.733413 C27.2247522,103.992573 27.4134539,103.429962 27.7908629,103.045564 C28.1682718,102.661166 28.7273878,102.46897 29.4682276,102.46897 L29.8037005,102.46897 L29.8037005,86.8275441 L29.4682276,86.8275441 C28.755344,86.8275441 28.203217,86.628359 27.8118299,86.2299829 C27.4204428,85.8316068 27.2247522,85.2620074 27.2247522,84.5211676 C27.2247522,83.7104372 27.4309263,83.119871 27.8432805,82.7494511 C28.2556347,82.3790312 28.9091015,82.193824 29.8037005,82.193824 L33.2422983,82.193824 C34.0670067,82.193824 34.6261227,82.3021527 34.919663,82.5188134 C35.2132033,82.7354741 35.5416839,83.1722835 35.9051148,83.8292546 L43.8935644,98.3803938 Z M64.6604624,86.3662688 C62.8572863,86.3662688 61.4420239,87.0931196 60.4146329,88.546843 C59.3872418,90.0005663 58.873554,92.0203728 58.873554,94.6063231 C58.873554,97.1922733 59.3907363,99.2190688 60.4251164,100.68677 C61.4594965,102.154472 62.8712644,102.888312 64.6604624,102.888312 C66.4636385,102.888312 67.8823953,102.157966 68.9167754,100.697254 C69.9511555,99.2365414 70.4683378,97.2062514 70.4683378,94.6063231 C70.4683378,92.0203728 69.95465,90.0005663 68.9272589,88.546843 C67.8998679,87.0931196 66.4776166,86.3662688 64.6604624,86.3662688 L64.6604624,86.3662688 Z M64.6604624,81.501911 C68.0990773,81.501911 70.929602,82.7319662 73.1521214,85.1921135 C75.3746408,87.6522607 76.4858838,90.7902992 76.4858838,94.6063231 C76.4858838,98.4503032 75.3816297,101.595331 73.1730884,104.0415 C70.9645471,106.487669 68.1270335,107.710735 64.6604624,107.710735 C61.2358256,107.710735 58.4053009,106.477185 56.1688034,104.010049 C53.9323059,101.542913 52.8140739,98.4083688 52.8140739,94.6063231 C52.8140739,90.7763211 53.9218224,87.6347881 56.1373528,85.1816299 C58.3528831,82.7284717 61.1938912,81.501911 64.6604624,81.501911 L64.6604624,81.501911 Z M87.4611651,98.1707232 L87.4611651,102.46897 L89.6207722,102.46897 C90.5293493,102.46897 91.1758272,102.643694 91.5602252,102.993147 C91.9446232,103.3426 92.1368193,103.922682 92.1368193,104.733413 C92.1368193,105.558121 91.9411287,106.152182 91.5497417,106.515613 C91.1583546,106.879044 90.5153712,107.060756 89.6207722,107.060756 L82.3661697,107.060756 C81.4436145,107.060756 80.7831587,106.879044 80.3847826,106.515613 C79.9864065,106.152182 79.7872214,105.558121 79.7872214,104.733413 C79.7872214,103.992573 79.9759231,103.429962 80.353332,103.045564 C80.730741,102.661166 81.282868,102.46897 82.0097297,102.46897 L82.3661697,102.46897 L82.3661697,86.8275441 L82.0097297,86.8275441 C81.2968461,86.8275441 80.7482136,86.628359 80.3638155,86.2299829 C79.9794175,85.8316068 79.7872214,85.2620074 79.7872214,84.5211676 C79.7872214,83.7104372 79.989901,83.119871 80.3952661,82.7494511 C80.8006313,82.3790312 81.4575926,82.193824 82.3661697,82.193824 L91.0255652,82.193824 C94.450202,82.193824 97.0396079,82.8507853 98.7938606,84.1647276 C100.548113,85.4786699 101.425227,87.414609 101.425227,89.972603 C101.425227,92.6703781 100.551608,94.7111515 98.8043442,96.0949843 C97.0570805,97.4788171 94.4641801,98.1707232 91.0255652,98.1707232 L87.4611651,98.1707232 Z M87.4611651,86.8275441 L87.4611651,93.4531348 L90.4384875,93.4531348 C92.0879044,93.4531348 93.328443,93.1735768 94.1601405,92.6144525 C94.9918381,92.0553281 95.4076806,91.2166541 95.4076806,90.0984053 C95.4076806,89.0500471 94.9778602,88.2428234 94.1182064,87.67671 C93.2585527,87.1105966 92.031992,86.8275441 90.4384875,86.8275441 L87.4611651,86.8275441 Z M114.727851,107.396229 L113.092421,109.03166 C113.69348,108.835966 114.284046,108.689198 114.864137,108.591352 C115.444229,108.493505 116.013828,108.444582 116.572953,108.444582 C117.677223,108.444582 118.840883,108.608823 120.063968,108.937308 C121.287053,109.265794 122.031376,109.430034 122.29696,109.430034 C122.744259,109.430034 123.327837,109.279772 124.047709,108.979242 C124.767582,108.678713 125.253314,108.52845 125.50492,108.52845 C126.02211,108.52845 126.45193,108.727636 126.794394,109.126012 C127.136858,109.524388 127.308087,110.024098 127.308087,110.625156 C127.308087,111.421909 126.836333,112.099837 125.892811,112.658961 C124.949288,113.218086 123.792617,113.497643 122.422762,113.497643 C121.486229,113.497643 120.28413,113.277492 118.816428,112.837181 C117.348727,112.396871 116.286406,112.176719 115.629435,112.176719 C114.636989,112.176719 113.518757,112.449288 112.274706,112.994434 C111.030654,113.53958 110.261869,113.812149 109.968329,113.812149 C109.36727,113.812149 108.857077,113.612964 108.437734,113.214588 C108.01839,112.816212 107.808722,112.337469 107.808722,111.778345 C107.808722,111.386958 107.941512,110.971115 108.207096,110.530805 C108.47268,110.090494 108.94094,109.520895 109.611889,108.821989 L111.729562,106.683349 C109.395218,105.830685 107.536157,104.29661 106.152324,102.08108 C104.768491,99.8655494 104.076585,97.3180772 104.076585,94.4385866 C104.076585,90.6365409 105.180839,87.5299526 107.389381,85.1187288 C109.597922,82.7075049 112.442425,81.501911 115.922974,81.501911 C119.389545,81.501911 122.227059,82.7109994 124.4356,85.1292123 C126.644141,87.5474252 127.748395,90.650519 127.748395,94.4385866 C127.748395,98.2126762 126.65113,101.322759 124.456567,103.768928 C122.262004,106.215097 119.480402,107.438163 116.111677,107.438163 C115.888028,107.438163 115.660887,107.434669 115.430248,107.42768 C115.199609,107.420691 114.965479,107.410207 114.727851,107.396229 L114.727851,107.396229 Z M115.922974,86.3662688 C114.119798,86.3662688 112.704535,87.0931196 111.677144,88.546843 C110.649753,90.0005663 110.136065,92.0203728 110.136065,94.6063231 C110.136065,97.1922733 110.653248,99.2190688 111.687628,100.68677 C112.722008,102.154472 114.133776,102.888312 115.922974,102.888312 C117.72615,102.888312 119.144907,102.157966 120.179287,100.697254 C121.213667,99.2365414 121.730849,97.2062514 121.730849,94.6063231 C121.730849,92.0203728 121.217161,90.0005663 120.18977,88.546843 C119.162379,87.0931196 117.740128,86.3662688 115.922974,86.3662688 L115.922974,86.3662688 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/mono-line": {
            "title": "$:/core/images/mono-line",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-mono-line tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M60.4374591,84.522627 L61.3450888,84.522627 C63.2671377,84.522627 64.7264493,85.0120303 65.7230673,85.9908515 C66.7196852,86.9696727 67.2179868,88.4022896 67.2179868,90.288745 C67.2179868,92.3887615 66.6929905,93.9014625 65.6429823,94.8268935 C64.5929741,95.7523244 62.857817,96.215033 60.4374591,96.215033 L44.3670747,96.215033 C41.9111232,96.215033 40.1670679,95.7612227 39.1348565,94.8535884 C38.102645,93.9459542 37.586547,92.424355 37.586547,90.288745 C37.586547,88.2243221 38.102645,86.747214 39.1348565,85.8573766 C40.1670679,84.9675391 41.9111232,84.522627 44.3670747,84.522627 L46.235724,84.522627 L44.0467348,78.2759992 L20.9822627,78.2759992 L18.6864935,84.522627 L20.5551429,84.522627 C22.9755008,84.522627 24.7106579,84.9764373 25.7606661,85.8840716 C26.8106743,86.7917058 27.3356705,88.2599156 27.3356705,90.288745 C27.3356705,92.3887615 26.8106743,93.9014625 25.7606661,94.8268935 C24.7106579,95.7523244 22.9755008,96.215033 20.5551429,96.215033 L6.78052766,96.215033 C4.32457622,96.215033 2.58052094,95.7523244 1.54830946,94.8268935 C0.516097994,93.9014625 0,92.3887615 0,90.288745 C0,88.4022896 0.498301511,86.9696727 1.49491948,85.9908515 C2.49153745,85.0120303 3.95084902,84.522627 5.87289797,84.522627 L6.78052766,84.522627 L21.0890427,44.6937008 L16.8178442,44.6937008 C14.3974863,44.6937008 12.6623292,44.2309922 11.612321,43.3055613 C10.5623128,42.3801303 10.0373165,40.8852258 10.0373165,38.8208028 C10.0373165,36.7207864 10.5623128,35.2080854 11.612321,34.2826544 C12.6623292,33.3572234 14.3974863,32.8945149 16.8178442,32.8945149 L36.8390873,32.8945149 C40.0069087,32.8945149 42.231469,34.6029772 43.512835,38.0199531 L43.512835,38.180123 L60.4374591,84.522627 Z M32.4611088,44.6937008 L24.7195615,67.224273 L40.2026561,67.224273 L32.4611088,44.6937008 Z M89.5058233,68.5590225 L89.5058233,84.8429669 L97.5143205,84.8429669 C103.173687,84.8429669 107.160099,84.22009 109.473676,82.9743176 C111.787254,81.7285451 112.944025,79.6463566 112.944025,76.7276897 C112.944025,73.7734293 111.840643,71.6734444 109.633846,70.4276719 C107.427049,69.1818994 103.565213,68.5590225 98.0482204,68.5590225 L89.5058233,68.5590225 Z M116.734714,62.6327346 C120.614405,64.0564746 123.461842,66.0051894 125.277111,68.4789376 C127.092379,70.9526857 128,74.1115614 128,77.9556593 C128,81.1946677 127.216955,84.1488838 125.650841,86.8183962 C124.084727,89.4879087 121.84237,91.676876 118.923703,93.385364 C117.215215,94.3819819 115.302093,95.1027395 113.18428,95.5476582 C111.066467,95.9925769 108.06776,96.215033 104.188068,96.215033 L99.7033098,96.215033 L76.3184979,96.215033 C73.9693269,96.215033 72.2875593,95.7523244 71.2731446,94.8268935 C70.2587299,93.9014625 69.7515301,92.3887615 69.7515301,90.288745 C69.7515301,88.4022896 70.2320352,86.9696727 71.1930596,85.9908515 C72.1540841,85.0120303 73.5600062,84.522627 75.4108682,84.522627 L76.3184979,84.522627 L76.3184979,44.6937008 L75.4108682,44.6937008 C73.5600062,44.6937008 72.1540841,44.1953993 71.1930596,43.1987813 C70.2320352,42.2021633 69.7515301,40.7428518 69.7515301,38.8208028 C69.7515301,36.7563799 70.2676281,35.2525771 71.2998396,34.3093494 C72.3320511,33.3661217 74.0049204,32.8945149 76.3184979,32.8945149 L100.877889,32.8945149 C108.388118,32.8945149 114.09189,34.3538264 117.989378,37.2724934 C121.886867,40.1911603 123.835581,44.4623161 123.835581,50.0860889 C123.835581,52.8623819 123.239399,55.3093982 122.047017,57.4272114 C120.854635,59.5450246 119.083885,61.2801816 116.734714,62.6327346 L116.734714,62.6327346 Z M89.5058233,44.3733609 L89.5058233,57.8276363 L96.7134708,57.8276363 C101.091471,57.8276363 104.179161,57.3115383 105.976633,56.2793268 C107.774104,55.2471153 108.672827,53.50306 108.672827,51.0471086 C108.672827,48.7335312 107.863087,47.0428653 106.243583,45.9750604 C104.624078,44.9072554 101.999097,44.3733609 98.3685602,44.3733609 L89.5058233,44.3733609 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/new-button": {
            "title": "$:/core/images/new-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-new-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M56,72 L8.00697327,72 C3.59075293,72 0,68.418278 0,64 C0,59.5907123 3.58484404,56 8.00697327,56 L56,56 L56,8.00697327 C56,3.59075293 59.581722,0 64,0 C68.4092877,0 72,3.58484404 72,8.00697327 L72,56 L119.993027,56 C124.409247,56 128,59.581722 128,64 C128,68.4092877 124.415156,72 119.993027,72 L72,72 L72,119.993027 C72,124.409247 68.418278,128 64,128 C59.5907123,128 56,124.415156 56,119.993027 L56,72 L56,72 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/new-here-button": {
            "title": "$:/core/images/new-here-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-new-here-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n    \t<g transform=\"translate(52.233611, 64.389922) rotate(75.000000) translate(-52.233611, -64.389922) translate(-7.734417, 3.702450)\">\n\t        <path d=\"M18.9270186,45.959338 L18.9080585,49.6521741 C18.8884833,53.4648378 21.0574548,58.7482162 23.7526408,61.4434022 L78.5671839,116.257945 C81.2617332,118.952495 85.6348701,118.950391 88.3334363,116.251825 L115.863237,88.7220241 C118.555265,86.0299959 118.564544,81.6509578 115.869358,78.9557717 L61.0548144,24.1412286 C58.3602652,21.4466794 53.0787224,19.2788426 49.2595808,19.3006519 L25.9781737,19.4336012 C22.1633003,19.4553862 19.0471195,22.5673232 19.0275223,26.3842526 L18.9871663,34.2443819 C19.0818862,34.255617 19.1779758,34.2665345 19.2754441,34.2771502 C22.6891275,34.6489512 27.0485594,34.2348566 31.513244,33.2285542 C31.7789418,32.8671684 32.075337,32.5211298 32.4024112,32.1940556 C34.8567584,29.7397084 38.3789778,29.0128681 41.4406288,30.0213822 C41.5958829,29.9543375 41.7503946,29.8866669 41.9041198,29.8183808 L42.1110981,30.2733467 C43.1114373,30.6972371 44.0473796,31.3160521 44.8614145,32.1300869 C48.2842088,35.5528813 48.2555691,41.130967 44.7974459,44.5890903 C41.4339531,47.952583 36.0649346,48.0717177 32.6241879,44.9262969 C27.8170558,45.8919233 23.0726921,46.2881596 18.9270186,45.959338 Z\"></path>\n\t        <path d=\"M45.4903462,38.8768094 C36.7300141,42.6833154 26.099618,44.7997354 18.1909048,43.9383587 C7.2512621,42.7468685 1.50150083,35.8404432 4.66865776,24.7010202 C7.51507386,14.6896965 15.4908218,6.92103848 24.3842626,4.38423012 C34.1310219,1.60401701 42.4070208,6.15882777 42.4070209,16.3101169 L34.5379395,16.310117 C34.5379394,11.9285862 31.728784,10.3825286 26.5666962,11.8549876 C20.2597508,13.6540114 14.3453742,19.4148216 12.2444303,26.8041943 C10.4963869,32.9523565 12.6250796,35.5092726 19.0530263,36.2093718 C25.5557042,36.9176104 35.0513021,34.9907189 42.7038419,31.5913902 L42.7421786,31.6756595 C44.3874154,31.5384763 47.8846101,37.3706354 45.9274416,38.6772897 L45.9302799,38.6835285 C45.9166992,38.6895612 45.9031139,38.6955897 45.8895238,38.7016142 C45.8389288,38.7327898 45.7849056,38.7611034 45.7273406,38.7863919 C45.6506459,38.8200841 45.571574,38.8501593 45.4903462,38.8768094 Z\"></path>\n        </g>\n        <rect x=\"96\" y=\"80\" width=\"16\" height=\"48\" rx=\"8\"></rect>\n        <rect x=\"80\" y=\"96\" width=\"48\" height=\"16\" rx=\"8\"></rect>\n    </g>\n    </g>\n</svg>"
        },
        "$:/core/images/new-image-button": {
            "title": "$:/core/images/new-image-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-new-image-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M81.3619177,73.6270062 L97.1875317,46.2162388 C97.91364,44.9585822 97.4824378,43.3533085 96.2260476,42.6279312 L46.2162388,13.7547547 C44.9585822,13.0286463 43.3533085,13.4598485 42.6279312,14.7162388 L30.0575956,36.4886988 L40.0978909,31.2276186 C43.1404959,29.6333041 46.8692155,31.3421319 47.6479264,34.6877101 L51.2545483,52.3903732 L61.1353556,53.2399953 C63.2899974,53.4346096 65.1046382,54.9309951 65.706105,57.0091178 C65.7395572,57.1246982 65.8069154,57.3539875 65.9047035,57.6813669 C66.0696435,58.2335608 66.2581528,58.852952 66.4667073,59.5238092 C67.0618822,61.4383079 67.6960725,63.3742727 68.3393254,65.2021174 C68.5462918,65.7902259 68.7511789,66.3583016 68.953259,66.9034738 C69.5777086,68.5881157 70.1617856,70.0172008 70.6783305,71.110045 C70.9334784,71.6498566 71.1627732,72.0871602 71.4035746,72.5373068 C71.6178999,72.7492946 71.9508843,72.9623307 72.4151452,73.1586945 C73.5561502,73.6412938 75.1990755,73.899146 77.0720271,73.9171651 C77.9355886,73.9254732 78.7819239,73.8832103 79.5638842,73.8072782 C80.0123946,73.7637257 80.3172916,73.7224469 80.4352582,73.7027375 C80.7503629,73.6500912 81.0598053,73.6256267 81.3619177,73.6270062 L81.3619177,73.6270062 L81.3619177,73.6270062 L81.3619177,73.6270062 Z M37.4707881,2.64867269 C38.9217993,0.135447653 42.1388058,-0.723707984 44.6486727,0.725364314 L108.293614,37.4707881 C110.806839,38.9217993 111.665994,42.1388058 110.216922,44.6486727 L73.4714982,108.293614 C72.0204871,110.806839 68.8034805,111.665994 66.2936136,110.216922 L2.64867269,73.4714982 C0.135447653,72.0204871 -0.723707984,68.8034805 0.725364314,66.2936136 L37.4707881,2.64867269 L37.4707881,2.64867269 L37.4707881,2.64867269 L37.4707881,2.64867269 Z M80.3080975,53.1397764 C82.8191338,54.5895239 86.0299834,53.7291793 87.4797308,51.218143 C88.9294783,48.7071068 88.0691338,45.4962571 85.5580975,44.0465097 C83.0470612,42.5967622 79.8362116,43.4571068 78.3864641,45.968143 C76.9367166,48.4791793 77.7970612,51.6900289 80.3080975,53.1397764 L80.3080975,53.1397764 L80.3080975,53.1397764 L80.3080975,53.1397764 Z M96,112 L88.0070969,112 C83.5881712,112 80,108.418278 80,104 C80,99.5907123 83.5848994,96 88.0070969,96 L96,96 L96,88.0070969 C96,83.5881712 99.581722,80 104,80 C108.409288,80 112,83.5848994 112,88.0070969 L112,96 L119.992903,96 C124.411829,96 128,99.581722 128,104 C128,108.409288 124.415101,112 119.992903,112 L112,112 L112,119.992903 C112,124.411829 108.418278,128 104,128 C99.5907123,128 96,124.415101 96,119.992903 L96,112 L96,112 Z M33.3471097,51.7910932 C40.7754579,59.7394511 42.3564368,62.4818351 40.7958321,65.1848818 C39.2352273,67.8879286 26.9581062,62.8571718 24.7019652,66.7649227 C22.4458242,70.6726735 23.7947046,70.0228006 22.2648667,72.6725575 L41.9944593,84.0634431 C41.9944593,84.0634431 36.3904568,75.8079231 37.7602356,73.4353966 C40.2754811,69.0788636 46.5298923,72.1787882 48.1248275,69.4162793 C50.538989,65.234829 43.0222016,59.7770885 33.3471097,51.7910932 L33.3471097,51.7910932 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/new-journal-button": {
            "title": "$:/core/images/new-journal-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-new-journal-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M102.545455,112.818182 L102.545455,124.636364 L102.545455,124.636364 L102.545455,124.636364 C102.545455,125.941761 103.630828,127 104.969697,127 L111.030303,127 C112.369172,127 113.454545,125.941761 113.454545,124.636364 L113.454545,112.818182 L125.575758,112.818182 C126.914626,112.818182 128,111.759982 128,110.454545 L128,104.545455 C128,103.240018 126.914626,102.181818 125.575758,102.181818 L113.454545,102.181818 L113.454545,90.3636364 C113.454545,89.0582 112.369172,88 111.030303,88 L104.969697,88 L104.969697,88 C103.630828,88 102.545455,89.0582 102.545455,90.3636364 L102.545455,102.181818 L90.4242424,102.181818 L90.4242424,102.181818 C89.0853705,102.181818 88,103.240018 88,104.545455 L88,110.454545 L88,110.454545 L88,110.454545 C88,111.759982 89.0853705,112.818182 90.4242424,112.818182 L102.545455,112.818182 Z\"></path>\n        <g transform=\"translate(59.816987, 64.316987) rotate(30.000000) translate(-59.816987, -64.316987) translate(20.316987, 12.816987)\">\n            <g transform=\"translate(0.000000, 0.000000)\">\n                <path d=\"M9.99631148,0 C4.4755011,0 -2.27373675e-13,4.48070044 -2.27373675e-13,9.99759461 L-2.27373675e-13,91.6128884 C-2.27373675e-13,97.1344074 4.46966773,101.610483 9.99631148,101.610483 L68.9318917,101.610483 C74.4527021,101.610483 78.9282032,97.1297826 78.9282032,91.6128884 L78.9282032,9.99759461 C78.9282032,4.47607557 74.4585355,0 68.9318917,0 L9.99631148,0 Z M20.8885263,26 C24.2022348,26 26.8885263,23.3137085 26.8885263,20 C26.8885263,16.6862915 24.2022348,14 20.8885263,14 C17.5748178,14 14.8885263,16.6862915 14.8885263,20 C14.8885263,23.3137085 17.5748178,26 20.8885263,26 Z M57.3033321,25.6783342 C60.6170406,25.6783342 63.3033321,22.9920427 63.3033321,19.6783342 C63.3033321,16.3646258 60.6170406,13.6783342 57.3033321,13.6783342 C53.9896236,13.6783342 51.3033321,16.3646258 51.3033321,19.6783342 C51.3033321,22.9920427 53.9896236,25.6783342 57.3033321,25.6783342 Z\"></path>\n                <text font-family=\"Helvetica\" font-size=\"47.1724138\" font-weight=\"bold\" fill=\"#FFFFFF\">\n                    <tspan x=\"42\" y=\"77.4847912\" text-anchor=\"middle\"><<now \"DD\">></tspan>\n                </text>\n            </g>\n        </g>\n    </g>\n</svg>"
        },
        "$:/core/images/opacity": {
            "title": "$:/core/images/opacity",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-opacity tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M102.361773,65 C101.833691,67.051742 101.183534,69.0544767 100.419508,71 L82.5835324,71 C83.7602504,69.1098924 84.7666304,67.1027366 85.581205,65 L102.361773,65 Z M102.834311,63 C103.256674,61.0388326 103.568427,59.0365486 103.762717,57 L87.6555706,57 C87.3692052,59.0609452 86.9083652,61.0660782 86.2884493,63 L102.834311,63 Z M99.5852583,73 C98.6682925,75.0747721 97.6196148,77.0783056 96.4498253,79 L75.8124196,79 C77.8387053,77.2115633 79.6621163,75.1985844 81.2437158,73 L99.5852583,73 Z M95.1689122,81 C93.7449202,83.1155572 92.1695234,85.1207336 90.458251,87 L60.4614747,87 C65.1836162,85.86248 69.5430327,83.794147 73.3347255,81 L95.1689122,81 Z M87.6555706,47 L103.762717,47 C101.246684,20.6269305 79.0321807,0 52,0 C23.281193,0 0,23.281193 0,52 C0,77.2277755 17.9651296,98.2595701 41.8000051,103 L62.1999949,103 C67.8794003,101.870444 73.2255333,99.8158975 78.074754,97 L39,97 L39,95 L81.2493857,95 C83.8589242,93.2215015 86.2981855,91.2116653 88.5376609,89 L39,89 L39,87 L43.5385253,87 C27.7389671,83.1940333 16,68.967908 16,52 C16,32.117749 32.117749,16 52,16 C70.1856127,16 85.2217929,29.4843233 87.6555706,47 Z M87.8767787,49 L103.914907,49 C103.971379,49.9928025 104,50.9930589 104,52 C104,53.0069411 103.971379,54.0071975 103.914907,55 L87.8767787,55 C87.958386,54.0107999 88,53.0102597 88,52 C88,50.9897403 87.958386,49.9892001 87.8767787,49 Z\"></path>\n        <path d=\"M76,128 C104.718807,128 128,104.718807 128,76 C128,47.281193 104.718807,24 76,24 C47.281193,24 24,47.281193 24,76 C24,104.718807 47.281193,128 76,128 L76,128 Z M76,112 C95.882251,112 112,95.882251 112,76 C112,56.117749 95.882251,40 76,40 C56.117749,40 40,56.117749 40,76 C40,95.882251 56.117749,112 76,112 L76,112 Z\"></path>\n        <path d=\"M37,58 L90,58 L90,62 L37,62 L37,58 L37,58 Z M40,50 L93,50 L93,54 L40,54 L40,50 L40,50 Z M40,42 L93,42 L93,46 L40,46 L40,42 L40,42 Z M32,66 L85,66 L85,70 L32,70 L32,66 L32,66 Z M30,74 L83,74 L83,78 L30,78 L30,74 L30,74 Z M27,82 L80,82 L80,86 L27,86 L27,82 L27,82 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/open-window": {
            "title": "$:/core/images/open-window",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-open-window tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M16,112 L104.993898,112 C108.863261,112 112,115.590712 112,120 C112,124.418278 108.858091,128 104.993898,128 L7.00610161,128 C3.13673853,128 0,124.409288 0,120 C0,119.998364 4.30952878e-07,119.996727 1.29273572e-06,119.995091 C4.89579306e-07,119.993456 0,119.99182 0,119.990183 L0,24.0098166 C0,19.586117 3.59071231,16 8,16 C12.418278,16 16,19.5838751 16,24.0098166 L16,112 Z\"></path>\n        <path d=\"M96,43.1959595 L96,56 C96,60.418278 99.581722,64 104,64 C108.418278,64 112,60.418278 112,56 L112,24 C112,19.5907123 108.415101,16 103.992903,16 L72.0070969,16 C67.5881712,16 64,19.581722 64,24 C64,28.4092877 67.5848994,32 72.0070969,32 L84.5685425,32 L48.2698369,68.2987056 C45.1421332,71.4264093 45.1434327,76.4904296 48.267627,79.614624 C51.3854642,82.7324612 56.4581306,82.7378289 59.5835454,79.6124141 L96,43.1959595 Z M32,7.9992458 C32,3.58138434 35.5881049,0 39.9992458,0 L120.000754,0 C124.418616,0 128,3.5881049 128,7.9992458 L128,88.0007542 C128,92.4186157 124.411895,96 120.000754,96 L39.9992458,96 C35.5813843,96 32,92.4118951 32,88.0007542 L32,7.9992458 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/options-button": {
            "title": "$:/core/images/options-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-options-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M110.48779,76.0002544 C109.354214,80.4045063 107.611262,84.5641217 105.354171,88.3838625 L105.354171,88.3838625 L112.07833,95.1080219 C115.20107,98.2307613 115.210098,103.299824 112.089164,106.420759 L106.420504,112.089418 C103.301049,115.208874 98.2346851,115.205502 95.1077675,112.078585 L88.3836082,105.354425 C84.5638673,107.611516 80.4042519,109.354468 76,110.488045 L76,110.488045 L76,119.993281 C76,124.409501 72.4220153,128.000254 68.0083475,128.000254 L59.9916525,128.000254 C55.5800761,128.000254 52,124.41541 52,119.993281 L52,110.488045 C47.5957481,109.354468 43.4361327,107.611516 39.6163918,105.354425 L32.8922325,112.078585 C29.7694931,115.201324 24.7004301,115.210353 21.5794957,112.089418 L15.9108363,106.420759 C12.7913807,103.301303 12.7947522,98.2349395 15.9216697,95.1080219 L22.6458291,88.3838625 C20.3887383,84.5641217 18.6457859,80.4045063 17.5122098,76.0002544 L8.00697327,76.0002544 C3.59075293,76.0002544 2.19088375e-16,72.4222697 4.89347582e-16,68.0086019 L9.80228577e-16,59.9919069 C1.25035972e-15,55.5803305 3.58484404,52.0002544 8.00697327,52.0002544 L17.5122098,52.0002544 C18.6457859,47.5960025 20.3887383,43.4363871 22.6458291,39.6166462 L15.9216697,32.8924868 C12.7989304,29.7697475 12.7899019,24.7006845 15.9108363,21.5797501 L21.5794957,15.9110907 C24.6989513,12.7916351 29.7653149,12.7950065 32.8922325,15.9219241 L39.6163918,22.6460835 C43.4361327,20.3889927 47.5957481,18.6460403 52,17.5124642 L52,8.00722764 C52,3.5910073 55.5779847,0.000254375069 59.9916525,0.000254375069 L68.0083475,0.000254375069 C72.4199239,0.000254375069 76,3.58509841 76,8.00722764 L76,17.5124642 C80.4042519,18.6460403 84.5638673,20.3889927 88.3836082,22.6460835 L95.1077675,15.9219241 C98.2305069,12.7991848 103.29957,12.7901562 106.420504,15.9110907 L112.089164,21.5797501 C115.208619,24.6992057 115.205248,29.7655693 112.07833,32.8924868 L105.354171,39.6166462 L105.354171,39.6166462 C107.611262,43.4363871 109.354214,47.5960025 110.48779,52.0002544 L119.993027,52.0002544 C124.409247,52.0002544 128,55.5782391 128,59.9919069 L128,68.0086019 C128,72.4201783 124.415156,76.0002544 119.993027,76.0002544 L110.48779,76.0002544 L110.48779,76.0002544 Z M64,96.0002544 C81.673112,96.0002544 96,81.6733664 96,64.0002544 C96,46.3271424 81.673112,32.0002544 64,32.0002544 C46.326888,32.0002544 32,46.3271424 32,64.0002544 C32,81.6733664 46.326888,96.0002544 64,96.0002544 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/paint": {
            "title": "$:/core/images/paint",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-paint tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M83.5265806,76.1907935 C90.430962,69.2864121 91.8921169,59.0000433 87.9100453,50.6642209 L125.812763,12.7615036 C128.732035,9.84223095 128.72611,5.10322984 125.812796,2.18991592 C122.893542,-0.729338085 118.161775,-0.730617045 115.241209,2.18994966 L77.3384914,40.092667 C69.002669,36.1105954 58.7163002,37.5717503 51.8119188,44.4761317 L83.5265806,76.1907935 L83.5265806,76.1907935 L83.5265806,76.1907935 L83.5265806,76.1907935 Z M80.8836921,78.8336819 L49.1690303,47.1190201 C49.1690303,47.1190201 8.50573364,81.242543 0,80.2820711 C0,80.2820711 3.78222974,85.8744423 6.82737483,88.320684 C20.8514801,82.630792 44.1526049,63.720771 44.1526049,63.720771 L44.8144806,64.3803375 C44.8144806,64.3803375 19.450356,90.2231043 9.18040433,92.0477601 C10.4017154,93.4877138 13.5343883,96.1014812 15.4269991,97.8235871 C20.8439164,96.3356979 50.1595367,69.253789 50.1595367,69.253789 L50.8214124,69.9133555 L18.4136144,100.936036 L23.6993903,106.221812 L56.1060358,75.2002881 L56.7679115,75.8598546 C56.7679115,75.8598546 28.9040131,106.396168 28.0841366,108.291555 C28.0841366,108.291555 34.1159238,115.144621 35.6529617,116.115796 C36.3545333,113.280171 63.5365402,82.6307925 63.5365402,82.6307925 L64.1984159,83.290359 C64.1984159,83.290359 43.6013016,107.04575 39.2343772,120.022559 C42.443736,123.571575 46.7339155,125.159692 50.1595362,126.321151 C47.9699978,114.504469 80.8836921,78.8336819 80.8836921,78.8336819 L80.8836921,78.8336819 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/palette": {
            "title": "$:/core/images/palette",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-palette tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M80.2470434,39.1821571 C75.0645698,38.2680897 69.6261555,37.7814854 64.0193999,37.7814854 C28.6624616,37.7814854 0,57.1324214 0,81.0030106 C0,90.644534 4.67604329,99.5487133 12.5805659,106.738252 C23.5031767,91.1899067 26.3405471,72.3946229 36.8885698,63.5622337 C52.0716764,50.8486559 63.4268694,55.7343343 63.4268694,55.7343343 L80.2470434,39.1821571 Z M106.781666,48.8370714 C119.830962,56.749628 128.0388,68.229191 128.0388,81.0030106 C128.0388,90.3534932 128.557501,98.4142085 116.165191,106.082518 C105.367708,112.763955 112.341384,99.546808 104.321443,95.1851533 C96.3015017,90.8234987 84.3749007,96.492742 86.1084305,103.091059 C89.3087234,115.272303 105.529892,114.54645 92.4224435,119.748569 C79.3149955,124.950687 74.2201582,124.224536 64.0193999,124.224536 C56.1979176,124.224536 48.7040365,123.277578 41.7755684,121.544216 C51.620343,117.347916 69.6563669,109.006202 75.129737,102.088562 C82.7876655,92.4099199 87.3713218,80.0000002 83.3235694,72.4837191 C83.1303943,72.1250117 94.5392656,60.81569 106.781666,48.8370714 Z M1.13430476,123.866563 C0.914084026,123.867944 0.693884185,123.868637 0.473712455,123.868637 C33.9526848,108.928928 22.6351223,59.642592 59.2924543,59.6425917 C59.6085574,61.0606542 59.9358353,62.5865065 60.3541977,64.1372318 C34.4465025,59.9707319 36.7873124,112.168427 1.13429588,123.866563 L1.13430476,123.866563 Z M1.84669213,123.859694 C40.7185279,123.354338 79.9985412,101.513051 79.9985401,79.0466836 C70.7284906,79.0466835 65.9257264,75.5670082 63.1833375,71.1051511 C46.585768,64.1019718 32.81846,116.819636 1.84665952,123.859695 L1.84669213,123.859694 Z M67.1980193,59.8524981 C62.748213,63.9666823 72.0838429,76.2846822 78.5155805,71.1700593 C89.8331416,59.8524993 112.468264,37.2173758 123.785825,25.8998146 C135.103386,14.5822535 123.785825,3.26469247 112.468264,14.5822535 C101.150703,25.8998144 78.9500931,48.9868127 67.1980193,59.8524981 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/permalink-button": {
            "title": "$:/core/images/permalink-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-permalink-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M80.4834582,48 L73.0956761,80 L73.0956761,80 L47.5165418,80 L54.9043239,48 L80.4834582,48 Z M84.1773493,32 L89.8007299,7.64246248 C90.7941633,3.33942958 95.0918297,0.64641956 99.3968675,1.64031585 C103.693145,2.63218977 106.385414,6.93288901 105.390651,11.2416793 L100.598215,32 L104.000754,32 C108.411895,32 112,35.581722 112,40 C112,44.4092877 108.418616,48 104.000754,48 L96.9043239,48 L89.5165418,80 L104.000754,80 C108.411895,80 112,83.581722 112,88 C112,92.4092877 108.418616,96 104.000754,96 L85.8226507,96 L80.1992701,120.357538 C79.2058367,124.66057 74.9081703,127.35358 70.6031325,126.359684 C66.3068546,125.36781 63.6145865,121.067111 64.6093491,116.758321 L69.401785,96 L43.8226507,96 L38.1992701,120.357538 C37.2058367,124.66057 32.9081703,127.35358 28.6031325,126.359684 C24.3068546,125.36781 21.6145865,121.067111 22.6093491,116.758321 L27.401785,96 L23.9992458,96 C19.5881049,96 16,92.418278 16,88 C16,83.5907123 19.5813843,80 23.9992458,80 L31.0956761,80 L38.4834582,48 L23.9992458,48 C19.5881049,48 16,44.418278 16,40 C16,35.5907123 19.5813843,32 23.9992458,32 L42.1773493,32 L47.8007299,7.64246248 C48.7941633,3.33942958 53.0918297,0.64641956 57.3968675,1.64031585 C61.6931454,2.63218977 64.3854135,6.93288901 63.3906509,11.2416793 L58.598215,32 L84.1773493,32 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/permaview-button": {
            "title": "$:/core/images/permaview-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-permaview-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M81.4834582,48 L79.6365127,56 L79.6365127,56 L74.0573784,56 L75.9043239,48 L81.4834582,48 Z M85.1773493,32 L90.8007299,7.64246248 C91.7941633,3.33942958 96.0918297,0.64641956 100.396867,1.64031585 C104.693145,2.63218977 107.385414,6.93288901 106.390651,11.2416793 L101.598215,32 L104.000754,32 C108.411895,32 112,35.581722 112,40 C112,44.4092877 108.418616,48 104.000754,48 L97.9043239,48 L96.0573784,56 L104.000754,56 C108.411895,56 112,59.581722 112,64 C112,68.4092877 108.418616,72 104.000754,72 L92.3634873,72 L90.5165418,80 L104.000754,80 C108.411895,80 112,83.581722 112,88 C112,92.4092877 108.418616,96 104.000754,96 L86.8226507,96 L81.1992701,120.357538 C80.2058367,124.66057 75.9081703,127.35358 71.6031325,126.359684 C67.3068546,125.36781 64.6145865,121.067111 65.6093491,116.758321 L70.401785,96 L64.8226507,96 L59.1992701,120.357538 C58.2058367,124.66057 53.9081703,127.35358 49.6031325,126.359684 C45.3068546,125.36781 42.6145865,121.067111 43.6093491,116.758321 L48.401785,96 L42.8226507,96 L37.1992701,120.357538 C36.2058367,124.66057 31.9081703,127.35358 27.6031325,126.359684 C23.3068546,125.36781 20.6145865,121.067111 21.6093491,116.758321 L26.401785,96 L23.9992458,96 C19.5881049,96 16,92.418278 16,88 C16,83.5907123 19.5813843,80 23.9992458,80 L30.0956761,80 L31.9426216,72 L23.9992458,72 C19.5881049,72 16,68.418278 16,64 C16,59.5907123 19.5813843,56 23.9992458,56 L35.6365127,56 L37.4834582,48 L23.9992458,48 C19.5881049,48 16,44.418278 16,40 C16,35.5907123 19.5813843,32 23.9992458,32 L41.1773493,32 L46.8007299,7.64246248 C47.7941633,3.33942958 52.0918297,0.64641956 56.3968675,1.64031585 C60.6931454,2.63218977 63.3854135,6.93288901 62.3906509,11.2416793 L57.598215,32 L63.1773493,32 L68.8007299,7.64246248 C69.7941633,3.33942958 74.0918297,0.64641956 78.3968675,1.64031585 C82.6931454,2.63218977 85.3854135,6.93288901 84.3906509,11.2416793 L79.598215,32 L85.1773493,32 Z M53.9043239,48 L52.0573784,56 L57.6365127,56 L59.4834582,48 L53.9043239,48 Z M75.9426216,72 L74.0956761,80 L74.0956761,80 L68.5165418,80 L70.3634873,72 L75.9426216,72 L75.9426216,72 Z M48.3634873,72 L46.5165418,80 L52.0956761,80 L53.9426216,72 L48.3634873,72 L48.3634873,72 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/picture": {
            "title": "$:/core/images/picture",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-picture tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M112,68.2332211 L112,20.0027785 C112,17.7898769 110.207895,16 107.997221,16 L20.0027785,16 C17.7898769,16 16,17.792105 16,20.0027785 L16,58.312373 L25.2413115,43.7197989 C28.041793,39.297674 34.2643908,38.7118128 37.8410347,42.5335275 L56.0882845,63.1470817 L69.7748997,56.7400579 C72.766567,55.3552503 76.3013751,55.9473836 78.678437,58.2315339 C78.8106437,58.3585731 79.0742301,58.609836 79.4527088,58.9673596 C80.0910923,59.570398 80.8117772,60.2441563 81.598127,60.9705595 C83.8422198,63.043576 86.1541548,65.1151944 88.3956721,67.0372264 C89.1168795,67.6556396 89.8200801,68.2492007 90.5021258,68.8146755 C92.6097224,70.5620551 94.4693308,72.0029474 95.9836366,73.0515697 C96.7316295,73.5695379 97.3674038,73.9719282 98.0281481,74.3824999 C98.4724987,74.4989557 99.0742374,74.5263881 99.8365134,74.4317984 C101.709944,74.1993272 104.074502,73.2878514 106.559886,71.8846196 C107.705822,71.2376318 108.790494,70.5370325 109.764561,69.8410487 C110.323259,69.4418522 110.694168,69.1550757 110.834827,69.0391868 C111.210545,68.7296319 111.600264,68.4615815 112,68.2332211 L112,68.2332211 Z M0,8.00697327 C0,3.58484404 3.59075293,0 8.00697327,0 L119.993027,0 C124.415156,0 128,3.59075293 128,8.00697327 L128,119.993027 C128,124.415156 124.409247,128 119.993027,128 L8.00697327,128 C3.58484404,128 0,124.409247 0,119.993027 L0,8.00697327 L0,8.00697327 Z M95,42 C99.418278,42 103,38.418278 103,34 C103,29.581722 99.418278,26 95,26 C90.581722,26 87,29.581722 87,34 C87,38.418278 90.581722,42 95,42 L95,42 Z M32,76 C47.8587691,80.8294182 52.0345556,83.2438712 52.0345556,88 C52.0345556,92.7561288 32,95.4712486 32,102.347107 C32,109.222965 33.2849191,107.337637 33.2849191,112 L67.999999,112 C67.999999,112 54.3147136,105.375255 54.3147136,101.200691 C54.3147136,93.535181 64.9302432,92.860755 64.9302432,88 C64.9302432,80.6425555 50.8523779,79.167282 32,76 L32,76 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/plugin-generic-language": {
            "title": "$:/core/images/plugin-generic-language",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M61.2072232,68.1369825 C56.8829239,70.9319564 54.2082892,74.793177 54.2082892,79.0581634 C54.2082892,86.9638335 63.3980995,93.4821994 75.2498076,94.3940006 C77.412197,98.2964184 83.8475284,101.178858 91.5684735,101.403106 C86.4420125,100.27851 82.4506393,97.6624107 80.9477167,94.3948272 C92.8046245,93.4861461 102,86.9662269 102,79.0581634 C102,70.5281905 91.3014611,63.6132813 78.1041446,63.6132813 C71.5054863,63.6132813 65.5315225,65.3420086 61.2072232,68.1369825 Z M74.001066,53.9793443 C69.6767667,56.7743182 63.7028029,58.5030456 57.1041446,58.5030456 C54.4851745,58.5030456 51.9646095,58.2307276 49.6065315,57.7275105 C46.2945155,59.9778212 41.2235699,61.4171743 35.5395922,61.4171743 C35.4545771,61.4171743 35.3696991,61.4168523 35.2849622,61.4162104 C39.404008,60.5235193 42.7961717,58.6691298 44.7630507,56.286533 C37.8379411,53.5817651 33.2082892,48.669413 33.2082892,43.0581634 C33.2082892,34.5281905 43.9068281,27.6132812 57.1041446,27.6132812 C70.3014611,27.6132812 81,34.5281905 81,43.0581634 C81,47.3231498 78.3253653,51.1843704 74.001066,53.9793443 Z M64,0 L118.5596,32 L118.5596,96 L64,128 L9.44039956,96 L9.44039956,32 L64,0 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/plugin-generic-plugin": {
            "title": "$:/core/images/plugin-generic-plugin",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M40.3972881,76.4456988 L40.3972881,95.3404069 L54.5170166,95.3404069 L54.5170166,95.3404069 C54.5165526,95.3385183 54.516089,95.3366295 54.515626,95.3347404 C54.6093153,95.3385061 54.7034848,95.3404069 54.7980982,95.3404069 C58.6157051,95.3404069 61.710487,92.245625 61.710487,88.4280181 C61.710487,86.6197822 61.01617,84.9737128 59.8795929,83.7418666 L59.8795929,83.7418666 C59.8949905,83.7341665 59.9104102,83.7265043 59.925852,83.7188798 C58.8840576,82.5086663 58.2542926,80.9336277 58.2542926,79.2114996 C58.2542926,75.3938927 61.3490745,72.2991108 65.1666814,72.2991108 C68.9842884,72.2991108 72.0790703,75.3938927 72.0790703,79.2114996 C72.0790703,81.1954221 71.2432806,82.9841354 69.9045961,84.2447446 L69.9045961,84.2447446 C69.9333407,84.2629251 69.9619885,84.281245 69.9905383,84.2997032 L69.9905383,84.2997032 C69.1314315,85.4516923 68.6228758,86.8804654 68.6228758,88.4280181 C68.6228758,91.8584969 71.1218232,94.7053153 74.3986526,95.2474079 C74.3913315,95.2784624 74.3838688,95.3094624 74.3762652,95.3404069 L95.6963988,95.3404069 L95.6963988,75.5678578 L95.6963988,75.5678578 C95.6466539,75.5808558 95.5967614,75.5934886 95.5467242,75.6057531 C95.5504899,75.5120637 95.5523907,75.4178943 95.5523907,75.3232809 C95.5523907,71.505674 92.4576088,68.4108921 88.6400019,68.4108921 C86.831766,68.4108921 85.1856966,69.105209 83.9538504,70.2417862 L83.9538504,70.2417862 C83.9461503,70.2263886 83.938488,70.2109688 83.9308636,70.1955271 C82.7206501,71.2373215 81.1456115,71.8670865 79.4234834,71.8670865 C75.6058765,71.8670865 72.5110946,68.7723046 72.5110946,64.9546976 C72.5110946,61.1370907 75.6058765,58.0423088 79.4234834,58.0423088 C81.4074059,58.0423088 83.1961192,58.8780985 84.4567284,60.2167829 L84.4567284,60.2167829 C84.4749089,60.1880383 84.4932288,60.1593906 84.511687,60.1308407 L84.511687,60.1308407 C85.6636761,60.9899475 87.0924492,61.4985032 88.6400019,61.4985032 C92.0704807,61.4985032 94.9172991,58.9995558 95.4593917,55.7227265 C95.538755,55.7414363 95.6177614,55.761071 95.6963988,55.7816184 L95.6963988,40.0412962 L74.3762652,40.0412962 L74.3762652,40.0412962 C74.3838688,40.0103516 74.3913315,39.9793517 74.3986526,39.9482971 L74.3986526,39.9482971 C71.1218232,39.4062046 68.6228758,36.5593862 68.6228758,33.1289073 C68.6228758,31.5813547 69.1314315,30.1525815 69.9905383,29.0005925 C69.9619885,28.9821342 69.9333407,28.9638143 69.9045961,28.9456339 C71.2432806,27.6850247 72.0790703,25.8963113 72.0790703,23.9123888 C72.0790703,20.0947819 68.9842884,17 65.1666814,17 C61.3490745,17 58.2542926,20.0947819 58.2542926,23.9123888 C58.2542926,25.6345169 58.8840576,27.2095556 59.925852,28.419769 L59.925852,28.419769 C59.9104102,28.4273935 59.8949905,28.4350558 59.8795929,28.4427558 C61.01617,29.674602 61.710487,31.3206715 61.710487,33.1289073 C61.710487,36.9465143 58.6157051,40.0412962 54.7980982,40.0412962 C54.7034848,40.0412962 54.6093153,40.0393953 54.515626,40.0356296 L54.515626,40.0356296 C54.516089,40.0375187 54.5165526,40.0394075 54.5170166,40.0412962 L40.3972881,40.0412962 L40.3972881,52.887664 L40.3972881,52.887664 C40.4916889,53.3430132 40.5412962,53.8147625 40.5412962,54.2980982 C40.5412962,58.1157051 37.4465143,61.210487 33.6289073,61.210487 C32.0813547,61.210487 30.6525815,60.7019313 29.5005925,59.8428245 C29.4821342,59.8713744 29.4638143,59.9000221 29.4456339,59.9287667 C28.1850247,58.5900823 26.3963113,57.7542926 24.4123888,57.7542926 C20.5947819,57.7542926 17.5,60.8490745 17.5,64.6666814 C17.5,68.4842884 20.5947819,71.5790703 24.4123888,71.5790703 C26.134517,71.5790703 27.7095556,70.9493053 28.919769,69.9075109 L28.919769,69.9075109 C28.9273935,69.9229526 28.9350558,69.9383724 28.9427558,69.95377 C30.174602,68.8171928 31.8206715,68.1228758 33.6289073,68.1228758 C37.4465143,68.1228758 40.5412962,71.2176578 40.5412962,75.0352647 C40.5412962,75.5186004 40.4916889,75.9903496 40.3972881,76.4456988 Z M64,0 L118.5596,32 L118.5596,96 L64,128 L9.44039956,96 L9.44039956,32 L64,0 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/plugin-generic-theme": {
            "title": "$:/core/images/plugin-generic-theme",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M29.4078519,91.4716406 L51.4693474,69.4101451 L51.4646675,69.4054652 C50.5969502,68.5377479 50.5929779,67.1348725 51.4693474,66.2585029 C52.3396494,65.3882009 53.7499654,65.3874786 54.6163097,66.2538229 L64.0805963,75.7181095 C64.9483136,76.5858268 64.9522859,77.9887022 64.0759163,78.8650718 C63.2056143,79.7353737 61.7952984,79.736096 60.9289541,78.8697517 L60.9242741,78.8650718 L60.9242741,78.8650718 L38.8627786,100.926567 C36.2518727,103.537473 32.0187578,103.537473 29.4078519,100.926567 C26.796946,98.3156614 26.796946,94.0825465 29.4078519,91.4716406 Z M60.8017407,66.3810363 C58.3659178,63.6765806 56.3370667,61.2899536 54.9851735,59.5123615 C48.1295381,50.4979488 44.671561,55.2444054 40.7586738,59.5123614 C36.8457866,63.7803174 41.789473,67.2384487 38.0759896,70.2532832 C34.3625062,73.2681177 34.5917646,74.3131575 28.3243876,68.7977024 C22.0570105,63.2822473 21.6235306,61.7636888 24.5005999,58.6166112 C27.3776691,55.4695337 29.7823103,60.4247912 35.6595047,54.8320442 C41.5366991,49.2392972 36.5996215,44.2825646 36.5996215,44.2825646 C36.5996215,44.2825646 48.8365511,19.267683 65.1880231,21.1152173 C81.5394952,22.9627517 59.0022276,18.7228947 53.3962199,38.3410355 C50.9960082,46.7405407 53.8429162,44.7613399 58.3941742,48.3090467 C59.7875202,49.3951602 64.4244828,52.7100463 70.1884353,56.9943417 L90.8648751,36.3179019 L92.4795866,31.5515482 L100.319802,26.8629752 L103.471444,30.0146174 L98.782871,37.8548326 L94.0165173,39.4695441 L73.7934912,59.6925702 C86.4558549,69.2403631 102.104532,81.8392557 102.104532,86.4016913 C102.104533,93.6189834 99.0337832,97.9277545 92.5695848,95.5655717 C87.8765989,93.8506351 73.8015497,80.3744087 63.8173444,69.668717 L60.9242741,72.5617873 L57.7726319,69.4101451 L60.8017407,66.3810363 L60.8017407,66.3810363 Z M63.9533761,1.42108547e-13 L118.512977,32 L118.512977,96 L63.9533761,128 L9.39377563,96 L9.39377563,32 L63.9533761,1.42108547e-13 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/preview-closed": {
            "title": "$:/core/images/preview-closed",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-preview-closed tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M0.0881363238,64 C-0.210292223,65.8846266 0.249135869,67.8634737 1.4664206,69.4579969 C16.2465319,88.8184886 39.1692554,100.414336 64,100.414336 C88.8307446,100.414336 111.753468,88.8184886 126.533579,69.4579969 C127.750864,67.8634737 128.210292,65.8846266 127.911864,64 C110.582357,78.4158332 88.3036732,87.0858436 64,87.0858436 C39.6963268,87.0858436 17.4176431,78.4158332 0.0881363238,64 Z\"></path>\n        <rect x=\"62\" y=\"96\" width=\"4\" height=\"16\" rx=\"4\"></rect>\n        <rect transform=\"translate(80.000000, 101.000000) rotate(-5.000000) translate(-80.000000, -101.000000) \" x=\"78\" y=\"93\" width=\"4\" height=\"16\" rx=\"4\"></rect>\n        <rect transform=\"translate(48.000000, 101.000000) rotate(-355.000000) translate(-48.000000, -101.000000) \" x=\"46\" y=\"93\" width=\"4\" height=\"16\" rx=\"4\"></rect>\n        <rect transform=\"translate(32.000000, 96.000000) rotate(-350.000000) translate(-32.000000, -96.000000) \" x=\"30\" y=\"88\" width=\"4\" height=\"16\" rx=\"4\"></rect>\n        <rect transform=\"translate(96.000000, 96.000000) rotate(-10.000000) translate(-96.000000, -96.000000) \" x=\"94\" y=\"88\" width=\"4\" height=\"16\" rx=\"4\"></rect>\n        <rect transform=\"translate(112.000000, 88.000000) rotate(-20.000000) translate(-112.000000, -88.000000) \" x=\"110\" y=\"80\" width=\"4\" height=\"16\" rx=\"4\"></rect>\n        <rect transform=\"translate(16.000000, 88.000000) rotate(-340.000000) translate(-16.000000, -88.000000) \" x=\"14\" y=\"80\" width=\"4\" height=\"16\" rx=\"4\"></rect>\n    </g>\n</svg>"
        },
        "$:/core/images/preview-open": {
            "title": "$:/core/images/preview-open",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-preview-open tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M64.1099282,99.5876785 C39.2791836,99.5876785 16.3564602,87.9918313 1.57634884,68.6313396 C-0.378878622,66.070184 -0.378878622,62.5174945 1.57634884,59.9563389 C16.3564602,40.5958472 39.2791836,29 64.1099282,29 C88.9406729,29 111.863396,40.5958472 126.643508,59.9563389 C128.598735,62.5174945 128.598735,66.070184 126.643508,68.6313396 C111.863396,87.9918313 88.9406729,99.5876785 64.1099282,99.5876785 Z M110.213805,67.5808331 C111.654168,66.0569335 111.654168,63.9430665 110.213805,62.4191669 C99.3257042,50.8995835 82.4391647,44 64.1470385,44 C45.8549124,44 28.9683729,50.8995835 18.0802717,62.4191669 C16.6399094,63.9430665 16.6399094,66.0569335 18.0802717,67.5808331 C28.9683729,79.1004165 45.8549124,86 64.1470385,86 C82.4391647,86 99.3257042,79.1004165 110.213805,67.5808331 Z\"></path>\n        <path d=\"M63.5,88 C76.4786916,88 87,77.4786916 87,64.5 C87,51.5213084 76.4786916,41 63.5,41 C50.5213084,41 40,51.5213084 40,64.5 C40,77.4786916 50.5213084,88 63.5,88 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/print-button": {
            "title": "$:/core/images/print-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-print-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M112,71 L112,30.5 L111.96811,30.5 L111.96811,30.5 C111.932942,28.4998414 111.151676,26.510538 109.625176,24.9840387 L86.9982489,2.35711116 C85.3482153,0.707077645 83.1589869,-0.071534047 81,0.0201838424 L81,0 L23.9992458,0 C19.5808867,0 16,3.58213437 16,8.00092105 L16,71 L24,71 L24,8 L81,8 L81,22.4996539 C81,26.9216269 84.5818769,30.5 89.0003461,30.5 L104,30.5 L104,71 L112,71 Z\"></path>\n        <rect x=\"32\" y=\"36\" width=\"64\" height=\"8\" rx=\"4\"></rect>\n        <rect x=\"32\" y=\"52\" width=\"64\" height=\"8\" rx=\"4\"></rect>\n        <rect x=\"32\" y=\"20\" width=\"40\" height=\"8\" rx=\"4\"></rect>\n        <path d=\"M0,80.0054195 C0,71.1658704 7.15611005,64 16.0008841,64 L111.999116,64 C120.83616,64 128,71.1553215 128,80.0054195 L128,111.99458 C128,120.83413 120.84389,128 111.999116,128 L16.0008841,128 C7.16383982,128 0,120.844679 0,111.99458 L0,80.0054195 Z M104,96 C108.418278,96 112,92.418278 112,88 C112,83.581722 108.418278,80 104,80 C99.581722,80 96,83.581722 96,88 C96,92.418278 99.581722,96 104,96 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/quote": {
            "title": "$:/core/images/quote",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-quote tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M51.2188077,117.712501 L51.2188077,62.1993386 L27.4274524,62.1993386 C27.4274524,53.3075754 29.1096526,45.797753 32.4741035,39.669646 C35.8385544,33.541539 42.0867267,28.9154883 51.2188077,25.7913554 L51.2188077,2 C43.7689521,2.96127169 36.8599155,5.18417913 30.4914905,8.668789 C24.1230656,12.1533989 18.6559149,16.5391352 14.0898743,21.8261295 C9.52383382,27.1131238 5.97919764,33.2411389 3.45585945,40.2103586 C0.932521268,47.1795784 -0.208971741,54.6293222 0.0313461819,62.5598136 L0.0313461819,117.712501 L51.2188077,117.712501 Z M128,117.712501 L128,62.1993386 L104.208645,62.1993386 C104.208645,53.3075754 105.890845,45.797753 109.255296,39.669646 C112.619747,33.541539 118.867919,28.9154883 128,25.7913554 L128,2 C120.550144,2.96127169 113.641108,5.18417913 107.272683,8.668789 C100.904258,12.1533989 95.4371072,16.5391352 90.8710666,21.8261295 C86.3050261,27.1131238 82.7603899,33.2411389 80.2370517,40.2103586 C77.7137136,47.1795784 76.5722206,54.6293222 76.8125385,62.5598136 L76.8125385,117.712501 L128,117.712501 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/refresh-button": {
            "title": "$:/core/images/refresh-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-refresh-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M106.369002,39.4325143 C116.529932,60.3119371 112.939592,86.1974934 95.5979797,103.539105 C73.7286194,125.408466 38.2713806,125.408466 16.4020203,103.539105 C-5.46734008,81.6697449 -5.46734008,46.2125061 16.4020203,24.3431458 C19.5262146,21.2189514 24.5915344,21.2189514 27.7157288,24.3431458 C30.8399231,27.4673401 30.8399231,32.5326599 27.7157288,35.6568542 C12.0947571,51.2778259 12.0947571,76.6044251 27.7157288,92.2253967 C43.3367004,107.846368 68.6632996,107.846368 84.2842712,92.2253967 C97.71993,78.7897379 99.5995262,58.1740623 89.9230597,42.729491 L83.4844861,54.9932839 C81.4307001,58.9052072 76.5945372,60.4115251 72.682614,58.3577391 C68.7706907,56.3039532 67.2643728,51.4677903 69.3181587,47.555867 L84.4354914,18.7613158 C86.4966389,14.8353707 91.3577499,13.3347805 95.273202,15.415792 L124.145886,30.7612457 C128.047354,32.8348248 129.52915,37.6785572 127.455571,41.5800249 C125.381992,45.4814927 120.53826,46.9632892 116.636792,44.8897102 L106.369002,39.4325143 Z M98.1470904,27.0648707 C97.9798954,26.8741582 97.811187,26.6843098 97.6409651,26.4953413 L98.6018187,26.1987327 L98.1470904,27.0648707 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/right-arrow": {
            "title": "$:/core/images/right-arrow",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-right-arrow tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <path d=\"M80.3563798,109.353315 C78.9238993,110.786918 76.9450203,111.675144 74.7592239,111.675144 L-4.40893546,111.675144 C-8.77412698,111.675144 -12.3248558,108.130732 -12.3248558,103.758478 C-12.3248558,99.3951199 -8.78077754,95.8418109 -4.40893546,95.8418109 L66.8418109,95.8418109 L66.8418109,24.5910645 C66.8418109,20.225873 70.3862233,16.6751442 74.7584775,16.6751442 C79.1218352,16.6751442 82.6751442,20.2192225 82.6751442,24.5910645 L82.6751442,103.759224 C82.6751442,105.941695 81.7891419,107.920575 80.3566508,109.353886 Z\" transform=\"translate(35.175144, 64.175144) rotate(-45.000000) translate(-35.175144, -64.175144) \"></path>\n</svg>"
        },
        "$:/core/images/save-button": {
            "title": "$:/core/images/save-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-save-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M120.78304,34.329058 C125.424287,43.1924006 128.049406,53.2778608 128.049406,63.9764502 C128.049406,99.3226742 99.3956295,127.97645 64.0494055,127.97645 C28.7031816,127.97645 0.0494055385,99.3226742 0.0494055385,63.9764502 C0.0494055385,28.6302262 28.7031816,-0.0235498012 64.0494055,-0.0235498012 C82.8568763,-0.0235498012 99.769563,8.08898558 111.479045,21.0056358 L114.159581,18.3250998 C117.289194,15.1954866 122.356036,15.1939641 125.480231,18.3181584 C128.598068,21.4359957 128.601317,26.5107804 125.473289,29.6388083 L120.78304,34.329058 Z M108.72451,46.3875877 C110.870571,51.8341374 112.049406,57.767628 112.049406,63.9764502 C112.049406,90.4861182 90.5590735,111.97645 64.0494055,111.97645 C37.5397375,111.97645 16.0494055,90.4861182 16.0494055,63.9764502 C16.0494055,37.4667822 37.5397375,15.9764502 64.0494055,15.9764502 C78.438886,15.9764502 91.3495036,22.308215 100.147097,32.3375836 L58.9411255,73.5435552 L41.975581,56.5780107 C38.8486152,53.4510448 33.7746915,53.4551552 30.6568542,56.5729924 C27.5326599,59.6971868 27.5372202,64.7670668 30.6618725,67.8917192 L53.279253,90.5090997 C54.8435723,92.073419 56.8951519,92.8541315 58.9380216,92.8558261 C60.987971,92.8559239 63.0389578,92.0731398 64.6049211,90.5071765 L108.72451,46.3875877 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/size": {
            "title": "$:/core/images/size",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-size tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <path d=\"M92.3431458,26 L83.1715729,35.1715729 C81.6094757,36.73367 81.6094757,39.26633 83.1715729,40.8284271 C84.73367,42.3905243 87.26633,42.3905243 88.8284271,40.8284271 L104.828427,24.8284271 C106.390524,23.26633 106.390524,20.73367 104.828427,19.1715729 L88.8284271,3.17157288 C87.26633,1.60947571 84.73367,1.60947571 83.1715729,3.17157288 C81.6094757,4.73367004 81.6094757,7.26632996 83.1715729,8.82842712 L92.3431457,18 L22,18 C19.790861,18 18,19.790861 18,22 L18,92.3431458 L8.82842712,83.1715729 C7.26632996,81.6094757 4.73367004,81.6094757 3.17157288,83.1715729 C1.60947571,84.73367 1.60947571,87.26633 3.17157288,88.8284271 L19.1715729,104.828427 C20.73367,106.390524 23.26633,106.390524 24.8284271,104.828427 L40.8284271,88.8284271 C42.3905243,87.26633 42.3905243,84.73367 40.8284271,83.1715729 C39.26633,81.6094757 36.73367,81.6094757 35.1715729,83.1715729 L26,92.3431458 L26,22 L22,26 L92.3431458,26 L92.3431458,26 Z M112,52 L112,116 L116,112 L52,112 C49.790861,112 48,113.790861 48,116 C48,118.209139 49.790861,120 52,120 L116,120 C118.209139,120 120,118.209139 120,116 L120,52 C120,49.790861 118.209139,48 116,48 C113.790861,48 112,49.790861 112,52 L112,52 Z\"></path>\n</svg>"
        },
        "$:/core/images/spiral": {
            "title": "$:/core/images/spiral",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-spiral tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"nonzero\">\n        <path d=\"M64.534 68.348c3.39 0 6.097-2.62 6.476-5.968l-4.755-.538 4.75.583c.377-3.07-1.194-6.054-3.89-7.78-2.757-1.773-6.34-2.01-9.566-.7-3.46 1.403-6.14 4.392-7.35 8.148l-.01.026c-1.3 4.08-.72 8.64 1.58 12.52 2.5 4.2 6.77 7.2 11.76 8.27 5.37 1.15 11.11-.05 15.83-3.31 5.04-3.51 8.46-9.02 9.45-15.3 1.05-6.7-.72-13.63-4.92-19.19l.02.02c-4.42-5.93-11.2-9.82-18.78-10.78-7.96-1.01-16.13 1.31-22.59 6.43-6.81 5.39-11.18 13.41-12.11 22.26-.98 9.27 1.87 18.65 7.93 26.02 6.32 7.69 15.6 12.56 25.74 13.48 10.54.96 21.15-2.42 29.45-9.4l.01-.01c8.58-7.25 13.94-17.78 14.86-29.21.94-11.84-2.96-23.69-10.86-32.9-8.19-9.5-19.95-15.36-32.69-16.27-13.16-.94-26.24 3.49-36.34 12.34l.01-.01c-10.41 9.08-16.78 22.1-17.68 36.15-.93 14.44 4.03 28.77 13.79 39.78 10.03 11.32 24.28 18.2 39.6 19.09 15.73.92 31.31-4.56 43.24-15.234 12.23-10.954 19.61-26.44 20.5-43.074.14-2.64-1.89-4.89-4.52-5.03-2.64-.14-4.89 1.88-5.03 4.52-.75 14.1-7 27.2-17.33 36.45-10.03 8.98-23.11 13.58-36.3 12.81-12.79-.75-24.67-6.48-33-15.89-8.07-9.11-12.17-20.94-11.41-32.827.74-11.52 5.942-22.15 14.43-29.54l.01-.01c8.18-7.17 18.74-10.75 29.35-9.998 10.21.726 19.6 5.41 26.11 12.96 6.24 7.273 9.32 16.61 8.573 25.894-.718 8.9-4.88 17.064-11.504 22.66l.01-.007c-6.36 5.342-14.44 7.92-22.425 7.19-7.604-.68-14.52-4.314-19.21-10.027-4.44-5.4-6.517-12.23-5.806-18.94.67-6.3 3.76-11.977 8.54-15.766 4.46-3.54 10.05-5.128 15.44-4.44 5.03.63 9.46 3.18 12.32 7.01l.02.024c2.65 3.5 3.75 7.814 3.1 11.92-.59 3.71-2.58 6.925-5.45 8.924-2.56 1.767-5.61 2.403-8.38 1.81-2.42-.516-4.42-1.92-5.53-3.79-.93-1.56-1.15-3.3-.69-4.75l-4.56-1.446L59.325 65c.36-1.12 1.068-1.905 1.84-2.22.25-.103.48-.14.668-.13.06.006.11.015.14.025.01 0 .01 0-.01-.01-.02-.015-.054-.045-.094-.088-.06-.064-.12-.145-.17-.244-.15-.29-.23-.678-.18-1.11l-.005.04c.15-1.332 1.38-2.523 3.035-2.523-2.65 0-4.79 2.144-4.79 4.787s2.14 4.785 4.78 4.785z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/stamp": {
            "title": "$:/core/images/stamp",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-stamp tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M49.7334301,64 L16.0098166,64 C11.5838751,64 8,67.5829053 8,72.002643 L8,74.4986785 L8,97 L120,97 L120,74.4986785 L120,72.002643 C120,67.5737547 116.413883,64 111.990183,64 L78.2665699,64 C76.502049,60.7519149 75.5,57.0311962 75.5,53.0769231 C75.5,46.6017951 78.1869052,40.7529228 82.5087769,36.5800577 C85.3313113,32.7688808 87,28.0549983 87,22.952183 C87,10.2760423 76.7025492,0 64,0 C51.2974508,0 41,10.2760423 41,22.952183 C41,28.0549983 42.6686887,32.7688808 45.4912231,36.5800577 C49.8130948,40.7529228 52.5,46.6017951 52.5,53.0769231 C52.5,57.0311962 51.497951,60.7519149 49.7334301,64 Z M8,104 L120,104 L120,112 L8,112 L8,104 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/star-filled": {
            "title": "$:/core/images/star-filled",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-star-filled tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"nonzero\">\n        <path d=\"M61.8361286,96.8228569 L99.1627704,124.110219 C101.883827,126.099427 105.541968,123.420868 104.505636,120.198072 L90.2895569,75.9887263 L89.0292911,79.8977279 L126.314504,52.5528988 C129.032541,50.5595011 127.635256,46.2255025 124.273711,46.2229134 L78.1610486,46.1873965 L81.4604673,48.6032923 L67.1773543,4.41589688 C66.1361365,1.19470104 61.6144265,1.19470104 60.5732087,4.41589688 L46.2900957,48.6032923 L49.5895144,46.1873965 L3.47685231,46.2229134 C0.115307373,46.2255025 -1.28197785,50.5595011 1.43605908,52.5528988 L38.7212719,79.8977279 L37.4610061,75.9887263 L23.2449266,120.198072 C22.2085954,123.420868 25.8667356,126.099427 28.5877926,124.110219 L65.9144344,96.8228569 L61.8361286,96.8228569 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/storyview-classic": {
            "title": "$:/core/images/storyview-classic",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-storyview-classic tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M8.00697327,0 C3.58484404,0 0,3.59075293 0,8.00697327 L0,119.993027 C0,124.415156 3.59075293,128 8.00697327,128 L119.993027,128 C124.415156,128 128,124.409247 128,119.993027 L128,8.00697327 C128,3.58484404 124.409247,0 119.993027,0 L8.00697327,0 L8.00697327,0 Z M23.9992458,16 C19.5813843,16 16,19.5776607 16,23.9924054 L16,40.0075946 C16,44.4216782 19.5881049,48 23.9992458,48 L104.000754,48 C108.418616,48 112,44.4223393 112,40.0075946 L112,23.9924054 C112,19.5783218 108.411895,16 104.000754,16 L23.9992458,16 L23.9992458,16 Z M23.9992458,64 C19.5813843,64 16,67.5907123 16,72 C16,76.418278 19.5881049,80 23.9992458,80 L104.000754,80 C108.418616,80 112,76.4092877 112,72 C112,67.581722 108.411895,64 104.000754,64 L23.9992458,64 L23.9992458,64 Z M23.9992458,96 C19.5813843,96 16,99.5907123 16,104 C16,108.418278 19.5881049,112 23.9992458,112 L104.000754,112 C108.418616,112 112,108.409288 112,104 C112,99.581722 108.411895,96 104.000754,96 L23.9992458,96 L23.9992458,96 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/storyview-pop": {
            "title": "$:/core/images/storyview-pop",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-storyview-pop tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M8.00697327,0 C3.58484404,0 0,3.59075293 0,8.00697327 L0,119.993027 C0,124.415156 3.59075293,128 8.00697327,128 L119.993027,128 C124.415156,128 128,124.409247 128,119.993027 L128,8.00697327 C128,3.58484404 124.409247,0 119.993027,0 L8.00697327,0 L8.00697327,0 Z M23.9992458,16 C19.5813843,16 16,19.5776607 16,23.9924054 L16,40.0075946 C16,44.4216782 19.5881049,48 23.9992458,48 L104.000754,48 C108.418616,48 112,44.4223393 112,40.0075946 L112,23.9924054 C112,19.5783218 108.411895,16 104.000754,16 L23.9992458,16 L23.9992458,16 Z M16.0098166,56 C11.586117,56 8,59.5776607 8,63.9924054 L8,80.0075946 C8,84.4216782 11.5838751,88 16.0098166,88 L111.990183,88 C116.413883,88 120,84.4223393 120,80.0075946 L120,63.9924054 C120,59.5783218 116.416125,56 111.990183,56 L16.0098166,56 L16.0098166,56 Z M23.9992458,96 C19.5813843,96 16,99.5907123 16,104 C16,108.418278 19.5881049,112 23.9992458,112 L104.000754,112 C108.418616,112 112,108.409288 112,104 C112,99.581722 108.411895,96 104.000754,96 L23.9992458,96 L23.9992458,96 Z M23.9992458,64 C19.5813843,64 16,67.5907123 16,72 C16,76.418278 19.5881049,80 23.9992458,80 L104.000754,80 C108.418616,80 112,76.4092877 112,72 C112,67.581722 108.411895,64 104.000754,64 L23.9992458,64 L23.9992458,64 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/storyview-zoomin": {
            "title": "$:/core/images/storyview-zoomin",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-storyview-zoomin tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M8.00697327,0 C3.58484404,0 0,3.59075293 0,8.00697327 L0,119.993027 C0,124.415156 3.59075293,128 8.00697327,128 L119.993027,128 C124.415156,128 128,124.409247 128,119.993027 L128,8.00697327 C128,3.58484404 124.409247,0 119.993027,0 L8.00697327,0 L8.00697327,0 Z M23.9992458,16 C19.5813843,16 16,19.578055 16,24.0085154 L16,71.9914846 C16,76.4144655 19.5881049,80 23.9992458,80 L104.000754,80 C108.418616,80 112,76.421945 112,71.9914846 L112,24.0085154 C112,19.5855345 108.411895,16 104.000754,16 L23.9992458,16 L23.9992458,16 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/strikethrough": {
            "title": "$:/core/images/strikethrough",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-strikethrough tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M92.793842,38.7255689 L108.215529,38.7255689 C107.987058,31.985687 106.70193,26.1883331 104.360107,21.3333333 C102.018284,16.4783336 98.8197436,12.4516001 94.7643909,9.25301205 C90.7090382,6.05442399 85.9969032,3.71263572 80.6278447,2.22757697 C75.2587862,0.742518233 69.4328739,0 63.1499331,0 C57.552404,0 52.0977508,0.713959839 46.7858099,2.14190094 C41.473869,3.56984203 36.7331757,5.74027995 32.5635877,8.65327979 C28.3939997,11.5662796 25.0526676,15.2788708 22.5394913,19.7911647 C20.026315,24.3034585 18.7697456,29.6438781 18.7697456,35.8125837 C18.7697456,41.4101128 19.883523,46.0651309 22.1111111,49.7777778 C24.3386992,53.4904246 27.3087722,56.5176144 31.021419,58.8594378 C34.7340659,61.2012612 38.9321497,63.0861151 43.6157965,64.5140562 C48.2994433,65.9419973 53.068695,67.1985666 57.9236948,68.2838019 C62.7786945,69.3690371 67.5479462,70.4256977 72.231593,71.4538153 C76.9152398,72.4819329 81.1133237,73.8241773 84.8259705,75.480589 C88.5386174,77.1370007 91.5086903,79.2788802 93.7362784,81.9062918 C95.9638666,84.5337035 97.0776439,87.9607107 97.0776439,92.1874163 C97.0776439,96.6425926 96.1637753,100.298067 94.3360107,103.153949 C92.5082461,106.009831 90.109341,108.265944 87.1392236,109.922356 C84.1691061,111.578768 80.827774,112.749662 77.1151272,113.435074 C73.4024803,114.120485 69.7184476,114.463186 66.0629183,114.463186 C61.4935068,114.463186 57.0383974,113.892018 52.6974565,112.749665 C48.3565156,111.607312 44.5582492,109.836692 41.3025435,107.437751 C38.0468378,105.03881 35.4194656,101.983062 33.4203481,98.270415 C31.4212305,94.5577681 30.4216867,90.1312171 30.4216867,84.9906292 L15,84.9906292 C15,92.4159229 16.3422445,98.8415614 19.0267738,104.267738 C21.711303,109.693914 25.3667774,114.149023 29.9933066,117.633199 C34.6198357,121.117376 39.9888137,123.71619 46.1004016,125.429719 C52.2119895,127.143248 58.6947448,128 65.5488621,128 C71.1463912,128 76.7723948,127.343157 82.4270415,126.029451 C88.0816882,124.715745 93.1936407,122.602424 97.7630522,119.689424 C102.332464,116.776425 106.073613,113.006717 108.986613,108.380187 C111.899613,103.753658 113.356091,98.1847715 113.356091,91.6733601 C113.356091,85.6188899 112.242314,80.5926126 110.014726,76.5943775 C107.787137,72.5961424 104.817065,69.2833688 101.104418,66.6559572 C97.3917708,64.0285455 93.193687,61.9437828 88.5100402,60.4016064 C83.8263934,58.85943 79.0571416,57.5171855 74.2021419,56.3748327 C69.3471422,55.2324798 64.5778904,54.1758192 59.8942436,53.2048193 C55.2105968,52.2338193 51.012513,51.0058084 47.2998661,49.5207497 C43.5872193,48.0356909 40.6171463,46.1222786 38.3895582,43.7804552 C36.1619701,41.4386318 35.0481928,38.3828836 35.0481928,34.6131191 C35.0481928,30.6148841 35.8192694,27.273552 37.3614458,24.5890228 C38.9036222,21.9044935 40.9598265,19.762614 43.5301205,18.1633199 C46.1004145,16.5640259 49.041929,15.4216902 52.3547523,14.7362784 C55.6675757,14.0508667 59.0374661,13.708166 62.4645248,13.708166 C70.9179361,13.708166 77.8576257,15.6786952 83.2838019,19.6198126 C88.709978,23.56093 91.8799597,29.9294518 92.793842,38.7255689 L92.793842,38.7255689 Z\"></path>\n        <rect x=\"5\" y=\"54\" width=\"118\" height=\"16\"></rect>\n    </g>\n</svg>"
        },
        "$:/core/images/subscript": {
            "title": "$:/core/images/subscript",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-subscript tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M2.27170276,16 L22.1825093,16 L43.8305003,49.6746527 L66.4138983,16 L85.1220387,16 L53.5854592,61.9685735 L87.3937414,111.411516 L67.0820462,111.411516 L43.295982,74.9306422 L19.1090291,111.411516 L0,111.411516 L33.8082822,61.9685735 L2.27170276,16 Z M127.910914,128.411516 L85.3276227,128.411516 C85.3870139,123.24448 86.6342108,118.730815 89.0692508,114.870386 C91.5042907,111.009956 94.8301491,107.654403 99.0469256,104.803624 C101.066227,103.318844 103.174584,101.878629 105.372059,100.482935 C107.569534,99.0872413 109.588805,97.5876355 111.429933,95.9840726 C113.271061,94.3805097 114.785514,92.6433426 115.973338,90.7725192 C117.161163,88.9016958 117.784761,86.7487964 117.844152,84.3137564 C117.844152,83.1853233 117.710524,81.9826691 117.443264,80.7057579 C117.176003,79.4288467 116.656338,78.2410402 115.884252,77.1423026 C115.112166,76.0435651 114.04314,75.123015 112.677142,74.3806248 C111.311144,73.6382345 109.529434,73.267045 107.331959,73.267045 C105.312658,73.267045 103.634881,73.6679297 102.298579,74.4697112 C100.962276,75.2714926 99.8932503,76.3702137 99.0914688,77.7659073 C98.2896874,79.161601 97.6957841,80.8096826 97.3097412,82.7102016 C96.9236982,84.6107206 96.7009845,86.6596869 96.6415933,88.857162 L86.4857457,88.857162 C86.4857457,85.4124713 86.9460207,82.2202411 87.8665846,79.2803758 C88.7871485,76.3405105 90.1679736,73.801574 92.0091014,71.6634901 C93.8502292,69.5254062 96.092214,67.8476295 98.7351233,66.6301095 C101.378033,65.4125895 104.451482,64.8038386 107.955564,64.8038386 C111.756602,64.8038386 114.933984,65.4274371 117.487807,66.6746527 C120.041629,67.9218683 122.105443,69.4957119 123.67931,71.3962309 C125.253178,73.2967499 126.366746,75.3605638 127.02005,77.5877345 C127.673353,79.8149053 128,81.9381095 128,83.9574109 C128,86.4518421 127.613963,88.7086746 126.841877,90.727976 C126.069791,92.7472774 125.03046,94.6032252 123.723854,96.2958749 C122.417247,97.9885247 120.932489,99.5475208 119.269534,100.97291 C117.60658,102.398299 115.884261,103.734582 114.102524,104.981797 C112.320788,106.229013 110.539078,107.416819 108.757341,108.545253 C106.975605,109.673686 105.327523,110.802102 103.813047,111.930535 C102.298571,113.058968 100.977136,114.231927 99.8487031,115.449447 C98.7202699,116.666967 97.9481956,117.958707 97.5324571,119.324705 L127.910914,119.324705 L127.910914,128.411516 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/superscript": {
            "title": "$:/core/images/superscript",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-superscript tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M2.27170276,16 L22.1825093,16 L43.8305003,49.6746527 L66.4138983,16 L85.1220387,16 L53.5854592,61.9685735 L87.3937414,111.411516 L67.0820462,111.411516 L43.295982,74.9306422 L19.1090291,111.411516 L0,111.411516 L33.8082822,61.9685735 L2.27170276,16 Z M127.910914,63.4115159 L85.3276227,63.4115159 C85.3870139,58.2444799 86.6342108,53.7308149 89.0692508,49.8703857 C91.5042907,46.0099565 94.8301491,42.654403 99.0469256,39.8036245 C101.066227,38.318844 103.174584,36.8786285 105.372059,35.4829349 C107.569534,34.0872413 109.588805,32.5876355 111.429933,30.9840726 C113.271061,29.3805097 114.785514,27.6433426 115.973338,25.7725192 C117.161163,23.9016958 117.784761,21.7487964 117.844152,19.3137564 C117.844152,18.1853233 117.710524,16.9826691 117.443264,15.7057579 C117.176003,14.4288467 116.656338,13.2410402 115.884252,12.1423026 C115.112166,11.0435651 114.04314,10.123015 112.677142,9.38062477 C111.311144,8.63823453 109.529434,8.26704499 107.331959,8.26704499 C105.312658,8.26704499 103.634881,8.6679297 102.298579,9.46971115 C100.962276,10.2714926 99.8932503,11.3702137 99.0914688,12.7659073 C98.2896874,14.161601 97.6957841,15.8096826 97.3097412,17.7102016 C96.9236982,19.6107206 96.7009845,21.6596869 96.6415933,23.857162 L86.4857457,23.857162 C86.4857457,20.4124713 86.9460207,17.2202411 87.8665846,14.2803758 C88.7871485,11.3405105 90.1679736,8.80157397 92.0091014,6.6634901 C93.8502292,4.52540622 96.092214,2.84762946 98.7351233,1.63010947 C101.378033,0.412589489 104.451482,-0.196161372 107.955564,-0.196161372 C111.756602,-0.196161372 114.933984,0.427437071 117.487807,1.67465266 C120.041629,2.92186826 122.105443,4.49571195 123.67931,6.39623095 C125.253178,8.29674995 126.366746,10.3605638 127.02005,12.5877345 C127.673353,14.8149053 128,16.9381095 128,18.9574109 C128,21.4518421 127.613963,23.7086746 126.841877,25.727976 C126.069791,27.7472774 125.03046,29.6032252 123.723854,31.2958749 C122.417247,32.9885247 120.932489,34.5475208 119.269534,35.97291 C117.60658,37.3982993 115.884261,38.7345816 114.102524,39.9817972 C112.320788,41.2290128 110.539078,42.4168194 108.757341,43.5452525 C106.975605,44.6736857 105.327523,45.8021019 103.813047,46.9305351 C102.298571,48.0589682 100.977136,49.2319272 99.8487031,50.4494472 C98.7202699,51.6669672 97.9481956,52.9587068 97.5324571,54.3247048 L127.910914,54.3247048 L127.910914,63.4115159 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/tag-button": {
            "title": "$:/core/images/tag-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-tag-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M18.1643182,47.6600756 L18.1677196,51.7651887 C18.1708869,55.5878829 20.3581578,60.8623899 23.0531352,63.5573673 L84.9021823,125.406414 C87.5996731,128.103905 91.971139,128.096834 94.6717387,125.396234 L125.766905,94.3010679 C128.473612,91.5943612 128.472063,87.2264889 125.777085,84.5315115 L63.9280381,22.6824644 C61.2305472,19.9849735 55.9517395,17.801995 52.1318769,17.8010313 L25.0560441,17.7942007 C21.2311475,17.7932358 18.1421354,20.8872832 18.1452985,24.7049463 L18.1535504,34.6641936 C18.2481119,34.6754562 18.3439134,34.6864294 18.4409623,34.6971263 C22.1702157,35.1081705 26.9295004,34.6530132 31.806204,33.5444844 C32.1342781,33.0700515 32.5094815,32.6184036 32.9318197,32.1960654 C35.6385117,29.4893734 39.5490441,28.718649 42.94592,29.8824694 C43.0432142,29.8394357 43.1402334,29.7961748 43.2369683,29.7526887 L43.3646982,30.0368244 C44.566601,30.5115916 45.6933052,31.2351533 46.6655958,32.2074439 C50.4612154,36.0030635 50.4663097,42.1518845 46.6769742,45.94122 C43.0594074,49.5587868 37.2914155,49.7181264 33.4734256,46.422636 C28.1082519,47.5454734 22.7987486,48.0186448 18.1643182,47.6600756 Z\"></path>\n        <path d=\"M47.6333528,39.5324628 L47.6562932,39.5834939 C37.9670934,43.9391617 26.0718874,46.3819521 17.260095,45.4107025 C5.27267473,44.0894301 -1.02778744,36.4307276 2.44271359,24.0779512 C5.56175386,12.9761516 14.3014034,4.36129832 24.0466405,1.54817001 C34.7269254,-1.53487574 43.7955833,3.51606438 43.7955834,14.7730751 L35.1728168,14.7730752 C35.1728167,9.91428944 32.0946059,8.19982862 26.4381034,9.83267419 C19.5270911,11.8276553 13.046247,18.2159574 10.7440788,26.4102121 C8.82861123,33.2280582 11.161186,36.0634845 18.2047888,36.8398415 C25.3302805,37.6252244 35.7353482,35.4884477 44.1208333,31.7188498 L44.1475077,31.7781871 C44.159701,31.7725635 44.1718402,31.7671479 44.1839238,31.7619434 C45.9448098,31.0035157 50.4503245,38.3109156 47.7081571,39.5012767 C47.6834429,39.512005 47.6585061,39.5223987 47.6333528,39.5324628 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/theme-button": {
            "title": "$:/core/images/theme-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-theme-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M55.854113,66.9453198 C54.3299482,65.1432292 53.0133883,63.518995 51.9542746,62.1263761 C40.8899947,47.578055 35.3091807,55.2383404 28.9941893,62.1263758 C22.6791979,69.0144112 30.6577916,74.5954741 24.6646171,79.4611023 C18.6714426,84.3267304 19.0414417,86.0133155 8.92654943,77.1119468 C-1.18834284,68.2105781 -1.88793412,65.7597832 2.7553553,60.6807286 C7.39864472,55.601674 11.2794845,63.5989423 20.7646627,54.5728325 C30.2498409,45.5467226 22.2819131,37.5470737 22.2819131,37.5470737 C22.2819131,37.5470737 42.0310399,-2.82433362 68.4206088,0.157393922 C94.8101776,3.13912147 58.4373806,-3.70356506 49.3898693,27.958066 C45.5161782,41.5139906 50.1107906,38.3197672 57.4560458,44.0453955 C59.1625767,45.3756367 63.8839488,48.777453 70.127165,53.3625321 C63.9980513,59.2416709 58.9704753,64.0315459 55.854113,66.9453198 Z M67.4952439,79.8919946 C83.5082212,96.9282402 105.237121,117.617674 112.611591,120.312493 C123.044132,124.12481 128.000001,117.170903 128,105.522947 C127.999999,98.3705516 104.170675,78.980486 84.0760493,63.7529565 C76.6683337,70.9090328 70.7000957,76.7055226 67.4952439,79.8919946 Z\"></path>\n        <path d=\"M58.2852966,138.232794 L58.2852966,88.3943645 C56.318874,88.3923153 54.7254089,86.7952906 54.7254089,84.8344788 C54.7254089,82.8684071 56.3175932,81.2745911 58.2890859,81.2745911 L79.6408336,81.2745911 C81.608998,81.2745911 83.2045105,82.8724076 83.2045105,84.8344788 C83.2045105,86.7992907 81.614366,88.3923238 79.6446228,88.3943645 L79.6446228,88.3943646 L79.6446228,138.232794 C79.6446228,144.131009 74.8631748,148.912457 68.9649597,148.912457 C63.0667446,148.912457 58.2852966,144.131009 58.2852966,138.232794 Z M65.405072,-14.8423767 L72.5248474,-14.8423767 L76.0847351,-0.690681892 L72.5248474,6.51694947 L72.5248474,81.2745911 L65.405072,81.2745911 L65.405072,6.51694947 L61.8451843,-0.690681892 L65.405072,-14.8423767 Z\" transform=\"translate(68.964960, 67.035040) rotate(45.000000) translate(-68.964960, -67.035040) \"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/timestamp-off": {
            "title": "$:/core/images/timestamp-off",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-timestamp-off tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M58.25 11C26.08 11 0 37.082 0 69.25s26.08 58.25 58.25 58.25c32.175 0 58.25-26.082 58.25-58.25S90.425 11 58.25 11zm0 100.5C34.914 111.5 16 92.586 16 69.25 16 45.92 34.914 27 58.25 27s42.25 18.92 42.25 42.25c0 23.336-18.914 42.25-42.25 42.25zM49.704 10c-2.762 0-5-2.24-5-5-.004-2.756 2.238-5 5-5H66.69c2.762 0 5.002 2.24 5 5 .006 2.757-2.238 5-5 5H49.705z\"/><path d=\"M58.25 35.88c-18.777 0-33.998 15.224-33.998 33.998 0 18.773 15.22 34.002 33.998 34.002 18.784 0 34.002-15.23 34.002-34.002 0-18.774-15.218-33.998-34.002-33.998zm-3.03 50.123H44.196v-34H55.22v34zm16.976 0H61.17v-34h11.025v34z\"/>\n    </g>\n</svg>\n"
        },
        "$:/core/images/timestamp-on": {
            "title": "$:/core/images/timestamp-on",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-timestamp-on tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M58.25 11C26.08 11 0 37.082 0 69.25s26.08 58.25 58.25 58.25c32.175 0 58.25-26.082 58.25-58.25S90.425 11 58.25 11zm0 100.5C34.914 111.5 16 92.586 16 69.25 16 45.92 34.914 27 58.25 27s42.25 18.92 42.25 42.25c0 23.336-18.914 42.25-42.25 42.25zM49.704 10c-2.762 0-5-2.24-5-5-.004-2.756 2.238-5 5-5H66.69c2.762 0 5.002 2.24 5 5 .006 2.757-2.238 5-5 5H49.705z\"/><path d=\"M13.41 27.178c-2.116 1.775-5.27 1.498-7.045-.613-1.772-2.11-1.498-5.27.616-7.047l9.95-8.348c2.115-1.774 5.27-1.5 7.045.618 1.775 2.108 1.498 5.27-.616 7.043l-9.95 8.348zM102.983 27.178c2.116 1.775 5.27 1.498 7.045-.613 1.772-2.11 1.498-5.27-.616-7.047l-9.95-8.348c-2.114-1.774-5.27-1.5-7.044.618-1.775 2.108-1.498 5.27.616 7.043l9.95 8.348zM65.097 71.072c0 3.826-3.09 6.928-6.897 6.928-3.804.006-6.9-3.102-6.903-6.928 0 0 4.76-39.072 6.903-39.072s6.897 39.072 6.897 39.072z\"/>\n    </g>\n</svg>\n"
        },
        "$:/core/images/tip": {
            "title": "$:/core/images/tip",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-tip tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M64,128.241818 C99.346224,128.241818 128,99.5880417 128,64.2418177 C128,28.8955937 99.346224,0.241817675 64,0.241817675 C28.653776,0.241817675 0,28.8955937 0,64.2418177 C0,99.5880417 28.653776,128.241818 64,128.241818 Z M75.9358659,91.4531941 C75.3115438,95.581915 70.2059206,98.8016748 64,98.8016748 C57.7940794,98.8016748 52.6884562,95.581915 52.0641341,91.4531941 C54.3299053,94.0502127 58.8248941,95.8192805 64,95.8192805 C69.1751059,95.8192805 73.6700947,94.0502127 75.9358659,91.4531941 L75.9358659,91.4531941 Z M75.9358659,95.9453413 C75.3115438,100.074062 70.2059206,103.293822 64,103.293822 C57.7940794,103.293822 52.6884562,100.074062 52.0641341,95.9453413 C54.3299053,98.5423599 58.8248941,100.311428 64,100.311428 C69.1751059,100.311428 73.6700947,98.5423599 75.9358659,95.9453413 L75.9358659,95.9453413 Z M75.9358659,100.40119 C75.3115438,104.529911 70.2059206,107.74967 64,107.74967 C57.7940794,107.74967 52.6884562,104.529911 52.0641341,100.40119 C54.3299053,102.998208 58.8248941,104.767276 64,104.767276 C69.1751059,104.767276 73.6700947,102.998208 75.9358659,100.40119 L75.9358659,100.40119 Z M75.9358659,104.893337 C75.3115438,109.022058 70.2059206,112.241818 64,112.241818 C57.7940794,112.241818 52.6884562,109.022058 52.0641341,104.893337 C54.3299053,107.490356 58.8248941,109.259423 64,109.259423 C69.1751059,109.259423 73.6700947,107.490356 75.9358659,104.893337 L75.9358659,104.893337 Z M64.3010456,24.2418177 C75.9193117,24.2418188 88.0000013,32.0619847 88,48.4419659 C87.9999987,64.8219472 75.9193018,71.7540963 75.9193021,83.5755932 C75.9193022,89.4486648 70.0521957,92.8368862 63.9999994,92.8368862 C57.947803,92.8368862 51.9731007,89.8295115 51.9731007,83.5755932 C51.9731007,71.1469799 39.9999998,65.4700602 40,48.4419647 C40.0000002,31.4138691 52.6827796,24.2418166 64.3010456,24.2418177 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/twitter": {
            "title": "$:/core/images/twitter",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-twitter tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M41.6263422,115.803477 C27.0279663,115.803477 13.4398394,111.540813 1.99987456,104.234833 C4.02221627,104.472643 6.08004574,104.594302 8.16644978,104.594302 C20.277456,104.594302 31.4238403,100.47763 40.270894,93.5715185 C28.9590538,93.3635501 19.4123842,85.9189246 16.1230832,75.6885328 C17.7011365,75.9892376 19.320669,76.1503787 20.9862896,76.1503787 C23.344152,76.1503787 25.6278127,75.8359011 27.7971751,75.247346 C15.9709927,72.8821073 7.06079851,62.4745062 7.06079851,49.9982394 C7.06079851,49.8898938 7.06079851,49.7820074 7.06264203,49.67458 C10.5482779,51.6032228 14.5339687,52.7615103 18.7717609,52.8951059 C11.8355159,48.277565 7.2714207,40.3958845 7.2714207,31.4624258 C7.2714207,26.7434257 8.54621495,22.3200804 10.7713439,18.5169676 C23.5211299,34.0957738 42.568842,44.3472839 64.0532269,45.4210985 C63.6126256,43.5365285 63.3835682,41.5711584 63.3835682,39.5529928 C63.3835682,25.3326379 74.95811,13.8034766 89.2347917,13.8034766 C96.6697089,13.8034766 103.387958,16.930807 108.103682,21.9353619 C113.991886,20.780288 119.52429,18.6372496 124.518847,15.6866694 C122.588682,21.6993889 118.490075,26.7457211 113.152623,29.9327334 C118.381769,29.3102055 123.363882,27.926045 127.999875,25.8780385 C124.534056,31.0418981 120.151087,35.5772616 115.100763,39.2077561 C115.150538,40.3118708 115.175426,41.4224128 115.175426,42.538923 C115.175426,76.5663154 89.1744164,115.803477 41.6263422,115.803477\"></path>\n    </g>\n</svg>\n"
        },
        "$:/core/images/underline": {
            "title": "$:/core/images/underline",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-underline tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M7,117.421488 L121.247934,117.421488 L121.247934,128 L7,128 L7,117.421488 Z M104.871212,98.8958333 L104.871212,0 L88.6117424,0 L88.6117424,55.8560606 C88.6117424,60.3194668 88.0060035,64.432115 86.7945076,68.1941288 C85.5830116,71.9561425 83.7657949,75.239885 81.342803,78.0454545 C78.9198111,80.8510241 75.8911167,83.0189317 72.2566288,84.5492424 C68.6221409,86.0795531 64.3182067,86.844697 59.344697,86.844697 C53.0959284,86.844697 48.1862552,85.0593613 44.6155303,81.4886364 C41.0448054,77.9179114 39.2594697,73.0720003 39.2594697,66.9507576 L39.2594697,0 L23,0 L23,65.0378788 C23,70.3939662 23.5419769,75.2717583 24.625947,79.6714015 C25.709917,84.0710447 27.5908957,87.864883 30.2689394,91.0530303 C32.9469831,94.2411776 36.4538925,96.6960141 40.7897727,98.4176136 C45.125653,100.139213 50.545422,101 57.0492424,101 C64.3182182,101 70.630655,99.5653553 75.9867424,96.6960227 C81.3428298,93.8266902 85.742407,89.33147 89.1856061,83.2102273 L89.5681818,83.2102273 L89.5681818,98.8958333 L104.871212,98.8958333 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/unfold-all-button": {
            "title": "$:/core/images/unfold-all-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-unfold-all tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <rect x=\"0\" y=\"0\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n        <rect x=\"0\" y=\"64\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n        <path d=\"M85.598226,8.34884273 C84.1490432,6.89863875 82.1463102,6 79.9340286,6 L47.9482224,6 C43.5292967,6 39.9411255,9.581722 39.9411255,14 C39.9411255,18.4092877 43.5260249,22 47.9482224,22 L71.9411255,22 L71.9411255,45.9929031 C71.9411255,50.4118288 75.5228475,54 79.9411255,54 C84.3504132,54 87.9411255,50.4151006 87.9411255,45.9929031 L87.9411255,14.0070969 C87.9411255,11.7964515 87.0447363,9.79371715 85.5956548,8.34412458 Z\" transform=\"translate(63.941125, 30.000000) scale(1, -1) rotate(-45.000000) translate(-63.941125, -30.000000) \"></path>\n        <path d=\"M85.6571005,72.2899682 C84.2079177,70.8397642 82.2051847,69.9411255 79.9929031,69.9411255 L48.0070969,69.9411255 C43.5881712,69.9411255 40,73.5228475 40,77.9411255 C40,82.3504132 43.5848994,85.9411255 48.0070969,85.9411255 L72,85.9411255 L72,109.934029 C72,114.352954 75.581722,117.941125 80,117.941125 C84.4092877,117.941125 88,114.356226 88,109.934029 L88,77.9482224 C88,75.737577 87.1036108,73.7348426 85.6545293,72.2852501 Z\" transform=\"translate(64.000000, 93.941125) scale(1, -1) rotate(-45.000000) translate(-64.000000, -93.941125) \"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/unfold-button": {
            "title": "$:/core/images/unfold-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-unfold tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <rect x=\"0\" y=\"0\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n        <path d=\"M85.598226,11.3488427 C84.1490432,9.89863875 82.1463102,9 79.9340286,9 L47.9482224,9 C43.5292967,9 39.9411255,12.581722 39.9411255,17 C39.9411255,21.4092877 43.5260249,25 47.9482224,25 L71.9411255,25 L71.9411255,48.9929031 C71.9411255,53.4118288 75.5228475,57 79.9411255,57 C84.3504132,57 87.9411255,53.4151006 87.9411255,48.9929031 L87.9411255,17.0070969 C87.9411255,14.7964515 87.0447363,12.7937171 85.5956548,11.3441246 Z\" transform=\"translate(63.941125, 33.000000) scale(1, -1) rotate(-45.000000) translate(-63.941125, -33.000000) \"></path>\n        <path d=\"M85.6571005,53.4077172 C84.2079177,51.9575133 82.2051847,51.0588745 79.9929031,51.0588745 L48.0070969,51.0588745 C43.5881712,51.0588745 40,54.6405965 40,59.0588745 C40,63.4681622 43.5848994,67.0588745 48.0070969,67.0588745 L72,67.0588745 L72,91.0517776 C72,95.4707033 75.581722,99.0588745 80,99.0588745 C84.4092877,99.0588745 88,95.4739751 88,91.0517776 L88,59.0659714 C88,56.855326 87.1036108,54.8525917 85.6545293,53.4029991 Z\" transform=\"translate(64.000000, 75.058875) scale(1, -1) rotate(-45.000000) translate(-64.000000, -75.058875) \"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/unlocked-padlock": {
            "title": "$:/core/images/unlocked-padlock",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-unlocked-padlock tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M48.6266053,64 L105,64 L105,96.0097716 C105,113.673909 90.6736461,128 73.001193,128 L55.998807,128 C38.3179793,128 24,113.677487 24,96.0097716 L24,64 L30.136303,64 C19.6806213,51.3490406 2.77158986,28.2115132 25.8366966,8.85759246 C50.4723026,-11.8141335 71.6711028,13.2108337 81.613302,25.0594855 C91.5555012,36.9081373 78.9368488,47.4964439 69.1559674,34.9513593 C59.375086,22.4062748 47.9893192,10.8049522 35.9485154,20.9083862 C23.9077117,31.0118202 34.192312,43.2685325 44.7624679,55.8655518 C47.229397,58.805523 48.403443,61.5979188 48.6266053,64 Z M67.7315279,92.3641717 C70.8232551,91.0923621 73,88.0503841 73,84.5 C73,79.8055796 69.1944204,76 64.5,76 C59.8055796,76 56,79.8055796 56,84.5 C56,87.947435 58.0523387,90.9155206 61.0018621,92.2491029 L55.9067479,115.020857 L72.8008958,115.020857 L67.7315279,92.3641717 L67.7315279,92.3641717 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/up-arrow": {
            "created": "20150316000544368",
            "modified": "20150316000831867",
            "tags": "$:/tags/Image",
            "title": "$:/core/images/up-arrow",
            "text": "<svg class=\"tc-image-up-arrow tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n<path transform=\"rotate(-135, 63.8945, 64.1752)\" d=\"m109.07576,109.35336c-1.43248,1.43361 -3.41136,2.32182 -5.59717,2.32182l-79.16816,0c-4.36519,0 -7.91592,-3.5444 -7.91592,-7.91666c0,-4.36337 3.54408,-7.91667 7.91592,-7.91667l71.25075,0l0,-71.25074c0,-4.3652 3.54442,-7.91592 7.91667,-7.91592c4.36336,0 7.91667,3.54408 7.91667,7.91592l0,79.16815c0,2.1825 -0.88602,4.16136 -2.3185,5.59467l-0.00027,-0.00056l0.00001,-0.00001z\" />\n</svg>\n \n"
        },
        "$:/core/images/video": {
            "title": "$:/core/images/video",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-video tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M64,12 C29.0909091,12 8.72727273,14.9166667 5.81818182,17.8333333 C2.90909091,20.75 1.93784382e-15,41.1666667 0,64.5 C1.93784382e-15,87.8333333 2.90909091,108.25 5.81818182,111.166667 C8.72727273,114.083333 29.0909091,117 64,117 C98.9090909,117 119.272727,114.083333 122.181818,111.166667 C125.090909,108.25 128,87.8333333 128,64.5 C128,41.1666667 125.090909,20.75 122.181818,17.8333333 C119.272727,14.9166667 98.9090909,12 64,12 Z M54.9161194,44.6182253 C51.102648,42.0759111 48.0112186,43.7391738 48.0112186,48.3159447 L48.0112186,79.6840553 C48.0112186,84.2685636 51.109784,85.9193316 54.9161194,83.3817747 L77.0838806,68.6032672 C80.897352,66.0609529 80.890216,61.9342897 77.0838806,59.3967328 L54.9161194,44.6182253 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/core/images/warning": {
            "title": "$:/core/images/warning",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-warning tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M57.0717968,11 C60.1509982,5.66666667 67.8490018,5.66666667 70.9282032,11 L126.353829,107 C129.433031,112.333333 125.584029,119 119.425626,119 L8.57437416,119 C2.41597129,119 -1.43303051,112.333333 1.64617093,107 L57.0717968,11 Z M64,37 C59.581722,37 56,40.5820489 56,44.9935776 L56,73.0064224 C56,77.4211534 59.5907123,81 64,81 C68.418278,81 72,77.4179511 72,73.0064224 L72,44.9935776 C72,40.5788466 68.4092877,37 64,37 Z M64,104 C68.418278,104 72,100.418278 72,96 C72,91.581722 68.418278,88 64,88 C59.581722,88 56,91.581722 56,96 C56,100.418278 59.581722,104 64,104 Z\"></path>\n    </g>\n</svg>"
        },
        "$:/language/Buttons/AdvancedSearch/Caption": {
            "title": "$:/language/Buttons/AdvancedSearch/Caption",
            "text": "advanced search"
        },
        "$:/language/Buttons/AdvancedSearch/Hint": {
            "title": "$:/language/Buttons/AdvancedSearch/Hint",
            "text": "Advanced search"
        },
        "$:/language/Buttons/Cancel/Caption": {
            "title": "$:/language/Buttons/Cancel/Caption",
            "text": "cancel"
        },
        "$:/language/Buttons/Cancel/Hint": {
            "title": "$:/language/Buttons/Cancel/Hint",
            "text": "Discard changes to this tiddler"
        },
        "$:/language/Buttons/Clone/Caption": {
            "title": "$:/language/Buttons/Clone/Caption",
            "text": "clone"
        },
        "$:/language/Buttons/Clone/Hint": {
            "title": "$:/language/Buttons/Clone/Hint",
            "text": "Clone this tiddler"
        },
        "$:/language/Buttons/Close/Caption": {
            "title": "$:/language/Buttons/Close/Caption",
            "text": "close"
        },
        "$:/language/Buttons/Close/Hint": {
            "title": "$:/language/Buttons/Close/Hint",
            "text": "Close this tiddler"
        },
        "$:/language/Buttons/CloseAll/Caption": {
            "title": "$:/language/Buttons/CloseAll/Caption",
            "text": "close all"
        },
        "$:/language/Buttons/CloseAll/Hint": {
            "title": "$:/language/Buttons/CloseAll/Hint",
            "text": "Close all tiddlers"
        },
        "$:/language/Buttons/CloseOthers/Caption": {
            "title": "$:/language/Buttons/CloseOthers/Caption",
            "text": "close others"
        },
        "$:/language/Buttons/CloseOthers/Hint": {
            "title": "$:/language/Buttons/CloseOthers/Hint",
            "text": "Close other tiddlers"
        },
        "$:/language/Buttons/ControlPanel/Caption": {
            "title": "$:/language/Buttons/ControlPanel/Caption",
            "text": "control panel"
        },
        "$:/language/Buttons/ControlPanel/Hint": {
            "title": "$:/language/Buttons/ControlPanel/Hint",
            "text": "Open control panel"
        },
        "$:/language/Buttons/Delete/Caption": {
            "title": "$:/language/Buttons/Delete/Caption",
            "text": "delete"
        },
        "$:/language/Buttons/Delete/Hint": {
            "title": "$:/language/Buttons/Delete/Hint",
            "text": "Delete this tiddler"
        },
        "$:/language/Buttons/Edit/Caption": {
            "title": "$:/language/Buttons/Edit/Caption",
            "text": "edit"
        },
        "$:/language/Buttons/Edit/Hint": {
            "title": "$:/language/Buttons/Edit/Hint",
            "text": "Edit this tiddler"
        },
        "$:/language/Buttons/Encryption/Caption": {
            "title": "$:/language/Buttons/Encryption/Caption",
            "text": "encryption"
        },
        "$:/language/Buttons/Encryption/Hint": {
            "title": "$:/language/Buttons/Encryption/Hint",
            "text": "Set or clear a password for saving this wiki"
        },
        "$:/language/Buttons/Encryption/ClearPassword/Caption": {
            "title": "$:/language/Buttons/Encryption/ClearPassword/Caption",
            "text": "clear password"
        },
        "$:/language/Buttons/Encryption/ClearPassword/Hint": {
            "title": "$:/language/Buttons/Encryption/ClearPassword/Hint",
            "text": "Clear the password and save this wiki without encryption"
        },
        "$:/language/Buttons/Encryption/SetPassword/Caption": {
            "title": "$:/language/Buttons/Encryption/SetPassword/Caption",
            "text": "set password"
        },
        "$:/language/Buttons/Encryption/SetPassword/Hint": {
            "title": "$:/language/Buttons/Encryption/SetPassword/Hint",
            "text": "Set a password for saving this wiki with encryption"
        },
        "$:/language/Buttons/ExportPage/Caption": {
            "title": "$:/language/Buttons/ExportPage/Caption",
            "text": "export all"
        },
        "$:/language/Buttons/ExportPage/Hint": {
            "title": "$:/language/Buttons/ExportPage/Hint",
            "text": "Export all tiddlers"
        },
        "$:/language/Buttons/ExportTiddler/Caption": {
            "title": "$:/language/Buttons/ExportTiddler/Caption",
            "text": "export tiddler"
        },
        "$:/language/Buttons/ExportTiddler/Hint": {
            "title": "$:/language/Buttons/ExportTiddler/Hint",
            "text": "Export tiddler"
        },
        "$:/language/Buttons/ExportTiddlers/Caption": {
            "title": "$:/language/Buttons/ExportTiddlers/Caption",
            "text": "export tiddlers"
        },
        "$:/language/Buttons/ExportTiddlers/Hint": {
            "title": "$:/language/Buttons/ExportTiddlers/Hint",
            "text": "Export tiddlers"
        },
        "$:/language/Buttons/Fold/Caption": {
            "title": "$:/language/Buttons/Fold/Caption",
            "text": "fold tiddler"
        },
        "$:/language/Buttons/Fold/Hint": {
            "title": "$:/language/Buttons/Fold/Hint",
            "text": "Fold the body of this tiddler"
        },
        "$:/language/Buttons/Fold/FoldBar/Caption": {
            "title": "$:/language/Buttons/Fold/FoldBar/Caption",
            "text": "fold-bar"
        },
        "$:/language/Buttons/Fold/FoldBar/Hint": {
            "title": "$:/language/Buttons/Fold/FoldBar/Hint",
            "text": "Optional bars to fold and unfold tiddlers"
        },
        "$:/language/Buttons/Unfold/Caption": {
            "title": "$:/language/Buttons/Unfold/Caption",
            "text": "unfold tiddler"
        },
        "$:/language/Buttons/Unfold/Hint": {
            "title": "$:/language/Buttons/Unfold/Hint",
            "text": "Unfold the body of this tiddler"
        },
        "$:/language/Buttons/FoldOthers/Caption": {
            "title": "$:/language/Buttons/FoldOthers/Caption",
            "text": "fold other tiddlers"
        },
        "$:/language/Buttons/FoldOthers/Hint": {
            "title": "$:/language/Buttons/FoldOthers/Hint",
            "text": "Fold the bodies of other opened tiddlers"
        },
        "$:/language/Buttons/FoldAll/Caption": {
            "title": "$:/language/Buttons/FoldAll/Caption",
            "text": "fold all tiddlers"
        },
        "$:/language/Buttons/FoldAll/Hint": {
            "title": "$:/language/Buttons/FoldAll/Hint",
            "text": "Fold the bodies of all opened tiddlers"
        },
        "$:/language/Buttons/UnfoldAll/Caption": {
            "title": "$:/language/Buttons/UnfoldAll/Caption",
            "text": "unfold all tiddlers"
        },
        "$:/language/Buttons/UnfoldAll/Hint": {
            "title": "$:/language/Buttons/UnfoldAll/Hint",
            "text": "Unfold the bodies of all opened tiddlers"
        },
        "$:/language/Buttons/FullScreen/Caption": {
            "title": "$:/language/Buttons/FullScreen/Caption",
            "text": "full-screen"
        },
        "$:/language/Buttons/FullScreen/Hint": {
            "title": "$:/language/Buttons/FullScreen/Hint",
            "text": "Enter or leave full-screen mode"
        },
        "$:/language/Buttons/Help/Caption": {
            "title": "$:/language/Buttons/Help/Caption",
            "text": "help"
        },
        "$:/language/Buttons/Help/Hint": {
            "title": "$:/language/Buttons/Help/Hint",
            "text": "Show help panel"
        },
        "$:/language/Buttons/Import/Caption": {
            "title": "$:/language/Buttons/Import/Caption",
            "text": "import"
        },
        "$:/language/Buttons/Import/Hint": {
            "title": "$:/language/Buttons/Import/Hint",
            "text": "Import many types of file including text, image, TiddlyWiki or JSON"
        },
        "$:/language/Buttons/Info/Caption": {
            "title": "$:/language/Buttons/Info/Caption",
            "text": "info"
        },
        "$:/language/Buttons/Info/Hint": {
            "title": "$:/language/Buttons/Info/Hint",
            "text": "Show information for this tiddler"
        },
        "$:/language/Buttons/Home/Caption": {
            "title": "$:/language/Buttons/Home/Caption",
            "text": "home"
        },
        "$:/language/Buttons/Home/Hint": {
            "title": "$:/language/Buttons/Home/Hint",
            "text": "Open the default tiddlers"
        },
        "$:/language/Buttons/Language/Caption": {
            "title": "$:/language/Buttons/Language/Caption",
            "text": "language"
        },
        "$:/language/Buttons/Language/Hint": {
            "title": "$:/language/Buttons/Language/Hint",
            "text": "Choose the user interface language"
        },
        "$:/language/Buttons/Manager/Caption": {
            "title": "$:/language/Buttons/Manager/Caption",
            "text": "tiddler manager"
        },
        "$:/language/Buttons/Manager/Hint": {
            "title": "$:/language/Buttons/Manager/Hint",
            "text": "Open tiddler manager"
        },
        "$:/language/Buttons/More/Caption": {
            "title": "$:/language/Buttons/More/Caption",
            "text": "more"
        },
        "$:/language/Buttons/More/Hint": {
            "title": "$:/language/Buttons/More/Hint",
            "text": "More actions"
        },
        "$:/language/Buttons/NewHere/Caption": {
            "title": "$:/language/Buttons/NewHere/Caption",
            "text": "new here"
        },
        "$:/language/Buttons/NewHere/Hint": {
            "title": "$:/language/Buttons/NewHere/Hint",
            "text": "Create a new tiddler tagged with this one"
        },
        "$:/language/Buttons/NewJournal/Caption": {
            "title": "$:/language/Buttons/NewJournal/Caption",
            "text": "new journal"
        },
        "$:/language/Buttons/NewJournal/Hint": {
            "title": "$:/language/Buttons/NewJournal/Hint",
            "text": "Create a new journal tiddler"
        },
        "$:/language/Buttons/NewJournalHere/Caption": {
            "title": "$:/language/Buttons/NewJournalHere/Caption",
            "text": "new journal here"
        },
        "$:/language/Buttons/NewJournalHere/Hint": {
            "title": "$:/language/Buttons/NewJournalHere/Hint",
            "text": "Create a new journal tiddler tagged with this one"
        },
        "$:/language/Buttons/NewImage/Caption": {
            "title": "$:/language/Buttons/NewImage/Caption",
            "text": "new image"
        },
        "$:/language/Buttons/NewImage/Hint": {
            "title": "$:/language/Buttons/NewImage/Hint",
            "text": "Create a new image tiddler"
        },
        "$:/language/Buttons/NewMarkdown/Caption": {
            "title": "$:/language/Buttons/NewMarkdown/Caption",
            "text": "new Markdown tiddler"
        },
        "$:/language/Buttons/NewMarkdown/Hint": {
            "title": "$:/language/Buttons/NewMarkdown/Hint",
            "text": "Create a new Markdown tiddler"
        },
        "$:/language/Buttons/NewTiddler/Caption": {
            "title": "$:/language/Buttons/NewTiddler/Caption",
            "text": "new tiddler"
        },
        "$:/language/Buttons/NewTiddler/Hint": {
            "title": "$:/language/Buttons/NewTiddler/Hint",
            "text": "Create a new tiddler"
        },
        "$:/language/Buttons/OpenWindow/Caption": {
            "title": "$:/language/Buttons/OpenWindow/Caption",
            "text": "open in new window"
        },
        "$:/language/Buttons/OpenWindow/Hint": {
            "title": "$:/language/Buttons/OpenWindow/Hint",
            "text": "Open tiddler in new window"
        },
        "$:/language/Buttons/Palette/Caption": {
            "title": "$:/language/Buttons/Palette/Caption",
            "text": "palette"
        },
        "$:/language/Buttons/Palette/Hint": {
            "title": "$:/language/Buttons/Palette/Hint",
            "text": "Choose the colour palette"
        },
        "$:/language/Buttons/Permalink/Caption": {
            "title": "$:/language/Buttons/Permalink/Caption",
            "text": "permalink"
        },
        "$:/language/Buttons/Permalink/Hint": {
            "title": "$:/language/Buttons/Permalink/Hint",
            "text": "Set browser address bar to a direct link to this tiddler"
        },
        "$:/language/Buttons/Permaview/Caption": {
            "title": "$:/language/Buttons/Permaview/Caption",
            "text": "permaview"
        },
        "$:/language/Buttons/Permaview/Hint": {
            "title": "$:/language/Buttons/Permaview/Hint",
            "text": "Set browser address bar to a direct link to all the tiddlers in this story"
        },
        "$:/language/Buttons/Print/Caption": {
            "title": "$:/language/Buttons/Print/Caption",
            "text": "print page"
        },
        "$:/language/Buttons/Print/Hint": {
            "title": "$:/language/Buttons/Print/Hint",
            "text": "Print the current page"
        },
        "$:/language/Buttons/Refresh/Caption": {
            "title": "$:/language/Buttons/Refresh/Caption",
            "text": "refresh"
        },
        "$:/language/Buttons/Refresh/Hint": {
            "title": "$:/language/Buttons/Refresh/Hint",
            "text": "Perform a full refresh of the wiki"
        },
        "$:/language/Buttons/Save/Caption": {
            "title": "$:/language/Buttons/Save/Caption",
            "text": "ok"
        },
        "$:/language/Buttons/Save/Hint": {
            "title": "$:/language/Buttons/Save/Hint",
            "text": "Confirm changes to this tiddler"
        },
        "$:/language/Buttons/SaveWiki/Caption": {
            "title": "$:/language/Buttons/SaveWiki/Caption",
            "text": "save changes"
        },
        "$:/language/Buttons/SaveWiki/Hint": {
            "title": "$:/language/Buttons/SaveWiki/Hint",
            "text": "Save changes"
        },
        "$:/language/Buttons/StoryView/Caption": {
            "title": "$:/language/Buttons/StoryView/Caption",
            "text": "storyview"
        },
        "$:/language/Buttons/StoryView/Hint": {
            "title": "$:/language/Buttons/StoryView/Hint",
            "text": "Choose the story visualisation"
        },
        "$:/language/Buttons/HideSideBar/Caption": {
            "title": "$:/language/Buttons/HideSideBar/Caption",
            "text": "hide sidebar"
        },
        "$:/language/Buttons/HideSideBar/Hint": {
            "title": "$:/language/Buttons/HideSideBar/Hint",
            "text": "Hide sidebar"
        },
        "$:/language/Buttons/ShowSideBar/Caption": {
            "title": "$:/language/Buttons/ShowSideBar/Caption",
            "text": "show sidebar"
        },
        "$:/language/Buttons/ShowSideBar/Hint": {
            "title": "$:/language/Buttons/ShowSideBar/Hint",
            "text": "Show sidebar"
        },
        "$:/language/Buttons/TagManager/Caption": {
            "title": "$:/language/Buttons/TagManager/Caption",
            "text": "tag manager"
        },
        "$:/language/Buttons/TagManager/Hint": {
            "title": "$:/language/Buttons/TagManager/Hint",
            "text": "Open tag manager"
        },
        "$:/language/Buttons/Timestamp/Caption": {
            "title": "$:/language/Buttons/Timestamp/Caption",
            "text": "timestamps"
        },
        "$:/language/Buttons/Timestamp/Hint": {
            "title": "$:/language/Buttons/Timestamp/Hint",
            "text": "Choose whether modifications update timestamps"
        },
        "$:/language/Buttons/Timestamp/On/Caption": {
            "title": "$:/language/Buttons/Timestamp/On/Caption",
            "text": "timestamps are on"
        },
        "$:/language/Buttons/Timestamp/On/Hint": {
            "title": "$:/language/Buttons/Timestamp/On/Hint",
            "text": "Update timestamps when tiddlers are modified"
        },
        "$:/language/Buttons/Timestamp/Off/Caption": {
            "title": "$:/language/Buttons/Timestamp/Off/Caption",
            "text": "timestamps are off"
        },
        "$:/language/Buttons/Timestamp/Off/Hint": {
            "title": "$:/language/Buttons/Timestamp/Off/Hint",
            "text": "Don't update timestamps when tiddlers are modified"
        },
        "$:/language/Buttons/Theme/Caption": {
            "title": "$:/language/Buttons/Theme/Caption",
            "text": "theme"
        },
        "$:/language/Buttons/Theme/Hint": {
            "title": "$:/language/Buttons/Theme/Hint",
            "text": "Choose the display theme"
        },
        "$:/language/Buttons/Bold/Caption": {
            "title": "$:/language/Buttons/Bold/Caption",
            "text": "bold"
        },
        "$:/language/Buttons/Bold/Hint": {
            "title": "$:/language/Buttons/Bold/Hint",
            "text": "Apply bold formatting to selection"
        },
        "$:/language/Buttons/Clear/Caption": {
            "title": "$:/language/Buttons/Clear/Caption",
            "text": "clear"
        },
        "$:/language/Buttons/Clear/Hint": {
            "title": "$:/language/Buttons/Clear/Hint",
            "text": "Clear image to solid colour"
        },
        "$:/language/Buttons/EditorHeight/Caption": {
            "title": "$:/language/Buttons/EditorHeight/Caption",
            "text": "editor height"
        },
        "$:/language/Buttons/EditorHeight/Caption/Auto": {
            "title": "$:/language/Buttons/EditorHeight/Caption/Auto",
            "text": "Automatically adjust height to fit content"
        },
        "$:/language/Buttons/EditorHeight/Caption/Fixed": {
            "title": "$:/language/Buttons/EditorHeight/Caption/Fixed",
            "text": "Fixed height:"
        },
        "$:/language/Buttons/EditorHeight/Hint": {
            "title": "$:/language/Buttons/EditorHeight/Hint",
            "text": "Choose the height of the text editor"
        },
        "$:/language/Buttons/Excise/Caption": {
            "title": "$:/language/Buttons/Excise/Caption",
            "text": "excise"
        },
        "$:/language/Buttons/Excise/Caption/Excise": {
            "title": "$:/language/Buttons/Excise/Caption/Excise",
            "text": "Perform excision"
        },
        "$:/language/Buttons/Excise/Caption/MacroName": {
            "title": "$:/language/Buttons/Excise/Caption/MacroName",
            "text": "Macro name:"
        },
        "$:/language/Buttons/Excise/Caption/NewTitle": {
            "title": "$:/language/Buttons/Excise/Caption/NewTitle",
            "text": "Title of new tiddler:"
        },
        "$:/language/Buttons/Excise/Caption/Replace": {
            "title": "$:/language/Buttons/Excise/Caption/Replace",
            "text": "Replace excised text with:"
        },
        "$:/language/Buttons/Excise/Caption/Replace/Macro": {
            "title": "$:/language/Buttons/Excise/Caption/Replace/Macro",
            "text": "macro"
        },
        "$:/language/Buttons/Excise/Caption/Replace/Link": {
            "title": "$:/language/Buttons/Excise/Caption/Replace/Link",
            "text": "link"
        },
        "$:/language/Buttons/Excise/Caption/Replace/Transclusion": {
            "title": "$:/language/Buttons/Excise/Caption/Replace/Transclusion",
            "text": "transclusion"
        },
        "$:/language/Buttons/Excise/Caption/Tag": {
            "title": "$:/language/Buttons/Excise/Caption/Tag",
            "text": "Tag new tiddler with the title of this tiddler"
        },
        "$:/language/Buttons/Excise/Caption/TiddlerExists": {
            "title": "$:/language/Buttons/Excise/Caption/TiddlerExists",
            "text": "Warning: tiddler already exists"
        },
        "$:/language/Buttons/Excise/Hint": {
            "title": "$:/language/Buttons/Excise/Hint",
            "text": "Excise the selected text into a new tiddler"
        },
        "$:/language/Buttons/Heading1/Caption": {
            "title": "$:/language/Buttons/Heading1/Caption",
            "text": "heading 1"
        },
        "$:/language/Buttons/Heading1/Hint": {
            "title": "$:/language/Buttons/Heading1/Hint",
            "text": "Apply heading level 1 formatting to lines containing selection"
        },
        "$:/language/Buttons/Heading2/Caption": {
            "title": "$:/language/Buttons/Heading2/Caption",
            "text": "heading 2"
        },
        "$:/language/Buttons/Heading2/Hint": {
            "title": "$:/language/Buttons/Heading2/Hint",
            "text": "Apply heading level 2 formatting to lines containing selection"
        },
        "$:/language/Buttons/Heading3/Caption": {
            "title": "$:/language/Buttons/Heading3/Caption",
            "text": "heading 3"
        },
        "$:/language/Buttons/Heading3/Hint": {
            "title": "$:/language/Buttons/Heading3/Hint",
            "text": "Apply heading level 3 formatting to lines containing selection"
        },
        "$:/language/Buttons/Heading4/Caption": {
            "title": "$:/language/Buttons/Heading4/Caption",
            "text": "heading 4"
        },
        "$:/language/Buttons/Heading4/Hint": {
            "title": "$:/language/Buttons/Heading4/Hint",
            "text": "Apply heading level 4 formatting to lines containing selection"
        },
        "$:/language/Buttons/Heading5/Caption": {
            "title": "$:/language/Buttons/Heading5/Caption",
            "text": "heading 5"
        },
        "$:/language/Buttons/Heading5/Hint": {
            "title": "$:/language/Buttons/Heading5/Hint",
            "text": "Apply heading level 5 formatting to lines containing selection"
        },
        "$:/language/Buttons/Heading6/Caption": {
            "title": "$:/language/Buttons/Heading6/Caption",
            "text": "heading 6"
        },
        "$:/language/Buttons/Heading6/Hint": {
            "title": "$:/language/Buttons/Heading6/Hint",
            "text": "Apply heading level 6 formatting to lines containing selection"
        },
        "$:/language/Buttons/Italic/Caption": {
            "title": "$:/language/Buttons/Italic/Caption",
            "text": "italic"
        },
        "$:/language/Buttons/Italic/Hint": {
            "title": "$:/language/Buttons/Italic/Hint",
            "text": "Apply italic formatting to selection"
        },
        "$:/language/Buttons/LineWidth/Caption": {
            "title": "$:/language/Buttons/LineWidth/Caption",
            "text": "line width"
        },
        "$:/language/Buttons/LineWidth/Hint": {
            "title": "$:/language/Buttons/LineWidth/Hint",
            "text": "Set line width for painting"
        },
        "$:/language/Buttons/Link/Caption": {
            "title": "$:/language/Buttons/Link/Caption",
            "text": "link"
        },
        "$:/language/Buttons/Link/Hint": {
            "title": "$:/language/Buttons/Link/Hint",
            "text": "Create wikitext link"
        },
        "$:/language/Buttons/ListBullet/Caption": {
            "title": "$:/language/Buttons/ListBullet/Caption",
            "text": "bulleted list"
        },
        "$:/language/Buttons/ListBullet/Hint": {
            "title": "$:/language/Buttons/ListBullet/Hint",
            "text": "Apply bulleted list formatting to lines containing selection"
        },
        "$:/language/Buttons/ListNumber/Caption": {
            "title": "$:/language/Buttons/ListNumber/Caption",
            "text": "numbered list"
        },
        "$:/language/Buttons/ListNumber/Hint": {
            "title": "$:/language/Buttons/ListNumber/Hint",
            "text": "Apply numbered list formatting to lines containing selection"
        },
        "$:/language/Buttons/MonoBlock/Caption": {
            "title": "$:/language/Buttons/MonoBlock/Caption",
            "text": "monospaced block"
        },
        "$:/language/Buttons/MonoBlock/Hint": {
            "title": "$:/language/Buttons/MonoBlock/Hint",
            "text": "Apply monospaced block formatting to lines containing selection"
        },
        "$:/language/Buttons/MonoLine/Caption": {
            "title": "$:/language/Buttons/MonoLine/Caption",
            "text": "monospaced"
        },
        "$:/language/Buttons/MonoLine/Hint": {
            "title": "$:/language/Buttons/MonoLine/Hint",
            "text": "Apply monospaced character formatting to selection"
        },
        "$:/language/Buttons/Opacity/Caption": {
            "title": "$:/language/Buttons/Opacity/Caption",
            "text": "opacity"
        },
        "$:/language/Buttons/Opacity/Hint": {
            "title": "$:/language/Buttons/Opacity/Hint",
            "text": "Set painting opacity"
        },
        "$:/language/Buttons/Paint/Caption": {
            "title": "$:/language/Buttons/Paint/Caption",
            "text": "paint colour"
        },
        "$:/language/Buttons/Paint/Hint": {
            "title": "$:/language/Buttons/Paint/Hint",
            "text": "Set painting colour"
        },
        "$:/language/Buttons/Picture/Caption": {
            "title": "$:/language/Buttons/Picture/Caption",
            "text": "picture"
        },
        "$:/language/Buttons/Picture/Hint": {
            "title": "$:/language/Buttons/Picture/Hint",
            "text": "Insert picture"
        },
        "$:/language/Buttons/Preview/Caption": {
            "title": "$:/language/Buttons/Preview/Caption",
            "text": "preview"
        },
        "$:/language/Buttons/Preview/Hint": {
            "title": "$:/language/Buttons/Preview/Hint",
            "text": "Show preview pane"
        },
        "$:/language/Buttons/PreviewType/Caption": {
            "title": "$:/language/Buttons/PreviewType/Caption",
            "text": "preview type"
        },
        "$:/language/Buttons/PreviewType/Hint": {
            "title": "$:/language/Buttons/PreviewType/Hint",
            "text": "Choose preview type"
        },
        "$:/language/Buttons/Quote/Caption": {
            "title": "$:/language/Buttons/Quote/Caption",
            "text": "quote"
        },
        "$:/language/Buttons/Quote/Hint": {
            "title": "$:/language/Buttons/Quote/Hint",
            "text": "Apply quoted text formatting to lines containing selection"
        },
        "$:/language/Buttons/Size/Caption": {
            "title": "$:/language/Buttons/Size/Caption",
            "text": "image size"
        },
        "$:/language/Buttons/Size/Caption/Height": {
            "title": "$:/language/Buttons/Size/Caption/Height",
            "text": "Height:"
        },
        "$:/language/Buttons/Size/Caption/Resize": {
            "title": "$:/language/Buttons/Size/Caption/Resize",
            "text": "Resize image"
        },
        "$:/language/Buttons/Size/Caption/Width": {
            "title": "$:/language/Buttons/Size/Caption/Width",
            "text": "Width:"
        },
        "$:/language/Buttons/Size/Hint": {
            "title": "$:/language/Buttons/Size/Hint",
            "text": "Set image size"
        },
        "$:/language/Buttons/Stamp/Caption": {
            "title": "$:/language/Buttons/Stamp/Caption",
            "text": "stamp"
        },
        "$:/language/Buttons/Stamp/Caption/New": {
            "title": "$:/language/Buttons/Stamp/Caption/New",
            "text": "Add your own"
        },
        "$:/language/Buttons/Stamp/Hint": {
            "title": "$:/language/Buttons/Stamp/Hint",
            "text": "Insert a preconfigured snippet of text"
        },
        "$:/language/Buttons/Stamp/New/Title": {
            "title": "$:/language/Buttons/Stamp/New/Title",
            "text": "Name as shown in menu"
        },
        "$:/language/Buttons/Stamp/New/Text": {
            "title": "$:/language/Buttons/Stamp/New/Text",
            "text": "Text of snippet. (Remember to add a descriptive title in the caption field)."
        },
        "$:/language/Buttons/Strikethrough/Caption": {
            "title": "$:/language/Buttons/Strikethrough/Caption",
            "text": "strikethrough"
        },
        "$:/language/Buttons/Strikethrough/Hint": {
            "title": "$:/language/Buttons/Strikethrough/Hint",
            "text": "Apply strikethrough formatting to selection"
        },
        "$:/language/Buttons/Subscript/Caption": {
            "title": "$:/language/Buttons/Subscript/Caption",
            "text": "subscript"
        },
        "$:/language/Buttons/Subscript/Hint": {
            "title": "$:/language/Buttons/Subscript/Hint",
            "text": "Apply subscript formatting to selection"
        },
        "$:/language/Buttons/Superscript/Caption": {
            "title": "$:/language/Buttons/Superscript/Caption",
            "text": "superscript"
        },
        "$:/language/Buttons/Superscript/Hint": {
            "title": "$:/language/Buttons/Superscript/Hint",
            "text": "Apply superscript formatting to selection"
        },
        "$:/language/Buttons/Underline/Caption": {
            "title": "$:/language/Buttons/Underline/Caption",
            "text": "underline"
        },
        "$:/language/Buttons/Underline/Hint": {
            "title": "$:/language/Buttons/Underline/Hint",
            "text": "Apply underline formatting to selection"
        },
        "$:/language/ControlPanel/Advanced/Caption": {
            "title": "$:/language/ControlPanel/Advanced/Caption",
            "text": "Advanced"
        },
        "$:/language/ControlPanel/Advanced/Hint": {
            "title": "$:/language/ControlPanel/Advanced/Hint",
            "text": "Internal information about this TiddlyWiki"
        },
        "$:/language/ControlPanel/Appearance/Caption": {
            "title": "$:/language/ControlPanel/Appearance/Caption",
            "text": "Appearance"
        },
        "$:/language/ControlPanel/Appearance/Hint": {
            "title": "$:/language/ControlPanel/Appearance/Hint",
            "text": "Ways to customise the appearance of your TiddlyWiki."
        },
        "$:/language/ControlPanel/Basics/AnimDuration/Prompt": {
            "title": "$:/language/ControlPanel/Basics/AnimDuration/Prompt",
            "text": "Animation duration:"
        },
        "$:/language/ControlPanel/Basics/Caption": {
            "title": "$:/language/ControlPanel/Basics/Caption",
            "text": "Basics"
        },
        "$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint": {
            "title": "$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint",
            "text": "Use &#91;&#91;double square brackets&#93;&#93; for titles with spaces. Or you can choose to <$button set=\"$:/DefaultTiddlers\" setTo=\"[list[$:/StoryList]]\">retain story ordering</$button>"
        },
        "$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt",
            "text": "Default tiddlers:"
        },
        "$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint": {
            "title": "$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint",
            "text": "Choose which tiddlers are displayed at startup:"
        },
        "$:/language/ControlPanel/Basics/Language/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Language/Prompt",
            "text": "Hello! Current language:"
        },
        "$:/language/ControlPanel/Basics/NewJournal/Title/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewJournal/Title/Prompt",
            "text": "Title of new journal tiddlers"
        },
        "$:/language/ControlPanel/Basics/NewJournal/Text/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewJournal/Text/Prompt",
            "text": "Text for new journal tiddlers"
        },
        "$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt",
            "text": "Tags for new journal tiddlers"
        },
        "$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt",
            "text": "Number of overridden shadow tiddlers:"
        },
        "$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt",
            "text": "Number of shadow tiddlers:"
        },
        "$:/language/ControlPanel/Basics/Subtitle/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Subtitle/Prompt",
            "text": "Subtitle:"
        },
        "$:/language/ControlPanel/Basics/SystemTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/SystemTiddlers/Prompt",
            "text": "Number of system tiddlers:"
        },
        "$:/language/ControlPanel/Basics/Tags/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Tags/Prompt",
            "text": "Number of tags:"
        },
        "$:/language/ControlPanel/Basics/Tiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Tiddlers/Prompt",
            "text": "Number of tiddlers:"
        },
        "$:/language/ControlPanel/Basics/Title/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Title/Prompt",
            "text": "Title of this ~TiddlyWiki:"
        },
        "$:/language/ControlPanel/Basics/Username/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Username/Prompt",
            "text": "Username for signing edits:"
        },
        "$:/language/ControlPanel/Basics/Version/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Version/Prompt",
            "text": "~TiddlyWiki version:"
        },
        "$:/language/ControlPanel/EditorTypes/Caption": {
            "title": "$:/language/ControlPanel/EditorTypes/Caption",
            "text": "Editor Types"
        },
        "$:/language/ControlPanel/EditorTypes/Editor/Caption": {
            "title": "$:/language/ControlPanel/EditorTypes/Editor/Caption",
            "text": "Editor"
        },
        "$:/language/ControlPanel/EditorTypes/Hint": {
            "title": "$:/language/ControlPanel/EditorTypes/Hint",
            "text": "These tiddlers determine which editor is used to edit specific tiddler types."
        },
        "$:/language/ControlPanel/EditorTypes/Type/Caption": {
            "title": "$:/language/ControlPanel/EditorTypes/Type/Caption",
            "text": "Type"
        },
        "$:/language/ControlPanel/Info/Caption": {
            "title": "$:/language/ControlPanel/Info/Caption",
            "text": "Info"
        },
        "$:/language/ControlPanel/Info/Hint": {
            "title": "$:/language/ControlPanel/Info/Hint",
            "text": "Information about this TiddlyWiki"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt",
            "text": "Type shortcut here"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Add/Caption": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Caption",
            "text": "add shortcut"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Caption": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Caption",
            "text": "Keyboard Shortcuts"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Hint": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Hint",
            "text": "Manage keyboard shortcut assignments"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption",
            "text": "No keyboard shortcuts assigned"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint",
            "text": "remove keyboard shortcut"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/All": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/All",
            "text": "All platforms"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac",
            "text": "Macintosh platform only"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac",
            "text": "Non-Macintosh platforms only"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux",
            "text": "Linux platform only"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux",
            "text": "Non-Linux platforms only"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows",
            "text": "Windows platform only"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows",
            "text": "Non-Windows platforms only"
        },
        "$:/language/ControlPanel/LoadedModules/Caption": {
            "title": "$:/language/ControlPanel/LoadedModules/Caption",
            "text": "Loaded Modules"
        },
        "$:/language/ControlPanel/LoadedModules/Hint": {
            "title": "$:/language/ControlPanel/LoadedModules/Hint",
            "text": "These are the currently loaded tiddler modules linked to their source tiddlers. Any italicised modules lack a source tiddler, typically because they were setup during the boot process."
        },
        "$:/language/ControlPanel/Palette/Caption": {
            "title": "$:/language/ControlPanel/Palette/Caption",
            "text": "Palette"
        },
        "$:/language/ControlPanel/Palette/Editor/Clone/Caption": {
            "title": "$:/language/ControlPanel/Palette/Editor/Clone/Caption",
            "text": "clone"
        },
        "$:/language/ControlPanel/Palette/Editor/Clone/Prompt": {
            "title": "$:/language/ControlPanel/Palette/Editor/Clone/Prompt",
            "text": "It is recommended that you clone this shadow palette before editing it"
        },
        "$:/language/ControlPanel/Palette/Editor/Prompt/Modified": {
            "title": "$:/language/ControlPanel/Palette/Editor/Prompt/Modified",
            "text": "This shadow palette has been modified"
        },
        "$:/language/ControlPanel/Palette/Editor/Prompt": {
            "title": "$:/language/ControlPanel/Palette/Editor/Prompt",
            "text": "Editing"
        },
        "$:/language/ControlPanel/Palette/Editor/Reset/Caption": {
            "title": "$:/language/ControlPanel/Palette/Editor/Reset/Caption",
            "text": "reset"
        },
        "$:/language/ControlPanel/Palette/HideEditor/Caption": {
            "title": "$:/language/ControlPanel/Palette/HideEditor/Caption",
            "text": "hide editor"
        },
        "$:/language/ControlPanel/Palette/Prompt": {
            "title": "$:/language/ControlPanel/Palette/Prompt",
            "text": "Current palette:"
        },
        "$:/language/ControlPanel/Palette/ShowEditor/Caption": {
            "title": "$:/language/ControlPanel/Palette/ShowEditor/Caption",
            "text": "show editor"
        },
        "$:/language/ControlPanel/Parsing/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Caption",
            "text": "Parsing"
        },
        "$:/language/ControlPanel/Parsing/Hint": {
            "title": "$:/language/ControlPanel/Parsing/Hint",
            "text": "Here you can globally disable/enable wiki parser rules. For changes to take effect, save and reload your wiki. Disabling certain parser rules can prevent <$text text=\"TiddlyWiki\"/> from functioning correctly. Use [[safe mode|http://tiddlywiki.com/#SafeMode]] to restore normal operation."
        },
        "$:/language/ControlPanel/Parsing/Block/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Block/Caption",
            "text": "Block Parse Rules"
        },
        "$:/language/ControlPanel/Parsing/Inline/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Inline/Caption",
            "text": "Inline Parse Rules"
        },
        "$:/language/ControlPanel/Parsing/Pragma/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Pragma/Caption",
            "text": "Pragma Parse Rules"
        },
        "$:/language/ControlPanel/Plugins/Add/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Add/Caption",
            "text": "Get more plugins"
        },
        "$:/language/ControlPanel/Plugins/Add/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Add/Hint",
            "text": "Install plugins from the official library"
        },
        "$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint": {
            "title": "$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint",
            "text": "This plugin is already installed at version <$text text=<<installedVersion>>/>"
        },
        "$:/language/ControlPanel/Plugins/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Caption",
            "text": "Plugins"
        },
        "$:/language/ControlPanel/Plugins/Disable/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Disable/Caption",
            "text": "disable"
        },
        "$:/language/ControlPanel/Plugins/Disable/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Disable/Hint",
            "text": "Disable this plugin when reloading page"
        },
        "$:/language/ControlPanel/Plugins/Disabled/Status": {
            "title": "$:/language/ControlPanel/Plugins/Disabled/Status",
            "text": "(disabled)"
        },
        "$:/language/ControlPanel/Plugins/Empty/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Empty/Hint",
            "text": "None"
        },
        "$:/language/ControlPanel/Plugins/Enable/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Enable/Caption",
            "text": "enable"
        },
        "$:/language/ControlPanel/Plugins/Enable/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Enable/Hint",
            "text": "Enable this plugin when reloading page"
        },
        "$:/language/ControlPanel/Plugins/Install/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Install/Caption",
            "text": "install"
        },
        "$:/language/ControlPanel/Plugins/Installed/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Installed/Hint",
            "text": "Currently installed plugins:"
        },
        "$:/language/ControlPanel/Plugins/Languages/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Languages/Caption",
            "text": "Languages"
        },
        "$:/language/ControlPanel/Plugins/Languages/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Languages/Hint",
            "text": "Language pack plugins"
        },
        "$:/language/ControlPanel/Plugins/NoInfoFound/Hint": {
            "title": "$:/language/ControlPanel/Plugins/NoInfoFound/Hint",
            "text": "No ''\"<$text text=<<currentTab>>/>\"'' found"
        },
        "$:/language/ControlPanel/Plugins/NoInformation/Hint": {
            "title": "$:/language/ControlPanel/Plugins/NoInformation/Hint",
            "text": "No information provided"
        },
        "$:/language/ControlPanel/Plugins/NotInstalled/Hint": {
            "title": "$:/language/ControlPanel/Plugins/NotInstalled/Hint",
            "text": "This plugin is not currently installed"
        },
        "$:/language/ControlPanel/Plugins/OpenPluginLibrary": {
            "title": "$:/language/ControlPanel/Plugins/OpenPluginLibrary",
            "text": "open plugin library"
        },
        "$:/language/ControlPanel/Plugins/ClosePluginLibrary": {
            "title": "$:/language/ControlPanel/Plugins/ClosePluginLibrary",
            "text": "close plugin library"
        },
        "$:/language/ControlPanel/Plugins/Plugins/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Plugins/Caption",
            "text": "Plugins"
        },
        "$:/language/ControlPanel/Plugins/Plugins/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Plugins/Hint",
            "text": "Plugins"
        },
        "$:/language/ControlPanel/Plugins/Reinstall/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Reinstall/Caption",
            "text": "reinstall"
        },
        "$:/language/ControlPanel/Plugins/Themes/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Themes/Caption",
            "text": "Themes"
        },
        "$:/language/ControlPanel/Plugins/Themes/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Themes/Hint",
            "text": "Theme plugins"
        },
        "$:/language/ControlPanel/Saving/Caption": {
            "title": "$:/language/ControlPanel/Saving/Caption",
            "text": "Saving"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description",
            "text": "Permit automatic saving for the download saver"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint",
            "text": "Enable Autosave for Download Saver"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/Caption": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/Caption",
            "text": "Download Saver"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/Hint": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/Hint",
            "text": "These settings apply to the HTML5-compatible download saver"
        },
        "$:/language/ControlPanel/Saving/General/Caption": {
            "title": "$:/language/ControlPanel/Saving/General/Caption",
            "text": "General"
        },
        "$:/language/ControlPanel/Saving/General/Hint": {
            "title": "$:/language/ControlPanel/Saving/General/Hint",
            "text": "These settings apply to all the loaded savers"
        },
        "$:/language/ControlPanel/Saving/Hint": {
            "title": "$:/language/ControlPanel/Saving/Hint",
            "text": "Settings used for saving the entire TiddlyWiki as a single file via a saver module"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading",
            "text": "Advanced Settings"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/BackupDir": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/BackupDir",
            "text": "Backup Directory"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Backups": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Backups",
            "text": "Backups"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Caption": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Caption",
            "text": "~TiddlySpot Saver"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Description": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Description",
            "text": "These settings are only used when saving to http://tiddlyspot.com or a compatible remote server"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Filename": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Filename",
            "text": "Upload Filename"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Heading": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Heading",
            "text": "~TiddlySpot"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Hint": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Hint",
            "text": "//The server URL defaults to `http://<wikiname>.tiddlyspot.com/store.cgi` and can be changed to use a custom server address, e.g. `http://example.com/store.php`.//"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Password": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Password",
            "text": "Password"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/ServerURL": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/ServerURL",
            "text": "Server URL"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/UploadDir": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/UploadDir",
            "text": "Upload Directory"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/UserName": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/UserName",
            "text": "Wiki Name"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Caption": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Caption",
            "text": "Autosave"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Disabled/Description": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Disabled/Description",
            "text": "Do not save changes automatically"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Enabled/Description": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Enabled/Description",
            "text": "Save changes automatically"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Hint": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Hint",
            "text": "Attempt to automatically save changes during editing when using a supporting saver"
        },
        "$:/language/ControlPanel/Settings/CamelCase/Caption": {
            "title": "$:/language/ControlPanel/Settings/CamelCase/Caption",
            "text": "Camel Case Wiki Links"
        },
        "$:/language/ControlPanel/Settings/CamelCase/Hint": {
            "title": "$:/language/ControlPanel/Settings/CamelCase/Hint",
            "text": "You can globally disable automatic linking of ~CamelCase phrases. Requires reload to take effect"
        },
        "$:/language/ControlPanel/Settings/CamelCase/Description": {
            "title": "$:/language/ControlPanel/Settings/CamelCase/Description",
            "text": "Enable automatic ~CamelCase linking"
        },
        "$:/language/ControlPanel/Settings/Caption": {
            "title": "$:/language/ControlPanel/Settings/Caption",
            "text": "Settings"
        },
        "$:/language/ControlPanel/Settings/EditorToolbar/Caption": {
            "title": "$:/language/ControlPanel/Settings/EditorToolbar/Caption",
            "text": "Editor Toolbar"
        },
        "$:/language/ControlPanel/Settings/EditorToolbar/Hint": {
            "title": "$:/language/ControlPanel/Settings/EditorToolbar/Hint",
            "text": "Enable or disable the editor toolbar:"
        },
        "$:/language/ControlPanel/Settings/EditorToolbar/Description": {
            "title": "$:/language/ControlPanel/Settings/EditorToolbar/Description",
            "text": "Show editor toolbar"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Caption": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Caption",
            "text": "Tiddler Info Panel Mode"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Hint": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Hint",
            "text": "Control when the tiddler info panel closes:"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description",
            "text": "Tiddler info panel closes automatically"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description",
            "text": "Tiddler info panel stays open until explicitly closed"
        },
        "$:/language/ControlPanel/Settings/Hint": {
            "title": "$:/language/ControlPanel/Settings/Hint",
            "text": "These settings let you customise the behaviour of TiddlyWiki."
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Caption": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Caption",
            "text": "Navigation Address Bar"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Hint": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Hint",
            "text": "Behaviour of the browser address bar when navigating to a tiddler:"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description",
            "text": "Do not update the address bar"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description",
            "text": "Include the target tiddler"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description",
            "text": "Include the target tiddler and the current story sequence"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/Caption": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/Caption",
            "text": "Navigation History"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/Hint": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/Hint",
            "text": "Update browser history when navigating to a tiddler:"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/No/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/No/Description",
            "text": "Do not update history"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description",
            "text": "Update history"
        },
        "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption": {
            "title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption",
            "text": "Performance Instrumentation"
        },
        "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint": {
            "title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint",
            "text": "Displays performance statistics in the browser developer console. Requires reload to take effect"
        },
        "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description": {
            "title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description",
            "text": "Enable performance instrumentation"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption",
            "text": "Toolbar Button Style"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint",
            "text": "Choose the style for toolbar buttons:"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless",
            "text": "Borderless"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed",
            "text": "Boxed"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded",
            "text": "Rounded"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Caption": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Caption",
            "text": "Toolbar Buttons"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Hint": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Hint",
            "text": "Default toolbar button appearance:"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description",
            "text": "Include icon"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description",
            "text": "Include text"
        },
        "$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption": {
            "title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption",
            "text": "Default Sidebar Tab"
        },
        "$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint": {
            "title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint",
            "text": "Specify which sidebar tab is displayed by default"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/Caption": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/Caption",
            "text": "Tiddler Opening Behaviour"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint",
            "text": "Navigation from //within// the story river"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint",
            "text": "Navigation from //outside// the story river"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove",
            "text": "Open above the current tiddler"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow",
            "text": "Open below the current tiddler"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop",
            "text": "Open at the top of the story river"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom",
            "text": "Open at the bottom of the story river"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/Caption": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/Caption",
            "text": "Tiddler Titles"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/Hint": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/Hint",
            "text": "Optionally display tiddler titles as links"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/No/Description": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/No/Description",
            "text": "Do not display tiddler titles as links"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/Yes/Description": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/Yes/Description",
            "text": "Display tiddler titles as links"
        },
        "$:/language/ControlPanel/Settings/MissingLinks/Caption": {
            "title": "$:/language/ControlPanel/Settings/MissingLinks/Caption",
            "text": "Wiki Links"
        },
        "$:/language/ControlPanel/Settings/MissingLinks/Hint": {
            "title": "$:/language/ControlPanel/Settings/MissingLinks/Hint",
            "text": "Choose whether to link to tiddlers that do not exist yet"
        },
        "$:/language/ControlPanel/Settings/MissingLinks/Description": {
            "title": "$:/language/ControlPanel/Settings/MissingLinks/Description",
            "text": "Enable links to missing tiddlers"
        },
        "$:/language/ControlPanel/StoryView/Caption": {
            "title": "$:/language/ControlPanel/StoryView/Caption",
            "text": "Story View"
        },
        "$:/language/ControlPanel/StoryView/Prompt": {
            "title": "$:/language/ControlPanel/StoryView/Prompt",
            "text": "Current view:"
        },
        "$:/language/ControlPanel/Theme/Caption": {
            "title": "$:/language/ControlPanel/Theme/Caption",
            "text": "Theme"
        },
        "$:/language/ControlPanel/Theme/Prompt": {
            "title": "$:/language/ControlPanel/Theme/Prompt",
            "text": "Current theme:"
        },
        "$:/language/ControlPanel/TiddlerFields/Caption": {
            "title": "$:/language/ControlPanel/TiddlerFields/Caption",
            "text": "Tiddler Fields"
        },
        "$:/language/ControlPanel/TiddlerFields/Hint": {
            "title": "$:/language/ControlPanel/TiddlerFields/Hint",
            "text": "This is the full set of TiddlerFields in use in this wiki (including system tiddlers but excluding shadow tiddlers)."
        },
        "$:/language/ControlPanel/Toolbars/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/Caption",
            "text": "Toolbars"
        },
        "$:/language/ControlPanel/Toolbars/EditToolbar/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/EditToolbar/Caption",
            "text": "Edit Toolbar"
        },
        "$:/language/ControlPanel/Toolbars/EditToolbar/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/EditToolbar/Hint",
            "text": "Choose which buttons are displayed for tiddlers in edit mode. Drag and drop to change the ordering"
        },
        "$:/language/ControlPanel/Toolbars/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/Hint",
            "text": "Select which toolbar buttons are displayed"
        },
        "$:/language/ControlPanel/Toolbars/PageControls/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/PageControls/Caption",
            "text": "Page Toolbar"
        },
        "$:/language/ControlPanel/Toolbars/PageControls/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/PageControls/Hint",
            "text": "Choose which buttons are displayed on the main page toolbar. Drag and drop to change the ordering"
        },
        "$:/language/ControlPanel/Toolbars/EditorToolbar/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Caption",
            "text": "Editor Toolbar"
        },
        "$:/language/ControlPanel/Toolbars/EditorToolbar/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Hint",
            "text": "Choose which buttons are displayed in the editor toolbar. Note that some buttons will only appear when editing tiddlers of a certain type. Drag and drop to change the ordering"
        },
        "$:/language/ControlPanel/Toolbars/ViewToolbar/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Caption",
            "text": "View Toolbar"
        },
        "$:/language/ControlPanel/Toolbars/ViewToolbar/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Hint",
            "text": "Choose which buttons are displayed for tiddlers in view mode. Drag and drop to change the ordering"
        },
        "$:/language/ControlPanel/Tools/Download/Full/Caption": {
            "title": "$:/language/ControlPanel/Tools/Download/Full/Caption",
            "text": "Download full wiki"
        },
        "$:/language/Date/DaySuffix/1": {
            "title": "$:/language/Date/DaySuffix/1",
            "text": "st"
        },
        "$:/language/Date/DaySuffix/2": {
            "title": "$:/language/Date/DaySuffix/2",
            "text": "nd"
        },
        "$:/language/Date/DaySuffix/3": {
            "title": "$:/language/Date/DaySuffix/3",
            "text": "rd"
        },
        "$:/language/Date/DaySuffix/4": {
            "title": "$:/language/Date/DaySuffix/4",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/5": {
            "title": "$:/language/Date/DaySuffix/5",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/6": {
            "title": "$:/language/Date/DaySuffix/6",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/7": {
            "title": "$:/language/Date/DaySuffix/7",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/8": {
            "title": "$:/language/Date/DaySuffix/8",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/9": {
            "title": "$:/language/Date/DaySuffix/9",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/10": {
            "title": "$:/language/Date/DaySuffix/10",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/11": {
            "title": "$:/language/Date/DaySuffix/11",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/12": {
            "title": "$:/language/Date/DaySuffix/12",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/13": {
            "title": "$:/language/Date/DaySuffix/13",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/14": {
            "title": "$:/language/Date/DaySuffix/14",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/15": {
            "title": "$:/language/Date/DaySuffix/15",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/16": {
            "title": "$:/language/Date/DaySuffix/16",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/17": {
            "title": "$:/language/Date/DaySuffix/17",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/18": {
            "title": "$:/language/Date/DaySuffix/18",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/19": {
            "title": "$:/language/Date/DaySuffix/19",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/20": {
            "title": "$:/language/Date/DaySuffix/20",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/21": {
            "title": "$:/language/Date/DaySuffix/21",
            "text": "st"
        },
        "$:/language/Date/DaySuffix/22": {
            "title": "$:/language/Date/DaySuffix/22",
            "text": "nd"
        },
        "$:/language/Date/DaySuffix/23": {
            "title": "$:/language/Date/DaySuffix/23",
            "text": "rd"
        },
        "$:/language/Date/DaySuffix/24": {
            "title": "$:/language/Date/DaySuffix/24",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/25": {
            "title": "$:/language/Date/DaySuffix/25",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/26": {
            "title": "$:/language/Date/DaySuffix/26",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/27": {
            "title": "$:/language/Date/DaySuffix/27",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/28": {
            "title": "$:/language/Date/DaySuffix/28",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/29": {
            "title": "$:/language/Date/DaySuffix/29",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/30": {
            "title": "$:/language/Date/DaySuffix/30",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/31": {
            "title": "$:/language/Date/DaySuffix/31",
            "text": "st"
        },
        "$:/language/Date/Long/Day/0": {
            "title": "$:/language/Date/Long/Day/0",
            "text": "Sunday"
        },
        "$:/language/Date/Long/Day/1": {
            "title": "$:/language/Date/Long/Day/1",
            "text": "Monday"
        },
        "$:/language/Date/Long/Day/2": {
            "title": "$:/language/Date/Long/Day/2",
            "text": "Tuesday"
        },
        "$:/language/Date/Long/Day/3": {
            "title": "$:/language/Date/Long/Day/3",
            "text": "Wednesday"
        },
        "$:/language/Date/Long/Day/4": {
            "title": "$:/language/Date/Long/Day/4",
            "text": "Thursday"
        },
        "$:/language/Date/Long/Day/5": {
            "title": "$:/language/Date/Long/Day/5",
            "text": "Friday"
        },
        "$:/language/Date/Long/Day/6": {
            "title": "$:/language/Date/Long/Day/6",
            "text": "Saturday"
        },
        "$:/language/Date/Long/Month/1": {
            "title": "$:/language/Date/Long/Month/1",
            "text": "January"
        },
        "$:/language/Date/Long/Month/2": {
            "title": "$:/language/Date/Long/Month/2",
            "text": "February"
        },
        "$:/language/Date/Long/Month/3": {
            "title": "$:/language/Date/Long/Month/3",
            "text": "March"
        },
        "$:/language/Date/Long/Month/4": {
            "title": "$:/language/Date/Long/Month/4",
            "text": "April"
        },
        "$:/language/Date/Long/Month/5": {
            "title": "$:/language/Date/Long/Month/5",
            "text": "May"
        },
        "$:/language/Date/Long/Month/6": {
            "title": "$:/language/Date/Long/Month/6",
            "text": "June"
        },
        "$:/language/Date/Long/Month/7": {
            "title": "$:/language/Date/Long/Month/7",
            "text": "July"
        },
        "$:/language/Date/Long/Month/8": {
            "title": "$:/language/Date/Long/Month/8",
            "text": "August"
        },
        "$:/language/Date/Long/Month/9": {
            "title": "$:/language/Date/Long/Month/9",
            "text": "September"
        },
        "$:/language/Date/Long/Month/10": {
            "title": "$:/language/Date/Long/Month/10",
            "text": "October"
        },
        "$:/language/Date/Long/Month/11": {
            "title": "$:/language/Date/Long/Month/11",
            "text": "November"
        },
        "$:/language/Date/Long/Month/12": {
            "title": "$:/language/Date/Long/Month/12",
            "text": "December"
        },
        "$:/language/Date/Period/am": {
            "title": "$:/language/Date/Period/am",
            "text": "am"
        },
        "$:/language/Date/Period/pm": {
            "title": "$:/language/Date/Period/pm",
            "text": "pm"
        },
        "$:/language/Date/Short/Day/0": {
            "title": "$:/language/Date/Short/Day/0",
            "text": "Sun"
        },
        "$:/language/Date/Short/Day/1": {
            "title": "$:/language/Date/Short/Day/1",
            "text": "Mon"
        },
        "$:/language/Date/Short/Day/2": {
            "title": "$:/language/Date/Short/Day/2",
            "text": "Tue"
        },
        "$:/language/Date/Short/Day/3": {
            "title": "$:/language/Date/Short/Day/3",
            "text": "Wed"
        },
        "$:/language/Date/Short/Day/4": {
            "title": "$:/language/Date/Short/Day/4",
            "text": "Thu"
        },
        "$:/language/Date/Short/Day/5": {
            "title": "$:/language/Date/Short/Day/5",
            "text": "Fri"
        },
        "$:/language/Date/Short/Day/6": {
            "title": "$:/language/Date/Short/Day/6",
            "text": "Sat"
        },
        "$:/language/Date/Short/Month/1": {
            "title": "$:/language/Date/Short/Month/1",
            "text": "Jan"
        },
        "$:/language/Date/Short/Month/2": {
            "title": "$:/language/Date/Short/Month/2",
            "text": "Feb"
        },
        "$:/language/Date/Short/Month/3": {
            "title": "$:/language/Date/Short/Month/3",
            "text": "Mar"
        },
        "$:/language/Date/Short/Month/4": {
            "title": "$:/language/Date/Short/Month/4",
            "text": "Apr"
        },
        "$:/language/Date/Short/Month/5": {
            "title": "$:/language/Date/Short/Month/5",
            "text": "May"
        },
        "$:/language/Date/Short/Month/6": {
            "title": "$:/language/Date/Short/Month/6",
            "text": "Jun"
        },
        "$:/language/Date/Short/Month/7": {
            "title": "$:/language/Date/Short/Month/7",
            "text": "Jul"
        },
        "$:/language/Date/Short/Month/8": {
            "title": "$:/language/Date/Short/Month/8",
            "text": "Aug"
        },
        "$:/language/Date/Short/Month/9": {
            "title": "$:/language/Date/Short/Month/9",
            "text": "Sep"
        },
        "$:/language/Date/Short/Month/10": {
            "title": "$:/language/Date/Short/Month/10",
            "text": "Oct"
        },
        "$:/language/Date/Short/Month/11": {
            "title": "$:/language/Date/Short/Month/11",
            "text": "Nov"
        },
        "$:/language/Date/Short/Month/12": {
            "title": "$:/language/Date/Short/Month/12",
            "text": "Dec"
        },
        "$:/language/RelativeDate/Future/Days": {
            "title": "$:/language/RelativeDate/Future/Days",
            "text": "<<period>> days from now"
        },
        "$:/language/RelativeDate/Future/Hours": {
            "title": "$:/language/RelativeDate/Future/Hours",
            "text": "<<period>> hours from now"
        },
        "$:/language/RelativeDate/Future/Minutes": {
            "title": "$:/language/RelativeDate/Future/Minutes",
            "text": "<<period>> minutes from now"
        },
        "$:/language/RelativeDate/Future/Months": {
            "title": "$:/language/RelativeDate/Future/Months",
            "text": "<<period>> months from now"
        },
        "$:/language/RelativeDate/Future/Second": {
            "title": "$:/language/RelativeDate/Future/Second",
            "text": "1 second from now"
        },
        "$:/language/RelativeDate/Future/Seconds": {
            "title": "$:/language/RelativeDate/Future/Seconds",
            "text": "<<period>> seconds from now"
        },
        "$:/language/RelativeDate/Future/Years": {
            "title": "$:/language/RelativeDate/Future/Years",
            "text": "<<period>> years from now"
        },
        "$:/language/RelativeDate/Past/Days": {
            "title": "$:/language/RelativeDate/Past/Days",
            "text": "<<period>> days ago"
        },
        "$:/language/RelativeDate/Past/Hours": {
            "title": "$:/language/RelativeDate/Past/Hours",
            "text": "<<period>> hours ago"
        },
        "$:/language/RelativeDate/Past/Minutes": {
            "title": "$:/language/RelativeDate/Past/Minutes",
            "text": "<<period>> minutes ago"
        },
        "$:/language/RelativeDate/Past/Months": {
            "title": "$:/language/RelativeDate/Past/Months",
            "text": "<<period>> months ago"
        },
        "$:/language/RelativeDate/Past/Second": {
            "title": "$:/language/RelativeDate/Past/Second",
            "text": "1 second ago"
        },
        "$:/language/RelativeDate/Past/Seconds": {
            "title": "$:/language/RelativeDate/Past/Seconds",
            "text": "<<period>> seconds ago"
        },
        "$:/language/RelativeDate/Past/Years": {
            "title": "$:/language/RelativeDate/Past/Years",
            "text": "<<period>> years ago"
        },
        "$:/language/Docs/ModuleTypes/allfilteroperator": {
            "title": "$:/language/Docs/ModuleTypes/allfilteroperator",
            "text": "A sub-operator for the ''all'' filter operator."
        },
        "$:/language/Docs/ModuleTypes/animation": {
            "title": "$:/language/Docs/ModuleTypes/animation",
            "text": "Animations that may be used with the RevealWidget."
        },
        "$:/language/Docs/ModuleTypes/bitmapeditoroperation": {
            "title": "$:/language/Docs/ModuleTypes/bitmapeditoroperation",
            "text": "A bitmap editor toolbar operation."
        },
        "$:/language/Docs/ModuleTypes/command": {
            "title": "$:/language/Docs/ModuleTypes/command",
            "text": "Commands that can be executed under Node.js."
        },
        "$:/language/Docs/ModuleTypes/config": {
            "title": "$:/language/Docs/ModuleTypes/config",
            "text": "Data to be inserted into `$tw.config`."
        },
        "$:/language/Docs/ModuleTypes/filteroperator": {
            "title": "$:/language/Docs/ModuleTypes/filteroperator",
            "text": "Individual filter operator methods."
        },
        "$:/language/Docs/ModuleTypes/global": {
            "title": "$:/language/Docs/ModuleTypes/global",
            "text": "Global data to be inserted into `$tw`."
        },
        "$:/language/Docs/ModuleTypes/info": {
            "title": "$:/language/Docs/ModuleTypes/info",
            "text": "Publishes system information via the [[$:/temp/info-plugin]] pseudo-plugin."
        },
        "$:/language/Docs/ModuleTypes/isfilteroperator": {
            "title": "$:/language/Docs/ModuleTypes/isfilteroperator",
            "text": "Operands for the ''is'' filter operator."
        },
        "$:/language/Docs/ModuleTypes/library": {
            "title": "$:/language/Docs/ModuleTypes/library",
            "text": "Generic module type for general purpose JavaScript modules."
        },
        "$:/language/Docs/ModuleTypes/macro": {
            "title": "$:/language/Docs/ModuleTypes/macro",
            "text": "JavaScript macro definitions."
        },
        "$:/language/Docs/ModuleTypes/parser": {
            "title": "$:/language/Docs/ModuleTypes/parser",
            "text": "Parsers for different content types."
        },
        "$:/language/Docs/ModuleTypes/saver": {
            "title": "$:/language/Docs/ModuleTypes/saver",
            "text": "Savers handle different methods for saving files from the browser."
        },
        "$:/language/Docs/ModuleTypes/startup": {
            "title": "$:/language/Docs/ModuleTypes/startup",
            "text": "Startup functions."
        },
        "$:/language/Docs/ModuleTypes/storyview": {
            "title": "$:/language/Docs/ModuleTypes/storyview",
            "text": "Story views customise the animation and behaviour of list widgets."
        },
        "$:/language/Docs/ModuleTypes/texteditoroperation": {
            "title": "$:/language/Docs/ModuleTypes/texteditoroperation",
            "text": "A text editor toolbar operation."
        },
        "$:/language/Docs/ModuleTypes/tiddlerdeserializer": {
            "title": "$:/language/Docs/ModuleTypes/tiddlerdeserializer",
            "text": "Converts different content types into tiddlers."
        },
        "$:/language/Docs/ModuleTypes/tiddlerfield": {
            "title": "$:/language/Docs/ModuleTypes/tiddlerfield",
            "text": "Defines the behaviour of an individual tiddler field."
        },
        "$:/language/Docs/ModuleTypes/tiddlermethod": {
            "title": "$:/language/Docs/ModuleTypes/tiddlermethod",
            "text": "Adds methods to the `$tw.Tiddler` prototype."
        },
        "$:/language/Docs/ModuleTypes/upgrader": {
            "title": "$:/language/Docs/ModuleTypes/upgrader",
            "text": "Applies upgrade processing to tiddlers during an upgrade/import."
        },
        "$:/language/Docs/ModuleTypes/utils": {
            "title": "$:/language/Docs/ModuleTypes/utils",
            "text": "Adds methods to `$tw.utils`."
        },
        "$:/language/Docs/ModuleTypes/utils-node": {
            "title": "$:/language/Docs/ModuleTypes/utils-node",
            "text": "Adds Node.js-specific methods to `$tw.utils`."
        },
        "$:/language/Docs/ModuleTypes/widget": {
            "title": "$:/language/Docs/ModuleTypes/widget",
            "text": "Widgets encapsulate DOM rendering and refreshing."
        },
        "$:/language/Docs/ModuleTypes/wikimethod": {
            "title": "$:/language/Docs/ModuleTypes/wikimethod",
            "text": "Adds methods to `$tw.Wiki`."
        },
        "$:/language/Docs/ModuleTypes/wikirule": {
            "title": "$:/language/Docs/ModuleTypes/wikirule",
            "text": "Individual parser rules for the main WikiText parser."
        },
        "$:/language/Docs/PaletteColours/alert-background": {
            "title": "$:/language/Docs/PaletteColours/alert-background",
            "text": "Alert background"
        },
        "$:/language/Docs/PaletteColours/alert-border": {
            "title": "$:/language/Docs/PaletteColours/alert-border",
            "text": "Alert border"
        },
        "$:/language/Docs/PaletteColours/alert-highlight": {
            "title": "$:/language/Docs/PaletteColours/alert-highlight",
            "text": "Alert highlight"
        },
        "$:/language/Docs/PaletteColours/alert-muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/alert-muted-foreground",
            "text": "Alert muted foreground"
        },
        "$:/language/Docs/PaletteColours/background": {
            "title": "$:/language/Docs/PaletteColours/background",
            "text": "General background"
        },
        "$:/language/Docs/PaletteColours/blockquote-bar": {
            "title": "$:/language/Docs/PaletteColours/blockquote-bar",
            "text": "Blockquote bar"
        },
        "$:/language/Docs/PaletteColours/button-background": {
            "title": "$:/language/Docs/PaletteColours/button-background",
            "text": "Default button background"
        },
        "$:/language/Docs/PaletteColours/button-border": {
            "title": "$:/language/Docs/PaletteColours/button-border",
            "text": "Default button border"
        },
        "$:/language/Docs/PaletteColours/button-foreground": {
            "title": "$:/language/Docs/PaletteColours/button-foreground",
            "text": "Default button foreground"
        },
        "$:/language/Docs/PaletteColours/dirty-indicator": {
            "title": "$:/language/Docs/PaletteColours/dirty-indicator",
            "text": "Unsaved changes indicator"
        },
        "$:/language/Docs/PaletteColours/code-background": {
            "title": "$:/language/Docs/PaletteColours/code-background",
            "text": "Code background"
        },
        "$:/language/Docs/PaletteColours/code-border": {
            "title": "$:/language/Docs/PaletteColours/code-border",
            "text": "Code border"
        },
        "$:/language/Docs/PaletteColours/code-foreground": {
            "title": "$:/language/Docs/PaletteColours/code-foreground",
            "text": "Code foreground"
        },
        "$:/language/Docs/PaletteColours/download-background": {
            "title": "$:/language/Docs/PaletteColours/download-background",
            "text": "Download button background"
        },
        "$:/language/Docs/PaletteColours/download-foreground": {
            "title": "$:/language/Docs/PaletteColours/download-foreground",
            "text": "Download button foreground"
        },
        "$:/language/Docs/PaletteColours/dragger-background": {
            "title": "$:/language/Docs/PaletteColours/dragger-background",
            "text": "Dragger background"
        },
        "$:/language/Docs/PaletteColours/dragger-foreground": {
            "title": "$:/language/Docs/PaletteColours/dragger-foreground",
            "text": "Dragger foreground"
        },
        "$:/language/Docs/PaletteColours/dropdown-background": {
            "title": "$:/language/Docs/PaletteColours/dropdown-background",
            "text": "Dropdown background"
        },
        "$:/language/Docs/PaletteColours/dropdown-border": {
            "title": "$:/language/Docs/PaletteColours/dropdown-border",
            "text": "Dropdown border"
        },
        "$:/language/Docs/PaletteColours/dropdown-tab-background-selected": {
            "title": "$:/language/Docs/PaletteColours/dropdown-tab-background-selected",
            "text": "Dropdown tab background for selected tabs"
        },
        "$:/language/Docs/PaletteColours/dropdown-tab-background": {
            "title": "$:/language/Docs/PaletteColours/dropdown-tab-background",
            "text": "Dropdown tab background"
        },
        "$:/language/Docs/PaletteColours/dropzone-background": {
            "title": "$:/language/Docs/PaletteColours/dropzone-background",
            "text": "Dropzone background"
        },
        "$:/language/Docs/PaletteColours/external-link-background-hover": {
            "title": "$:/language/Docs/PaletteColours/external-link-background-hover",
            "text": "External link background hover"
        },
        "$:/language/Docs/PaletteColours/external-link-background-visited": {
            "title": "$:/language/Docs/PaletteColours/external-link-background-visited",
            "text": "External link background visited"
        },
        "$:/language/Docs/PaletteColours/external-link-background": {
            "title": "$:/language/Docs/PaletteColours/external-link-background",
            "text": "External link background"
        },
        "$:/language/Docs/PaletteColours/external-link-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/external-link-foreground-hover",
            "text": "External link foreground hover"
        },
        "$:/language/Docs/PaletteColours/external-link-foreground-visited": {
            "title": "$:/language/Docs/PaletteColours/external-link-foreground-visited",
            "text": "External link foreground visited"
        },
        "$:/language/Docs/PaletteColours/external-link-foreground": {
            "title": "$:/language/Docs/PaletteColours/external-link-foreground",
            "text": "External link foreground"
        },
        "$:/language/Docs/PaletteColours/foreground": {
            "title": "$:/language/Docs/PaletteColours/foreground",
            "text": "General foreground"
        },
        "$:/language/Docs/PaletteColours/message-background": {
            "title": "$:/language/Docs/PaletteColours/message-background",
            "text": "Message box background"
        },
        "$:/language/Docs/PaletteColours/message-border": {
            "title": "$:/language/Docs/PaletteColours/message-border",
            "text": "Message box border"
        },
        "$:/language/Docs/PaletteColours/message-foreground": {
            "title": "$:/language/Docs/PaletteColours/message-foreground",
            "text": "Message box foreground"
        },
        "$:/language/Docs/PaletteColours/modal-backdrop": {
            "title": "$:/language/Docs/PaletteColours/modal-backdrop",
            "text": "Modal backdrop"
        },
        "$:/language/Docs/PaletteColours/modal-background": {
            "title": "$:/language/Docs/PaletteColours/modal-background",
            "text": "Modal background"
        },
        "$:/language/Docs/PaletteColours/modal-border": {
            "title": "$:/language/Docs/PaletteColours/modal-border",
            "text": "Modal border"
        },
        "$:/language/Docs/PaletteColours/modal-footer-background": {
            "title": "$:/language/Docs/PaletteColours/modal-footer-background",
            "text": "Modal footer background"
        },
        "$:/language/Docs/PaletteColours/modal-footer-border": {
            "title": "$:/language/Docs/PaletteColours/modal-footer-border",
            "text": "Modal footer border"
        },
        "$:/language/Docs/PaletteColours/modal-header-border": {
            "title": "$:/language/Docs/PaletteColours/modal-header-border",
            "text": "Modal header border"
        },
        "$:/language/Docs/PaletteColours/muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/muted-foreground",
            "text": "General muted foreground"
        },
        "$:/language/Docs/PaletteColours/notification-background": {
            "title": "$:/language/Docs/PaletteColours/notification-background",
            "text": "Notification background"
        },
        "$:/language/Docs/PaletteColours/notification-border": {
            "title": "$:/language/Docs/PaletteColours/notification-border",
            "text": "Notification border"
        },
        "$:/language/Docs/PaletteColours/page-background": {
            "title": "$:/language/Docs/PaletteColours/page-background",
            "text": "Page background"
        },
        "$:/language/Docs/PaletteColours/pre-background": {
            "title": "$:/language/Docs/PaletteColours/pre-background",
            "text": "Preformatted code background"
        },
        "$:/language/Docs/PaletteColours/pre-border": {
            "title": "$:/language/Docs/PaletteColours/pre-border",
            "text": "Preformatted code border"
        },
        "$:/language/Docs/PaletteColours/primary": {
            "title": "$:/language/Docs/PaletteColours/primary",
            "text": "General primary"
        },
        "$:/language/Docs/PaletteColours/sidebar-button-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-button-foreground",
            "text": "Sidebar button foreground"
        },
        "$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover",
            "text": "Sidebar controls foreground hover"
        },
        "$:/language/Docs/PaletteColours/sidebar-controls-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground",
            "text": "Sidebar controls foreground"
        },
        "$:/language/Docs/PaletteColours/sidebar-foreground-shadow": {
            "title": "$:/language/Docs/PaletteColours/sidebar-foreground-shadow",
            "text": "Sidebar foreground shadow"
        },
        "$:/language/Docs/PaletteColours/sidebar-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-foreground",
            "text": "Sidebar foreground"
        },
        "$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover",
            "text": "Sidebar muted foreground hover"
        },
        "$:/language/Docs/PaletteColours/sidebar-muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground",
            "text": "Sidebar muted foreground"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-background-selected": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-background-selected",
            "text": "Sidebar tab background for selected tabs"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-background": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-background",
            "text": "Sidebar tab background"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-border-selected": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-border-selected",
            "text": "Sidebar tab border for selected tabs"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-border": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-border",
            "text": "Sidebar tab border"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-divider": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-divider",
            "text": "Sidebar tab divider"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected",
            "text": "Sidebar tab foreground for selected tabs"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground",
            "text": "Sidebar tab foreground"
        },
        "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover",
            "text": "Sidebar tiddler link foreground hover"
        },
        "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground",
            "text": "Sidebar tiddler link foreground"
        },
        "$:/language/Docs/PaletteColours/site-title-foreground": {
            "title": "$:/language/Docs/PaletteColours/site-title-foreground",
            "text": "Site title foreground"
        },
        "$:/language/Docs/PaletteColours/static-alert-foreground": {
            "title": "$:/language/Docs/PaletteColours/static-alert-foreground",
            "text": "Static alert foreground"
        },
        "$:/language/Docs/PaletteColours/tab-background-selected": {
            "title": "$:/language/Docs/PaletteColours/tab-background-selected",
            "text": "Tab background for selected tabs"
        },
        "$:/language/Docs/PaletteColours/tab-background": {
            "title": "$:/language/Docs/PaletteColours/tab-background",
            "text": "Tab background"
        },
        "$:/language/Docs/PaletteColours/tab-border-selected": {
            "title": "$:/language/Docs/PaletteColours/tab-border-selected",
            "text": "Tab border for selected tabs"
        },
        "$:/language/Docs/PaletteColours/tab-border": {
            "title": "$:/language/Docs/PaletteColours/tab-border",
            "text": "Tab border"
        },
        "$:/language/Docs/PaletteColours/tab-divider": {
            "title": "$:/language/Docs/PaletteColours/tab-divider",
            "text": "Tab divider"
        },
        "$:/language/Docs/PaletteColours/tab-foreground-selected": {
            "title": "$:/language/Docs/PaletteColours/tab-foreground-selected",
            "text": "Tab foreground for selected tabs"
        },
        "$:/language/Docs/PaletteColours/tab-foreground": {
            "title": "$:/language/Docs/PaletteColours/tab-foreground",
            "text": "Tab foreground"
        },
        "$:/language/Docs/PaletteColours/table-border": {
            "title": "$:/language/Docs/PaletteColours/table-border",
            "text": "Table border"
        },
        "$:/language/Docs/PaletteColours/table-footer-background": {
            "title": "$:/language/Docs/PaletteColours/table-footer-background",
            "text": "Table footer background"
        },
        "$:/language/Docs/PaletteColours/table-header-background": {
            "title": "$:/language/Docs/PaletteColours/table-header-background",
            "text": "Table header background"
        },
        "$:/language/Docs/PaletteColours/tag-background": {
            "title": "$:/language/Docs/PaletteColours/tag-background",
            "text": "Tag background"
        },
        "$:/language/Docs/PaletteColours/tag-foreground": {
            "title": "$:/language/Docs/PaletteColours/tag-foreground",
            "text": "Tag foreground"
        },
        "$:/language/Docs/PaletteColours/tiddler-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-background",
            "text": "Tiddler background"
        },
        "$:/language/Docs/PaletteColours/tiddler-border": {
            "title": "$:/language/Docs/PaletteColours/tiddler-border",
            "text": "Tiddler border"
        },
        "$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover",
            "text": "Tiddler controls foreground hover"
        },
        "$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected": {
            "title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected",
            "text": "Tiddler controls foreground for selected controls"
        },
        "$:/language/Docs/PaletteColours/tiddler-controls-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground",
            "text": "Tiddler controls foreground"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-background",
            "text": "Tiddler editor background"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-border-image": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-border-image",
            "text": "Tiddler editor border image"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-border": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-border",
            "text": "Tiddler editor border"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-fields-even": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-even",
            "text": "Tiddler editor background for even fields"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-fields-odd": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-odd",
            "text": "Tiddler editor background for odd fields"
        },
        "$:/language/Docs/PaletteColours/tiddler-info-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-info-background",
            "text": "Tiddler info panel background"
        },
        "$:/language/Docs/PaletteColours/tiddler-info-border": {
            "title": "$:/language/Docs/PaletteColours/tiddler-info-border",
            "text": "Tiddler info panel border"
        },
        "$:/language/Docs/PaletteColours/tiddler-info-tab-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-info-tab-background",
            "text": "Tiddler info panel tab background"
        },
        "$:/language/Docs/PaletteColours/tiddler-link-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-link-background",
            "text": "Tiddler link background"
        },
        "$:/language/Docs/PaletteColours/tiddler-link-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-link-foreground",
            "text": "Tiddler link foreground"
        },
        "$:/language/Docs/PaletteColours/tiddler-subtitle-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-subtitle-foreground",
            "text": "Tiddler subtitle foreground"
        },
        "$:/language/Docs/PaletteColours/tiddler-title-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-title-foreground",
            "text": "Tiddler title foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-new-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-new-button",
            "text": "Toolbar 'new tiddler' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-options-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-options-button",
            "text": "Toolbar 'options' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-save-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-save-button",
            "text": "Toolbar 'save' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-info-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-info-button",
            "text": "Toolbar 'info' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-edit-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-edit-button",
            "text": "Toolbar 'edit' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-close-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-close-button",
            "text": "Toolbar 'close' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-delete-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-delete-button",
            "text": "Toolbar 'delete' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-cancel-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-cancel-button",
            "text": "Toolbar 'cancel' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-done-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-done-button",
            "text": "Toolbar 'done' button foreground"
        },
        "$:/language/Docs/PaletteColours/untagged-background": {
            "title": "$:/language/Docs/PaletteColours/untagged-background",
            "text": "Untagged pill background"
        },
        "$:/language/Docs/PaletteColours/very-muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/very-muted-foreground",
            "text": "Very muted foreground"
        },
        "$:/language/EditTemplate/Body/External/Hint": {
            "title": "$:/language/EditTemplate/Body/External/Hint",
            "text": "This is an external tiddler stored outside of the main TiddlyWiki file. You can edit the tags and fields but cannot directly edit the content itself"
        },
        "$:/language/EditTemplate/Body/Placeholder": {
            "title": "$:/language/EditTemplate/Body/Placeholder",
            "text": "Type the text for this tiddler"
        },
        "$:/language/EditTemplate/Body/Preview/Type/Output": {
            "title": "$:/language/EditTemplate/Body/Preview/Type/Output",
            "text": "output"
        },
        "$:/language/EditTemplate/Field/Remove/Caption": {
            "title": "$:/language/EditTemplate/Field/Remove/Caption",
            "text": "remove field"
        },
        "$:/language/EditTemplate/Field/Remove/Hint": {
            "title": "$:/language/EditTemplate/Field/Remove/Hint",
            "text": "Remove field"
        },
        "$:/language/EditTemplate/Fields/Add/Button": {
            "title": "$:/language/EditTemplate/Fields/Add/Button",
            "text": "add"
        },
        "$:/language/EditTemplate/Fields/Add/Name/Placeholder": {
            "title": "$:/language/EditTemplate/Fields/Add/Name/Placeholder",
            "text": "field name"
        },
        "$:/language/EditTemplate/Fields/Add/Prompt": {
            "title": "$:/language/EditTemplate/Fields/Add/Prompt",
            "text": "Add a new field:"
        },
        "$:/language/EditTemplate/Fields/Add/Value/Placeholder": {
            "title": "$:/language/EditTemplate/Fields/Add/Value/Placeholder",
            "text": "field value"
        },
        "$:/language/EditTemplate/Fields/Add/Dropdown/System": {
            "title": "$:/language/EditTemplate/Fields/Add/Dropdown/System",
            "text": "System fields"
        },
        "$:/language/EditTemplate/Fields/Add/Dropdown/User": {
            "title": "$:/language/EditTemplate/Fields/Add/Dropdown/User",
            "text": "User fields"
        },
        "$:/language/EditTemplate/Shadow/Warning": {
            "title": "$:/language/EditTemplate/Shadow/Warning",
            "text": "This is a shadow tiddler. Any changes you make will override the default version from the plugin <<pluginLink>>"
        },
        "$:/language/EditTemplate/Shadow/OverriddenWarning": {
            "title": "$:/language/EditTemplate/Shadow/OverriddenWarning",
            "text": "This is a modified shadow tiddler. You can revert to the default version in the plugin <<pluginLink>> by deleting this tiddler"
        },
        "$:/language/EditTemplate/Tags/Add/Button": {
            "title": "$:/language/EditTemplate/Tags/Add/Button",
            "text": "add"
        },
        "$:/language/EditTemplate/Tags/Add/Placeholder": {
            "title": "$:/language/EditTemplate/Tags/Add/Placeholder",
            "text": "tag name"
        },
        "$:/language/EditTemplate/Tags/Dropdown/Caption": {
            "title": "$:/language/EditTemplate/Tags/Dropdown/Caption",
            "text": "tag list"
        },
        "$:/language/EditTemplate/Tags/Dropdown/Hint": {
            "title": "$:/language/EditTemplate/Tags/Dropdown/Hint",
            "text": "Show tag list"
        },
        "$:/language/EditTemplate/Title/BadCharacterWarning": {
            "title": "$:/language/EditTemplate/Title/BadCharacterWarning",
            "text": "Warning: avoid using any of the characters <<bad-chars>> in tiddler titles"
        },
        "$:/language/EditTemplate/Title/Exists/Prompt": {
            "title": "$:/language/EditTemplate/Title/Exists/Prompt",
            "text": "Target tiddler already exists"
        },
        "$:/language/EditTemplate/Title/Relink/Prompt": {
            "title": "$:/language/EditTemplate/Title/Relink/Prompt",
            "text": "Update ''<$text text=<<fromTitle>>/>'' to ''<$text text=<<toTitle>>/>'' in the //tags// and //list// fields of other tiddlers"
        },
        "$:/language/EditTemplate/Type/Dropdown/Caption": {
            "title": "$:/language/EditTemplate/Type/Dropdown/Caption",
            "text": "content type list"
        },
        "$:/language/EditTemplate/Type/Dropdown/Hint": {
            "title": "$:/language/EditTemplate/Type/Dropdown/Hint",
            "text": "Show content type list"
        },
        "$:/language/EditTemplate/Type/Delete/Caption": {
            "title": "$:/language/EditTemplate/Type/Delete/Caption",
            "text": "delete content type"
        },
        "$:/language/EditTemplate/Type/Delete/Hint": {
            "title": "$:/language/EditTemplate/Type/Delete/Hint",
            "text": "Delete content type"
        },
        "$:/language/EditTemplate/Type/Placeholder": {
            "title": "$:/language/EditTemplate/Type/Placeholder",
            "text": "content type"
        },
        "$:/language/EditTemplate/Type/Prompt": {
            "title": "$:/language/EditTemplate/Type/Prompt",
            "text": "Type:"
        },
        "$:/language/Exporters/StaticRiver": {
            "title": "$:/language/Exporters/StaticRiver",
            "text": "Static HTML"
        },
        "$:/language/Exporters/JsonFile": {
            "title": "$:/language/Exporters/JsonFile",
            "text": "JSON file"
        },
        "$:/language/Exporters/CsvFile": {
            "title": "$:/language/Exporters/CsvFile",
            "text": "CSV file"
        },
        "$:/language/Exporters/TidFile": {
            "title": "$:/language/Exporters/TidFile",
            "text": "\".tid\" file"
        },
        "$:/language/Docs/Fields/_canonical_uri": {
            "title": "$:/language/Docs/Fields/_canonical_uri",
            "text": "The full URI of an external image tiddler"
        },
        "$:/language/Docs/Fields/bag": {
            "title": "$:/language/Docs/Fields/bag",
            "text": "The name of the bag from which a tiddler came"
        },
        "$:/language/Docs/Fields/caption": {
            "title": "$:/language/Docs/Fields/caption",
            "text": "The text to be displayed on a tab or button"
        },
        "$:/language/Docs/Fields/color": {
            "title": "$:/language/Docs/Fields/color",
            "text": "The CSS color value associated with a tiddler"
        },
        "$:/language/Docs/Fields/component": {
            "title": "$:/language/Docs/Fields/component",
            "text": "The name of the component responsible for an [[alert tiddler|AlertMechanism]]"
        },
        "$:/language/Docs/Fields/current-tiddler": {
            "title": "$:/language/Docs/Fields/current-tiddler",
            "text": "Used to cache the top tiddler in a [[history list|HistoryMechanism]]"
        },
        "$:/language/Docs/Fields/created": {
            "title": "$:/language/Docs/Fields/created",
            "text": "The date a tiddler was created"
        },
        "$:/language/Docs/Fields/creator": {
            "title": "$:/language/Docs/Fields/creator",
            "text": "The name of the person who created a tiddler"
        },
        "$:/language/Docs/Fields/dependents": {
            "title": "$:/language/Docs/Fields/dependents",
            "text": "For a plugin, lists the dependent plugin titles"
        },
        "$:/language/Docs/Fields/description": {
            "title": "$:/language/Docs/Fields/description",
            "text": "The descriptive text for a plugin, or a modal dialogue"
        },
        "$:/language/Docs/Fields/draft.of": {
            "title": "$:/language/Docs/Fields/draft.of",
            "text": "For draft tiddlers, contains the title of the tiddler of which this is a draft"
        },
        "$:/language/Docs/Fields/draft.title": {
            "title": "$:/language/Docs/Fields/draft.title",
            "text": "For draft tiddlers, contains the proposed new title of the tiddler"
        },
        "$:/language/Docs/Fields/footer": {
            "title": "$:/language/Docs/Fields/footer",
            "text": "The footer text for a wizard"
        },
        "$:/language/Docs/Fields/hack-to-give-us-something-to-compare-against": {
            "title": "$:/language/Docs/Fields/hack-to-give-us-something-to-compare-against",
            "text": "A temporary storage field used in [[$:/core/templates/static.content]]"
        },
        "$:/language/Docs/Fields/icon": {
            "title": "$:/language/Docs/Fields/icon",
            "text": "The title of the tiddler containing the icon associated with a tiddler"
        },
        "$:/language/Docs/Fields/library": {
            "title": "$:/language/Docs/Fields/library",
            "text": "If set to \"yes\" indicates that a tiddler should be saved as a JavaScript library"
        },
        "$:/language/Docs/Fields/list": {
            "title": "$:/language/Docs/Fields/list",
            "text": "An ordered list of tiddler titles associated with a tiddler"
        },
        "$:/language/Docs/Fields/list-before": {
            "title": "$:/language/Docs/Fields/list-before",
            "text": "If set, the title of a tiddler before which this tiddler should be added to the ordered list of tiddler titles, or at the start of the list if this field is present but empty"
        },
        "$:/language/Docs/Fields/list-after": {
            "title": "$:/language/Docs/Fields/list-after",
            "text": "If set, the title of the tiddler after which this tiddler should be added to the ordered list of tiddler titles"
        },
        "$:/language/Docs/Fields/modified": {
            "title": "$:/language/Docs/Fields/modified",
            "text": "The date and time at which a tiddler was last modified"
        },
        "$:/language/Docs/Fields/modifier": {
            "title": "$:/language/Docs/Fields/modifier",
            "text": "The tiddler title associated with the person who last modified a tiddler"
        },
        "$:/language/Docs/Fields/name": {
            "title": "$:/language/Docs/Fields/name",
            "text": "The human readable name associated with a plugin tiddler"
        },
        "$:/language/Docs/Fields/plugin-priority": {
            "title": "$:/language/Docs/Fields/plugin-priority",
            "text": "A numerical value indicating the priority of a plugin tiddler"
        },
        "$:/language/Docs/Fields/plugin-type": {
            "title": "$:/language/Docs/Fields/plugin-type",
            "text": "The type of plugin in a plugin tiddler"
        },
        "$:/language/Docs/Fields/revision": {
            "title": "$:/language/Docs/Fields/revision",
            "text": "The revision of the tiddler held at the server"
        },
        "$:/language/Docs/Fields/released": {
            "title": "$:/language/Docs/Fields/released",
            "text": "Date of a TiddlyWiki release"
        },
        "$:/language/Docs/Fields/source": {
            "title": "$:/language/Docs/Fields/source",
            "text": "The source URL associated with a tiddler"
        },
        "$:/language/Docs/Fields/subtitle": {
            "title": "$:/language/Docs/Fields/subtitle",
            "text": "The subtitle text for a wizard"
        },
        "$:/language/Docs/Fields/tags": {
            "title": "$:/language/Docs/Fields/tags",
            "text": "A list of tags associated with a tiddler"
        },
        "$:/language/Docs/Fields/text": {
            "title": "$:/language/Docs/Fields/text",
            "text": "The body text of a tiddler"
        },
        "$:/language/Docs/Fields/title": {
            "title": "$:/language/Docs/Fields/title",
            "text": "The unique name of a tiddler"
        },
        "$:/language/Docs/Fields/type": {
            "title": "$:/language/Docs/Fields/type",
            "text": "The content type of a tiddler"
        },
        "$:/language/Docs/Fields/version": {
            "title": "$:/language/Docs/Fields/version",
            "text": "Version information for a plugin"
        },
        "$:/language/Filters/AllTiddlers": {
            "title": "$:/language/Filters/AllTiddlers",
            "text": "All tiddlers except system tiddlers"
        },
        "$:/language/Filters/RecentSystemTiddlers": {
            "title": "$:/language/Filters/RecentSystemTiddlers",
            "text": "Recently modified tiddlers, including system tiddlers"
        },
        "$:/language/Filters/RecentTiddlers": {
            "title": "$:/language/Filters/RecentTiddlers",
            "text": "Recently modified tiddlers"
        },
        "$:/language/Filters/AllTags": {
            "title": "$:/language/Filters/AllTags",
            "text": "All tags except system tags"
        },
        "$:/language/Filters/Missing": {
            "title": "$:/language/Filters/Missing",
            "text": "Missing tiddlers"
        },
        "$:/language/Filters/Drafts": {
            "title": "$:/language/Filters/Drafts",
            "text": "Draft tiddlers"
        },
        "$:/language/Filters/Orphans": {
            "title": "$:/language/Filters/Orphans",
            "text": "Orphan tiddlers"
        },
        "$:/language/Filters/SystemTiddlers": {
            "title": "$:/language/Filters/SystemTiddlers",
            "text": "System tiddlers"
        },
        "$:/language/Filters/ShadowTiddlers": {
            "title": "$:/language/Filters/ShadowTiddlers",
            "text": "Shadow tiddlers"
        },
        "$:/language/Filters/OverriddenShadowTiddlers": {
            "title": "$:/language/Filters/OverriddenShadowTiddlers",
            "text": "Overridden shadow tiddlers"
        },
        "$:/language/Filters/SystemTags": {
            "title": "$:/language/Filters/SystemTags",
            "text": "System tags"
        },
        "$:/language/Filters/StoryList": {
            "title": "$:/language/Filters/StoryList",
            "text": "Tiddlers in the story river, excluding <$text text=\"$:/AdvancedSearch\"/>"
        },
        "$:/language/Filters/TypedTiddlers": {
            "title": "$:/language/Filters/TypedTiddlers",
            "text": "Non wiki-text tiddlers"
        },
        "GettingStarted": {
            "title": "GettingStarted",
            "text": "\\define lingo-base() $:/language/ControlPanel/Basics/\nWelcome to ~TiddlyWiki and the ~TiddlyWiki community\n\nBefore you start storing important information in ~TiddlyWiki it is important to make sure that you can reliably save changes. See http://tiddlywiki.com/#GettingStarted for details\n\n!! Set up this ~TiddlyWiki\n\n<div class=\"tc-control-panel\">\n\n|<$link to=\"$:/SiteTitle\"><<lingo Title/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/SiteSubtitle\"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/DefaultTiddlers\"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n</div>\n\nSee the [[control panel|$:/ControlPanel]] for more options.\n"
        },
        "$:/language/Help/build": {
            "title": "$:/language/Help/build",
            "description": "Automatically run configured commands",
            "text": "Build the specified build targets for the current wiki. If no build targets are specified then all available targets will be built.\n\n```\n--build <target> [<target> ...]\n```\n\nBuild targets are defined in the `tiddlywiki.info` file of a wiki folder.\n\n"
        },
        "$:/language/Help/clearpassword": {
            "title": "$:/language/Help/clearpassword",
            "description": "Clear a password for subsequent crypto operations",
            "text": "Clear the password for subsequent crypto operations\n\n```\n--clearpassword\n```\n"
        },
        "$:/language/Help/default": {
            "title": "$:/language/Help/default",
            "text": "\\define commandTitle()\n$:/language/Help/$(command)$\n\\end\n```\nusage: tiddlywiki [<wikifolder>] [--<command> [<args>...]...]\n```\n\nAvailable commands:\n\n<ul>\n<$list filter=\"[commands[]sort[title]]\" variable=\"command\">\n<li><$link to=<<commandTitle>>><$macrocall $name=\"command\" $type=\"text/plain\" $output=\"text/plain\"/></$link>: <$transclude tiddler=<<commandTitle>> field=\"description\"/></li>\n</$list>\n</ul>\n\nTo get detailed help on a command:\n\n```\ntiddlywiki --help <command>\n```\n"
        },
        "$:/language/Help/editions": {
            "title": "$:/language/Help/editions",
            "description": "Lists the available editions of TiddlyWiki",
            "text": "Lists the names and descriptions of the available editions. You can create a new wiki of a specified edition with the `--init` command.\n\n```\n--editions\n```\n"
        },
        "$:/language/Help/fetch": {
            "title": "$:/language/Help/fetch",
            "description": "Fetch tiddlers from wiki by URL",
            "text": "Fetch one or more files over HTTP/HTTPS, and import the tiddlers matching a filter, optionally transforming the incoming titles.\n\n```\n--fetch file <url> <import-filter> <transform-filter>\n--fetch files <url-filter> <import-filter> <transform-filter>\n```\n\nWith the \"file\" variant only a single file is fetched and the first parameter is the URL of the file to read.\n\nWith the \"files\" variant, multiple files are fetched and the first parameter is a filter yielding a list of URLs of the files to read. For example, given a set of tiddlers tagged \"remote-server\" that have a field \"url\" the filter `[tag[remote-server]get[url]]` will retrieve all the available URLs.\n\nThe `<import-filter>` parameter specifies a filter determining which tiddlers are imported. It defaults to `[all[tiddlers]]` if not provided.\n\nThe `<transform-filter>` parameter specifies an optional filter that transforms the titles of the imported tiddlers. For example, `[addprefix[$:/myimports/]]` would add the prefix `$:/myimports/` to each title.\n\nPreceding the `--fetch` command with `--verbose` will output progress information during the import.\n\nNote that TiddlyWiki will not fetch an older version of an already loaded plugin.\n\nThe following example retrieves all the non-system tiddlers from http://tiddlywiki.com and saves them to a JSON file:\n\n```\ntiddlywiki --verbose --fetch file \"http://tiddlywiki.com/\" \"[!is[system]]\" \"\" --rendertiddler \"$:/core/templates/exporters/JsonFile\" output.json text/plain \"\" exportFilter \"[!is[system]]\"\n```\n\n"
        },
        "$:/language/Help/help": {
            "title": "$:/language/Help/help",
            "description": "Display help for TiddlyWiki commands",
            "text": "Displays help text for a command:\n\n```\n--help [<command>]\n```\n\nIf the command name is omitted then a list of available commands is displayed.\n"
        },
        "$:/language/Help/init": {
            "title": "$:/language/Help/init",
            "description": "Initialise a new wiki folder",
            "text": "Initialise an empty [[WikiFolder|WikiFolders]] with a copy of the specified edition.\n\n```\n--init <edition> [<edition> ...]\n```\n\nFor example:\n\n```\ntiddlywiki ./MyWikiFolder --init empty\n```\n\nNote:\n\n* The wiki folder directory will be created if necessary\n* The \"edition\" defaults to ''empty''\n* The init command will fail if the wiki folder is not empty\n* The init command removes any `includeWikis` definitions in the edition's `tiddlywiki.info` file\n* When multiple editions are specified, editions initialised later will overwrite any files shared with earlier editions (so, the final `tiddlywiki.info` file will be copied from the last edition)\n* `--editions` returns a list of available editions\n"
        },
        "$:/language/Help/load": {
            "title": "$:/language/Help/load",
            "description": "Load tiddlers from a file",
            "text": "Load tiddlers from 2.x.x TiddlyWiki files (`.html`), `.tiddler`, `.tid`, `.json` or other files\n\n```\n--load <filepath>\n```\n\nTo load tiddlers from an encrypted TiddlyWiki file you should first specify the password with the PasswordCommand. For example:\n\n```\ntiddlywiki ./MyWiki --password pa55w0rd --load my_encrypted_wiki.html\n```\n\nNote that TiddlyWiki will not load an older version of an already loaded plugin.\n"
        },
        "$:/language/Help/makelibrary": {
            "title": "$:/language/Help/makelibrary",
            "description": "Construct library plugin required by upgrade process",
            "text": "Constructs the `$:/UpgradeLibrary` tiddler for the upgrade process.\n\nThe upgrade library is formatted as an ordinary plugin tiddler with the plugin type `library`. It contains a copy of each of the plugins, themes and language packs available within the TiddlyWiki5 repository.\n\nThis command is intended for internal use; it is only relevant to users constructing a custom upgrade procedure.\n\n```\n--makelibrary <title>\n```\n\nThe title argument defaults to `$:/UpgradeLibrary`.\n"
        },
        "$:/language/Help/notfound": {
            "title": "$:/language/Help/notfound",
            "text": "No such help item"
        },
        "$:/language/Help/output": {
            "title": "$:/language/Help/output",
            "description": "Set the base output directory for subsequent commands",
            "text": "Sets the base output directory for subsequent commands. The default output directory is the `output` subdirectory of the edition directory.\n\n```\n--output <pathname>\n```\n\nIf the specified pathname is relative then it is resolved relative to the current working directory. For example `--output .` sets the output directory to the current working directory.\n\n"
        },
        "$:/language/Help/password": {
            "title": "$:/language/Help/password",
            "description": "Set a password for subsequent crypto operations",
            "text": "Set a password for subsequent crypto operations\n\n```\n--password <password>\n```\n\n''Note'': This should not be used for serving TiddlyWiki with password protection. Instead, see the password option under the [[ServerCommand]].\n"
        },
        "$:/language/Help/rendertiddler": {
            "title": "$:/language/Help/rendertiddler",
            "description": "Render an individual tiddler as a specified ContentType",
            "text": "Render an individual tiddler as a specified ContentType, defaulting to `text/html` and save it to the specified filename.\n\nOptionally the title of a template tiddler can be specified, in which case the template tiddler is rendered with the \"currentTiddler\" variable set to the tiddler that is being rendered (the first parameter value).\n\nA name and value for an additional variable may optionally also be specified.\n\n```\n--rendertiddler <title> <filename> [<type>] [<template>] [<name>] [<value>]\n```\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny missing directories in the path to the filename are automatically created.\n\nFor example, the following command saves all tiddlers matching the filter `[tag[done]]` to a JSON file titled `output.json` by employing the core template `$:/core/templates/exporters/JsonFile`.\n\n```\n--rendertiddler \"$:/core/templates/exporters/JsonFile\" output.json text/plain \"\" exportFilter \"[tag[done]]\"\n```\n"
        },
        "$:/language/Help/rendertiddlers": {
            "title": "$:/language/Help/rendertiddlers",
            "description": "Render tiddlers matching a filter to a specified ContentType",
            "text": "Render a set of tiddlers matching a filter to separate files of a specified ContentType (defaults to `text/html`) and extension (defaults to `.html`).\n\n```\n--rendertiddlers <filter> <template> <pathname> [<type>] [<extension>] [\"noclean\"]\n```\n\nFor example:\n\n```\n--rendertiddlers [!is[system]] $:/core/templates/static.tiddler.html ./static text/plain\n```\n\nBy default, the pathname is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny files in the target directory are deleted unless the ''noclean'' flag is specified. The target directory is recursively created if it is missing.\n"
        },
        "$:/language/Help/savetiddler": {
            "title": "$:/language/Help/savetiddler",
            "description": "Saves a raw tiddler to a file",
            "text": "Saves an individual tiddler in its raw text or binary format to the specified filename.\n\n```\n--savetiddler <title> <filename>\n```\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny missing directories in the path to the filename are automatically created.\n"
        },
        "$:/language/Help/savetiddlers": {
            "title": "$:/language/Help/savetiddlers",
            "description": "Saves a group of raw tiddlers to a directory",
            "text": "Saves a group of tiddlers in their raw text or binary format to the specified directory.\n\n```\n--savetiddlers <filter> <pathname> [\"noclean\"]\n```\n\nBy default, the pathname is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nThe output directory is cleared of existing files before saving the specified files. The deletion can be disabled by specifying the ''noclean'' flag.\n\nAny missing directories in the pathname are automatically created.\n"
        },
        "$:/language/Help/server": {
            "title": "$:/language/Help/server",
            "description": "Provides an HTTP server interface to TiddlyWiki",
            "text": "The server built in to TiddlyWiki5 is very simple. Although compatible with TiddlyWeb it doesn't support many of the features needed for robust Internet-facing usage.\n\nAt the root, it serves a rendering of a specified tiddler. Away from the root, it serves individual tiddlers encoded in JSON, and supports the basic HTTP operations for `GET`, `PUT` and `DELETE`.\n\n```\n--server <port> <roottiddler> <rendertype> <servetype> <username> <password> <host> <pathprefix>\n```\n\nThe parameters are:\n\n* ''port'' - port number to serve from (defaults to \"8080\")\n* ''roottiddler'' - the tiddler to serve at the root (defaults to \"$:/core/save/all\")\n* ''rendertype'' - the content type to which the root tiddler should be rendered (defaults to \"text/plain\")\n* ''servetype'' - the content type with which the root tiddler should be served (defaults to \"text/html\")\n* ''username'' - the default username for signing edits\n* ''password'' - optional password for basic authentication\n* ''host'' - optional hostname to serve from (defaults to \"127.0.0.1\" aka \"localhost\")\n* ''pathprefix'' - optional prefix for paths\n\nIf the password parameter is specified then the browser will prompt the user for the username and password. Note that the password is transmitted in plain text so this implementation isn't suitable for general use.\n\nFor example:\n\n```\n--server 8080 $:/core/save/all text/plain text/html MyUserName passw0rd\n```\n\nThe username and password can be specified as empty strings if you need to set the hostname or pathprefix and don't want to require a password:\n\n```\n--server 8080 $:/core/save/all text/plain text/html \"\" \"\" 192.168.0.245\n```\n\nTo run multiple TiddlyWiki servers at the same time you'll need to put each one on a different port.\n"
        },
        "$:/language/Help/setfield": {
            "title": "$:/language/Help/setfield",
            "description": "Prepares external tiddlers for use",
            "text": "//Note that this command is experimental and may change or be replaced before being finalised//\n\nSets the specified field of a group of tiddlers to the result of wikifying a template tiddler with the `currentTiddler` variable set to the tiddler.\n\n```\n--setfield <filter> <fieldname> <templatetitle> <rendertype>\n```\n\nThe parameters are:\n\n* ''filter'' - filter identifying the tiddlers to be affected\n* ''fieldname'' - the field to modify (defaults to \"text\")\n* ''templatetitle'' - the tiddler to wikify into the specified field. If blank or missing then the specified field is deleted\n* ''rendertype'' - the text type to render (defaults to \"text/plain\"; \"text/html\" can be used to include HTML tags)\n"
        },
        "$:/language/Help/unpackplugin": {
            "title": "$:/language/Help/unpackplugin",
            "description": "Unpack the payload tiddlers from a plugin",
            "text": "Extract the payload tiddlers from a plugin, creating them as ordinary tiddlers:\n\n```\n--unpackplugin <title>\n```\n"
        },
        "$:/language/Help/verbose": {
            "title": "$:/language/Help/verbose",
            "description": "Triggers verbose output mode",
            "text": "Triggers verbose output, useful for debugging\n\n```\n--verbose\n```\n"
        },
        "$:/language/Help/version": {
            "title": "$:/language/Help/version",
            "description": "Displays the version number of TiddlyWiki",
            "text": "Displays the version number of TiddlyWiki.\n\n```\n--version\n```\n"
        },
        "$:/language/Import/Imported/Hint": {
            "title": "$:/language/Import/Imported/Hint",
            "text": "The following tiddlers were imported:"
        },
        "$:/language/Import/Listing/Cancel/Caption": {
            "title": "$:/language/Import/Listing/Cancel/Caption",
            "text": "Cancel"
        },
        "$:/language/Import/Listing/Hint": {
            "title": "$:/language/Import/Listing/Hint",
            "text": "These tiddlers are ready to import:"
        },
        "$:/language/Import/Listing/Import/Caption": {
            "title": "$:/language/Import/Listing/Import/Caption",
            "text": "Import"
        },
        "$:/language/Import/Listing/Select/Caption": {
            "title": "$:/language/Import/Listing/Select/Caption",
            "text": "Select"
        },
        "$:/language/Import/Listing/Status/Caption": {
            "title": "$:/language/Import/Listing/Status/Caption",
            "text": "Status"
        },
        "$:/language/Import/Listing/Title/Caption": {
            "title": "$:/language/Import/Listing/Title/Caption",
            "text": "Title"
        },
        "$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible": {
            "title": "$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible",
            "text": "Blocked incompatible or obsolete plugin"
        },
        "$:/language/Import/Upgrader/Plugins/Suppressed/Version": {
            "title": "$:/language/Import/Upgrader/Plugins/Suppressed/Version",
            "text": "Blocked plugin (due to incoming <<incoming>> being older than existing <<existing>>)"
        },
        "$:/language/Import/Upgrader/Plugins/Upgraded": {
            "title": "$:/language/Import/Upgrader/Plugins/Upgraded",
            "text": "Upgraded plugin from <<incoming>> to <<upgraded>>"
        },
        "$:/language/Import/Upgrader/State/Suppressed": {
            "title": "$:/language/Import/Upgrader/State/Suppressed",
            "text": "Blocked temporary state tiddler"
        },
        "$:/language/Import/Upgrader/System/Suppressed": {
            "title": "$:/language/Import/Upgrader/System/Suppressed",
            "text": "Blocked system tiddler"
        },
        "$:/language/Import/Upgrader/ThemeTweaks/Created": {
            "title": "$:/language/Import/Upgrader/ThemeTweaks/Created",
            "text": "Migrated theme tweak from <$text text=<<from>>/>"
        },
        "$:/language/AboveStory/ClassicPlugin/Warning": {
            "title": "$:/language/AboveStory/ClassicPlugin/Warning",
            "text": "It looks like you are trying to load a plugin designed for ~TiddlyWiki Classic. Please note that [[these plugins do not work with TiddlyWiki version 5.x.x|http://tiddlywiki.com/#TiddlyWikiClassic]]. ~TiddlyWiki Classic plugins detected:"
        },
        "$:/language/BinaryWarning/Prompt": {
            "title": "$:/language/BinaryWarning/Prompt",
            "text": "This tiddler contains binary data"
        },
        "$:/language/ClassicWarning/Hint": {
            "title": "$:/language/ClassicWarning/Hint",
            "text": "This tiddler is written in TiddlyWiki Classic wiki text format, which is not fully compatible with TiddlyWiki version 5. See http://tiddlywiki.com/static/Upgrading.html for more details."
        },
        "$:/language/ClassicWarning/Upgrade/Caption": {
            "title": "$:/language/ClassicWarning/Upgrade/Caption",
            "text": "upgrade"
        },
        "$:/language/CloseAll/Button": {
            "title": "$:/language/CloseAll/Button",
            "text": "close all"
        },
        "$:/language/ColourPicker/Recent": {
            "title": "$:/language/ColourPicker/Recent",
            "text": "Recent:"
        },
        "$:/language/ConfirmCancelTiddler": {
            "title": "$:/language/ConfirmCancelTiddler",
            "text": "Do you wish to discard changes to the tiddler \"<$text text=<<title>>/>\"?"
        },
        "$:/language/ConfirmDeleteTiddler": {
            "title": "$:/language/ConfirmDeleteTiddler",
            "text": "Do you wish to delete the tiddler \"<$text text=<<title>>/>\"?"
        },
        "$:/language/ConfirmOverwriteTiddler": {
            "title": "$:/language/ConfirmOverwriteTiddler",
            "text": "Do you wish to overwrite the tiddler \"<$text text=<<title>>/>\"?"
        },
        "$:/language/ConfirmEditShadowTiddler": {
            "title": "$:/language/ConfirmEditShadowTiddler",
            "text": "You are about to edit a ShadowTiddler. Any changes will override the default system making future upgrades non-trivial. Are you sure you want to edit \"<$text text=<<title>>/>\"?"
        },
        "$:/language/Count": {
            "title": "$:/language/Count",
            "text": "count"
        },
        "$:/language/DefaultNewTiddlerTitle": {
            "title": "$:/language/DefaultNewTiddlerTitle",
            "text": "New Tiddler"
        },
        "$:/language/DropMessage": {
            "title": "$:/language/DropMessage",
            "text": "Drop here (or use the 'Escape' key to cancel)"
        },
        "$:/language/Encryption/Cancel": {
            "title": "$:/language/Encryption/Cancel",
            "text": "Cancel"
        },
        "$:/language/Encryption/ConfirmClearPassword": {
            "title": "$:/language/Encryption/ConfirmClearPassword",
            "text": "Do you wish to clear the password? This will remove the encryption applied when saving this wiki"
        },
        "$:/language/Encryption/PromptSetPassword": {
            "title": "$:/language/Encryption/PromptSetPassword",
            "text": "Set a new password for this TiddlyWiki"
        },
        "$:/language/Encryption/Username": {
            "title": "$:/language/Encryption/Username",
            "text": "Username"
        },
        "$:/language/Encryption/Password": {
            "title": "$:/language/Encryption/Password",
            "text": "Password"
        },
        "$:/language/Encryption/RepeatPassword": {
            "title": "$:/language/Encryption/RepeatPassword",
            "text": "Repeat password"
        },
        "$:/language/Encryption/PasswordNoMatch": {
            "title": "$:/language/Encryption/PasswordNoMatch",
            "text": "Passwords do not match"
        },
        "$:/language/Encryption/SetPassword": {
            "title": "$:/language/Encryption/SetPassword",
            "text": "Set password"
        },
        "$:/language/Error/Caption": {
            "title": "$:/language/Error/Caption",
            "text": "Error"
        },
        "$:/language/Error/EditConflict": {
            "title": "$:/language/Error/EditConflict",
            "text": "File changed on server"
        },
        "$:/language/Error/Filter": {
            "title": "$:/language/Error/Filter",
            "text": "Filter error"
        },
        "$:/language/Error/FilterSyntax": {
            "title": "$:/language/Error/FilterSyntax",
            "text": "Syntax error in filter expression"
        },
        "$:/language/Error/IsFilterOperator": {
            "title": "$:/language/Error/IsFilterOperator",
            "text": "Filter Error: Unknown operand for the 'is' filter operator"
        },
        "$:/language/Error/LoadingPluginLibrary": {
            "title": "$:/language/Error/LoadingPluginLibrary",
            "text": "Error loading plugin library"
        },
        "$:/language/Error/RecursiveTransclusion": {
            "title": "$:/language/Error/RecursiveTransclusion",
            "text": "Recursive transclusion error in transclude widget"
        },
        "$:/language/Error/RetrievingSkinny": {
            "title": "$:/language/Error/RetrievingSkinny",
            "text": "Error retrieving skinny tiddler list"
        },
        "$:/language/Error/SavingToTWEdit": {
            "title": "$:/language/Error/SavingToTWEdit",
            "text": "Error saving to TWEdit"
        },
        "$:/language/Error/WhileSaving": {
            "title": "$:/language/Error/WhileSaving",
            "text": "Error while saving"
        },
        "$:/language/Error/XMLHttpRequest": {
            "title": "$:/language/Error/XMLHttpRequest",
            "text": "XMLHttpRequest error code"
        },
        "$:/language/InternalJavaScriptError/Title": {
            "title": "$:/language/InternalJavaScriptError/Title",
            "text": "Internal JavaScript Error"
        },
        "$:/language/InternalJavaScriptError/Hint": {
            "title": "$:/language/InternalJavaScriptError/Hint",
            "text": "Well, this is embarrassing. It is recommended that you restart TiddlyWiki by refreshing your browser"
        },
        "$:/language/InvalidFieldName": {
            "title": "$:/language/InvalidFieldName",
            "text": "Illegal characters in field name \"<$text text=<<fieldName>>/>\". Fields can only contain lowercase letters, digits and the characters underscore (`_`), hyphen (`-`) and period (`.`)"
        },
        "$:/language/LazyLoadingWarning": {
            "title": "$:/language/LazyLoadingWarning",
            "text": "<p>Loading external text from ''<$text text={{!!_canonical_uri}}/>''</p><p>If this message doesn't disappear you may be using a browser that doesn't support external text in this configuration. See http://tiddlywiki.com/#ExternalText</p>"
        },
        "$:/language/LoginToTiddlySpace": {
            "title": "$:/language/LoginToTiddlySpace",
            "text": "Login to TiddlySpace"
        },
        "$:/language/Manager/Controls/FilterByTag/None": {
            "title": "$:/language/Manager/Controls/FilterByTag/None",
            "text": "(none)"
        },
        "$:/language/Manager/Controls/FilterByTag/Prompt": {
            "title": "$:/language/Manager/Controls/FilterByTag/Prompt",
            "text": "Filter by tag:"
        },
        "$:/language/Manager/Controls/Order/Prompt": {
            "title": "$:/language/Manager/Controls/Order/Prompt",
            "text": "Reverse order"
        },
        "$:/language/Manager/Controls/Search/Placeholder": {
            "title": "$:/language/Manager/Controls/Search/Placeholder",
            "text": "Search"
        },
        "$:/language/Manager/Controls/Search/Prompt": {
            "title": "$:/language/Manager/Controls/Search/Prompt",
            "text": "Search:"
        },
        "$:/language/Manager/Controls/Show/Option/Tags": {
            "title": "$:/language/Manager/Controls/Show/Option/Tags",
            "text": "tags"
        },
        "$:/language/Manager/Controls/Show/Option/Tiddlers": {
            "title": "$:/language/Manager/Controls/Show/Option/Tiddlers",
            "text": "tiddlers"
        },
        "$:/language/Manager/Controls/Show/Prompt": {
            "title": "$:/language/Manager/Controls/Show/Prompt",
            "text": "Show:"
        },
        "$:/language/Manager/Controls/Sort/Prompt": {
            "title": "$:/language/Manager/Controls/Sort/Prompt",
            "text": "Sort by:"
        },
        "$:/language/Manager/Item/Colour": {
            "title": "$:/language/Manager/Item/Colour",
            "text": "Colour"
        },
        "$:/language/Manager/Item/Fields": {
            "title": "$:/language/Manager/Item/Fields",
            "text": "Fields"
        },
        "$:/language/Manager/Item/Icon/None": {
            "title": "$:/language/Manager/Item/Icon/None",
            "text": "(none)"
        },
        "$:/language/Manager/Item/Icon": {
            "title": "$:/language/Manager/Item/Icon",
            "text": "Icon"
        },
        "$:/language/Manager/Item/RawText": {
            "title": "$:/language/Manager/Item/RawText",
            "text": "Raw text"
        },
        "$:/language/Manager/Item/Tags": {
            "title": "$:/language/Manager/Item/Tags",
            "text": "Tags"
        },
        "$:/language/Manager/Item/Tools": {
            "title": "$:/language/Manager/Item/Tools",
            "text": "Tools"
        },
        "$:/language/Manager/Item/WikifiedText": {
            "title": "$:/language/Manager/Item/WikifiedText",
            "text": "Wikified text"
        },
        "$:/language/MissingTiddler/Hint": {
            "title": "$:/language/MissingTiddler/Hint",
            "text": "Missing tiddler \"<$text text=<<currentTiddler>>/>\" - click {{$:/core/images/edit-button}} to create"
        },
        "$:/language/No": {
            "title": "$:/language/No",
            "text": "No"
        },
        "$:/language/OfficialPluginLibrary": {
            "title": "$:/language/OfficialPluginLibrary",
            "text": "Official ~TiddlyWiki Plugin Library"
        },
        "$:/language/OfficialPluginLibrary/Hint": {
            "title": "$:/language/OfficialPluginLibrary/Hint",
            "text": "The official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team."
        },
        "$:/language/PluginReloadWarning": {
            "title": "$:/language/PluginReloadWarning",
            "text": "Please save {{$:/core/ui/Buttons/save-wiki}} and reload {{$:/core/ui/Buttons/refresh}} to allow changes to plugins to take effect"
        },
        "$:/language/RecentChanges/DateFormat": {
            "title": "$:/language/RecentChanges/DateFormat",
            "text": "DDth MMM YYYY"
        },
        "$:/language/SystemTiddler/Tooltip": {
            "title": "$:/language/SystemTiddler/Tooltip",
            "text": "This is a system tiddler"
        },
        "$:/language/SystemTiddlers/Include/Prompt": {
            "title": "$:/language/SystemTiddlers/Include/Prompt",
            "text": "Include system tiddlers"
        },
        "$:/language/TagManager/Colour/Heading": {
            "title": "$:/language/TagManager/Colour/Heading",
            "text": "Colour"
        },
        "$:/language/TagManager/Count/Heading": {
            "title": "$:/language/TagManager/Count/Heading",
            "text": "Count"
        },
        "$:/language/TagManager/Icon/Heading": {
            "title": "$:/language/TagManager/Icon/Heading",
            "text": "Icon"
        },
        "$:/language/TagManager/Info/Heading": {
            "title": "$:/language/TagManager/Info/Heading",
            "text": "Info"
        },
        "$:/language/TagManager/Tag/Heading": {
            "title": "$:/language/TagManager/Tag/Heading",
            "text": "Tag"
        },
        "$:/language/Tiddler/DateFormat": {
            "title": "$:/language/Tiddler/DateFormat",
            "text": "DDth MMM YYYY at hh12:0mmam"
        },
        "$:/language/UnsavedChangesWarning": {
            "title": "$:/language/UnsavedChangesWarning",
            "text": "You have unsaved changes in TiddlyWiki"
        },
        "$:/language/Yes": {
            "title": "$:/language/Yes",
            "text": "Yes"
        },
        "$:/language/Modals/Download": {
            "title": "$:/language/Modals/Download",
            "type": "text/vnd.tiddlywiki",
            "subtitle": "Download changes",
            "footer": "<$button message=\"tm-close-tiddler\">Close</$button>",
            "help": "http://tiddlywiki.com/static/DownloadingChanges.html",
            "text": "Your browser only supports manual saving.\n\nTo save your modified wiki, right click on the download link below and select \"Download file\" or \"Save file\", and then choose the folder and filename.\n\n//You can marginally speed things up by clicking the link with the control key (Windows) or the options/alt key (Mac OS X). You will not be prompted for the folder or filename, but your browser is likely to give it an unrecognisable name -- you may need to rename the file to include an `.html` extension before you can do anything useful with it.//\n\nOn smartphones that do not allow files to be downloaded you can instead bookmark the link, and then sync your bookmarks to a desktop computer from where the wiki can be saved normally.\n"
        },
        "$:/language/Modals/SaveInstructions": {
            "title": "$:/language/Modals/SaveInstructions",
            "type": "text/vnd.tiddlywiki",
            "subtitle": "Save your work",
            "footer": "<$button message=\"tm-close-tiddler\">Close</$button>",
            "help": "http://tiddlywiki.com/static/SavingChanges.html",
            "text": "Your changes to this wiki need to be saved as a ~TiddlyWiki HTML file.\n\n!!! Desktop browsers\n\n# Select ''Save As'' from the ''File'' menu\n# Choose a filename and location\n#* Some browsers also require you to explicitly specify the file saving format as ''Webpage, HTML only'' or similar\n# Close this tab\n\n!!! Smartphone browsers\n\n# Create a bookmark to this page\n#* If you've got iCloud or Google Sync set up then the bookmark will automatically sync to your desktop where you can open it and save it as above\n# Close this tab\n\n//If you open the bookmark again in Mobile Safari you will see this message again. If you want to go ahead and use the file, just click the ''close'' button below//\n"
        },
        "$:/config/NewJournal/Title": {
            "title": "$:/config/NewJournal/Title",
            "text": "DDth MMM YYYY"
        },
        "$:/config/NewJournal/Text": {
            "title": "$:/config/NewJournal/Text",
            "text": ""
        },
        "$:/config/NewJournal/Tags": {
            "title": "$:/config/NewJournal/Tags",
            "text": "Journal"
        },
        "$:/language/Notifications/Save/Done": {
            "title": "$:/language/Notifications/Save/Done",
            "text": "Saved wiki"
        },
        "$:/language/Notifications/Save/Starting": {
            "title": "$:/language/Notifications/Save/Starting",
            "text": "Starting to save wiki"
        },
        "$:/language/Search/DefaultResults/Caption": {
            "title": "$:/language/Search/DefaultResults/Caption",
            "text": "List"
        },
        "$:/language/Search/Filter/Caption": {
            "title": "$:/language/Search/Filter/Caption",
            "text": "Filter"
        },
        "$:/language/Search/Filter/Hint": {
            "title": "$:/language/Search/Filter/Hint",
            "text": "Search via a [[filter expression|http://tiddlywiki.com/static/Filters.html]]"
        },
        "$:/language/Search/Filter/Matches": {
            "title": "$:/language/Search/Filter/Matches",
            "text": "//<small><<resultCount>> matches</small>//"
        },
        "$:/language/Search/Matches": {
            "title": "$:/language/Search/Matches",
            "text": "//<small><<resultCount>> matches</small>//"
        },
        "$:/language/Search/Matches/All": {
            "title": "$:/language/Search/Matches/All",
            "text": "All matches:"
        },
        "$:/language/Search/Matches/Title": {
            "title": "$:/language/Search/Matches/Title",
            "text": "Title matches:"
        },
        "$:/language/Search/Search": {
            "title": "$:/language/Search/Search",
            "text": "Search"
        },
        "$:/language/Search/Search/TooShort": {
            "title": "$:/language/Search/Search/TooShort",
            "text": "Search text too short"
        },
        "$:/language/Search/Shadows/Caption": {
            "title": "$:/language/Search/Shadows/Caption",
            "text": "Shadows"
        },
        "$:/language/Search/Shadows/Hint": {
            "title": "$:/language/Search/Shadows/Hint",
            "text": "Search for shadow tiddlers"
        },
        "$:/language/Search/Shadows/Matches": {
            "title": "$:/language/Search/Shadows/Matches",
            "text": "//<small><<resultCount>> matches</small>//"
        },
        "$:/language/Search/Standard/Caption": {
            "title": "$:/language/Search/Standard/Caption",
            "text": "Standard"
        },
        "$:/language/Search/Standard/Hint": {
            "title": "$:/language/Search/Standard/Hint",
            "text": "Search for standard tiddlers"
        },
        "$:/language/Search/Standard/Matches": {
            "title": "$:/language/Search/Standard/Matches",
            "text": "//<small><<resultCount>> matches</small>//"
        },
        "$:/language/Search/System/Caption": {
            "title": "$:/language/Search/System/Caption",
            "text": "System"
        },
        "$:/language/Search/System/Hint": {
            "title": "$:/language/Search/System/Hint",
            "text": "Search for system tiddlers"
        },
        "$:/language/Search/System/Matches": {
            "title": "$:/language/Search/System/Matches",
            "text": "//<small><<resultCount>> matches</small>//"
        },
        "$:/language/SideBar/All/Caption": {
            "title": "$:/language/SideBar/All/Caption",
            "text": "All"
        },
        "$:/language/SideBar/Contents/Caption": {
            "title": "$:/language/SideBar/Contents/Caption",
            "text": "Contents"
        },
        "$:/language/SideBar/Drafts/Caption": {
            "title": "$:/language/SideBar/Drafts/Caption",
            "text": "Drafts"
        },
        "$:/language/SideBar/Missing/Caption": {
            "title": "$:/language/SideBar/Missing/Caption",
            "text": "Missing"
        },
        "$:/language/SideBar/More/Caption": {
            "title": "$:/language/SideBar/More/Caption",
            "text": "More"
        },
        "$:/language/SideBar/Open/Caption": {
            "title": "$:/language/SideBar/Open/Caption",
            "text": "Open"
        },
        "$:/language/SideBar/Orphans/Caption": {
            "title": "$:/language/SideBar/Orphans/Caption",
            "text": "Orphans"
        },
        "$:/language/SideBar/Recent/Caption": {
            "title": "$:/language/SideBar/Recent/Caption",
            "text": "Recent"
        },
        "$:/language/SideBar/Shadows/Caption": {
            "title": "$:/language/SideBar/Shadows/Caption",
            "text": "Shadows"
        },
        "$:/language/SideBar/System/Caption": {
            "title": "$:/language/SideBar/System/Caption",
            "text": "System"
        },
        "$:/language/SideBar/Tags/Caption": {
            "title": "$:/language/SideBar/Tags/Caption",
            "text": "Tags"
        },
        "$:/language/SideBar/Tags/Untagged/Caption": {
            "title": "$:/language/SideBar/Tags/Untagged/Caption",
            "text": "untagged"
        },
        "$:/language/SideBar/Tools/Caption": {
            "title": "$:/language/SideBar/Tools/Caption",
            "text": "Tools"
        },
        "$:/language/SideBar/Types/Caption": {
            "title": "$:/language/SideBar/Types/Caption",
            "text": "Types"
        },
        "$:/SiteSubtitle": {
            "title": "$:/SiteSubtitle",
            "text": "a non-linear personal web notebook"
        },
        "$:/SiteTitle": {
            "title": "$:/SiteTitle",
            "text": "My ~TiddlyWiki"
        },
        "$:/language/Snippets/ListByTag": {
            "title": "$:/language/Snippets/ListByTag",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "List of tiddlers by tag",
            "text": "<<list-links \"[tag[task]sort[title]]\">>\n"
        },
        "$:/language/Snippets/MacroDefinition": {
            "title": "$:/language/Snippets/MacroDefinition",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "Macro definition",
            "text": "\\define macroName(param1:\"default value\",param2)\nText of the macro\n\\end\n"
        },
        "$:/language/Snippets/Table4x3": {
            "title": "$:/language/Snippets/Table4x3",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "Table with 4 columns by 3 rows",
            "text": "|! |!Alpha |!Beta |!Gamma |!Delta |\n|!One | | | | |\n|!Two | | | | |\n|!Three | | | | |\n"
        },
        "$:/language/Snippets/TableOfContents": {
            "title": "$:/language/Snippets/TableOfContents",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "Table of Contents",
            "text": "<div class=\"tc-table-of-contents\">\n\n<<toc-selective-expandable 'TableOfContents'>>\n\n</div>"
        },
        "$:/language/ThemeTweaks/ThemeTweaks": {
            "title": "$:/language/ThemeTweaks/ThemeTweaks",
            "text": "Theme Tweaks"
        },
        "$:/language/ThemeTweaks/ThemeTweaks/Hint": {
            "title": "$:/language/ThemeTweaks/ThemeTweaks/Hint",
            "text": "You can tweak certain aspects of the ''Vanilla'' theme."
        },
        "$:/language/ThemeTweaks/Options": {
            "title": "$:/language/ThemeTweaks/Options",
            "text": "Options"
        },
        "$:/language/ThemeTweaks/Options/SidebarLayout": {
            "title": "$:/language/ThemeTweaks/Options/SidebarLayout",
            "text": "Sidebar layout"
        },
        "$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid": {
            "title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid",
            "text": "Fixed story, fluid sidebar"
        },
        "$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed": {
            "title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed",
            "text": "Fluid story, fixed sidebar"
        },
        "$:/language/ThemeTweaks/Options/StickyTitles": {
            "title": "$:/language/ThemeTweaks/Options/StickyTitles",
            "text": "Sticky titles"
        },
        "$:/language/ThemeTweaks/Options/StickyTitles/Hint": {
            "title": "$:/language/ThemeTweaks/Options/StickyTitles/Hint",
            "text": "Causes tiddler titles to \"stick\" to the top of the browser window. Caution: Does not work at all with Chrome, and causes some layout issues in Firefox"
        },
        "$:/language/ThemeTweaks/Options/CodeWrapping": {
            "title": "$:/language/ThemeTweaks/Options/CodeWrapping",
            "text": "Wrap long lines in code blocks"
        },
        "$:/language/ThemeTweaks/Settings": {
            "title": "$:/language/ThemeTweaks/Settings",
            "text": "Settings"
        },
        "$:/language/ThemeTweaks/Settings/FontFamily": {
            "title": "$:/language/ThemeTweaks/Settings/FontFamily",
            "text": "Font family"
        },
        "$:/language/ThemeTweaks/Settings/CodeFontFamily": {
            "title": "$:/language/ThemeTweaks/Settings/CodeFontFamily",
            "text": "Code font family"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImage": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImage",
            "text": "Page background image"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment",
            "text": "Page background image attachment"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll",
            "text": "Scroll with tiddlers"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed",
            "text": "Fixed to window"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize",
            "text": "Page background image size"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto",
            "text": "Auto"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover",
            "text": "Cover"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain",
            "text": "Contain"
        },
        "$:/language/ThemeTweaks/Metrics": {
            "title": "$:/language/ThemeTweaks/Metrics",
            "text": "Sizes"
        },
        "$:/language/ThemeTweaks/Metrics/FontSize": {
            "title": "$:/language/ThemeTweaks/Metrics/FontSize",
            "text": "Font size"
        },
        "$:/language/ThemeTweaks/Metrics/LineHeight": {
            "title": "$:/language/ThemeTweaks/Metrics/LineHeight",
            "text": "Line height"
        },
        "$:/language/ThemeTweaks/Metrics/BodyFontSize": {
            "title": "$:/language/ThemeTweaks/Metrics/BodyFontSize",
            "text": "Font size for tiddler body"
        },
        "$:/language/ThemeTweaks/Metrics/BodyLineHeight": {
            "title": "$:/language/ThemeTweaks/Metrics/BodyLineHeight",
            "text": "Line height for tiddler body"
        },
        "$:/language/ThemeTweaks/Metrics/StoryLeft": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryLeft",
            "text": "Story left position"
        },
        "$:/language/ThemeTweaks/Metrics/StoryLeft/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryLeft/Hint",
            "text": "how far the left margin of the story river<br>(tiddler area) is from the left of the page"
        },
        "$:/language/ThemeTweaks/Metrics/StoryTop": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryTop",
            "text": "Story top position"
        },
        "$:/language/ThemeTweaks/Metrics/StoryTop/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryTop/Hint",
            "text": "how far the top margin of the story river<br>is from the top of the page"
        },
        "$:/language/ThemeTweaks/Metrics/StoryRight": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryRight",
            "text": "Story right"
        },
        "$:/language/ThemeTweaks/Metrics/StoryRight/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryRight/Hint",
            "text": "how far the left margin of the sidebar <br>is from the left of the page"
        },
        "$:/language/ThemeTweaks/Metrics/StoryWidth": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryWidth",
            "text": "Story width"
        },
        "$:/language/ThemeTweaks/Metrics/StoryWidth/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryWidth/Hint",
            "text": "the overall width of the story river"
        },
        "$:/language/ThemeTweaks/Metrics/TiddlerWidth": {
            "title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth",
            "text": "Tiddler width"
        },
        "$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint",
            "text": "within the story river"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint",
            "text": "Sidebar breakpoint"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint",
            "text": "the minimum page width at which the story<br>river and sidebar will appear side by side"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarWidth": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarWidth",
            "text": "Sidebar width"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint",
            "text": "the width of the sidebar in fluid-fixed layout"
        },
        "$:/language/TiddlerInfo/Advanced/Caption": {
            "title": "$:/language/TiddlerInfo/Advanced/Caption",
            "text": "Advanced"
        },
        "$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint",
            "text": "none"
        },
        "$:/language/TiddlerInfo/Advanced/PluginInfo/Heading": {
            "title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Heading",
            "text": "Plugin Details"
        },
        "$:/language/TiddlerInfo/Advanced/PluginInfo/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Hint",
            "text": "This plugin contains the following shadow tiddlers:"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading",
            "text": "Shadow Status"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint",
            "text": "The tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> is not a shadow tiddler"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint",
            "text": "The tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> is a shadow tiddler"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source",
            "text": "It is defined in the plugin <$link to=<<pluginTiddler>>><$text text=<<pluginTiddler>>/></$link>"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint",
            "text": "It is overridden by an ordinary tiddler"
        },
        "$:/language/TiddlerInfo/Fields/Caption": {
            "title": "$:/language/TiddlerInfo/Fields/Caption",
            "text": "Fields"
        },
        "$:/language/TiddlerInfo/List/Caption": {
            "title": "$:/language/TiddlerInfo/List/Caption",
            "text": "List"
        },
        "$:/language/TiddlerInfo/List/Empty": {
            "title": "$:/language/TiddlerInfo/List/Empty",
            "text": "This tiddler does not have a list"
        },
        "$:/language/TiddlerInfo/Listed/Caption": {
            "title": "$:/language/TiddlerInfo/Listed/Caption",
            "text": "Listed"
        },
        "$:/language/TiddlerInfo/Listed/Empty": {
            "title": "$:/language/TiddlerInfo/Listed/Empty",
            "text": "This tiddler is not listed by any others"
        },
        "$:/language/TiddlerInfo/References/Caption": {
            "title": "$:/language/TiddlerInfo/References/Caption",
            "text": "References"
        },
        "$:/language/TiddlerInfo/References/Empty": {
            "title": "$:/language/TiddlerInfo/References/Empty",
            "text": "No tiddlers link to this one"
        },
        "$:/language/TiddlerInfo/Tagging/Caption": {
            "title": "$:/language/TiddlerInfo/Tagging/Caption",
            "text": "Tagging"
        },
        "$:/language/TiddlerInfo/Tagging/Empty": {
            "title": "$:/language/TiddlerInfo/Tagging/Empty",
            "text": "No tiddlers are tagged with this one"
        },
        "$:/language/TiddlerInfo/Tools/Caption": {
            "title": "$:/language/TiddlerInfo/Tools/Caption",
            "text": "Tools"
        },
        "$:/language/Docs/Types/application/javascript": {
            "title": "$:/language/Docs/Types/application/javascript",
            "description": "JavaScript code",
            "name": "application/javascript",
            "group": "Developer",
            "group-sort": "2"
        },
        "$:/language/Docs/Types/application/json": {
            "title": "$:/language/Docs/Types/application/json",
            "description": "JSON data",
            "name": "application/json",
            "group": "Developer",
            "group-sort": "2"
        },
        "$:/language/Docs/Types/application/x-tiddler-dictionary": {
            "title": "$:/language/Docs/Types/application/x-tiddler-dictionary",
            "description": "Data dictionary",
            "name": "application/x-tiddler-dictionary",
            "group": "Developer",
            "group-sort": "2"
        },
        "$:/language/Docs/Types/image/gif": {
            "title": "$:/language/Docs/Types/image/gif",
            "description": "GIF image",
            "name": "image/gif",
            "group": "Image",
            "group-sort": "1"
        },
        "$:/language/Docs/Types/image/jpeg": {
            "title": "$:/language/Docs/Types/image/jpeg",
            "description": "JPEG image",
            "name": "image/jpeg",
            "group": "Image",
            "group-sort": "1"
        },
        "$:/language/Docs/Types/image/png": {
            "title": "$:/language/Docs/Types/image/png",
            "description": "PNG image",
            "name": "image/png",
            "group": "Image",
            "group-sort": "1"
        },
        "$:/language/Docs/Types/image/svg+xml": {
            "title": "$:/language/Docs/Types/image/svg+xml",
            "description": "Structured Vector Graphics image",
            "name": "image/svg+xml",
            "group": "Image",
            "group-sort": "1"
        },
        "$:/language/Docs/Types/image/x-icon": {
            "title": "$:/language/Docs/Types/image/x-icon",
            "description": "ICO format icon file",
            "name": "image/x-icon",
            "group": "Image",
            "group-sort": "1"
        },
        "$:/language/Docs/Types/text/css": {
            "title": "$:/language/Docs/Types/text/css",
            "description": "Static stylesheet",
            "name": "text/css",
            "group": "Developer",
            "group-sort": "2"
        },
        "$:/language/Docs/Types/text/html": {
            "title": "$:/language/Docs/Types/text/html",
            "description": "HTML markup",
            "name": "text/html",
            "group": "Text",
            "group-sort": "0"
        },
        "$:/language/Docs/Types/text/plain": {
            "title": "$:/language/Docs/Types/text/plain",
            "description": "Plain text",
            "name": "text/plain",
            "group": "Text",
            "group-sort": "0"
        },
        "$:/language/Docs/Types/text/vnd.tiddlywiki": {
            "title": "$:/language/Docs/Types/text/vnd.tiddlywiki",
            "description": "TiddlyWiki 5",
            "name": "text/vnd.tiddlywiki",
            "group": "Text",
            "group-sort": "0"
        },
        "$:/language/Docs/Types/text/x-tiddlywiki": {
            "title": "$:/language/Docs/Types/text/x-tiddlywiki",
            "description": "TiddlyWiki Classic",
            "name": "text/x-tiddlywiki",
            "group": "Text",
            "group-sort": "0"
        },
        "$:/languages/en-GB/icon": {
            "title": "$:/languages/en-GB/icon",
            "type": "image/svg+xml",
            "text": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 60 30\" width=\"1200\" height=\"600\">\n<clipPath id=\"t\">\n\t<path d=\"M30,15 h30 v15 z v15 h-30 z h-30 v-15 z v-15 h30 z\"/>\n</clipPath>\n<path d=\"M0,0 v30 h60 v-30 z\" fill=\"#00247d\"/>\n<path d=\"M0,0 L60,30 M60,0 L0,30\" stroke=\"#fff\" stroke-width=\"6\"/>\n<path d=\"M0,0 L60,30 M60,0 L0,30\" clip-path=\"url(#t)\" stroke=\"#cf142b\" stroke-width=\"4\"/>\n<path d=\"M30,0 v30 M0,15 h60\" stroke=\"#fff\" stroke-width=\"10\"/>\n<path d=\"M30,0 v30 M0,15 h60\" stroke=\"#cf142b\" stroke-width=\"6\"/>\n</svg>\n"
        },
        "$:/languages/en-GB": {
            "title": "$:/languages/en-GB",
            "name": "en-GB",
            "description": "English (British)",
            "author": "JeremyRuston",
            "core-version": ">=5.0.0\"",
            "text": "Stub pseudo-plugin for the default language"
        },
        "$:/core/modules/commander.js": {
            "text": "/*\\\ntitle: $:/core/modules/commander.js\ntype: application/javascript\nmodule-type: global\n\nThe $tw.Commander class is a command interpreter\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParse a sequence of commands\n\tcommandTokens: an array of command string tokens\n\twiki: reference to the wiki store object\n\tstreams: {output:, error:}, each of which has a write(string) method\n\tcallback: a callback invoked as callback(err) where err is null if there was no error\n*/\nvar Commander = function(commandTokens,callback,wiki,streams) {\n\tvar path = require(\"path\");\n\tthis.commandTokens = commandTokens;\n\tthis.nextToken = 0;\n\tthis.callback = callback;\n\tthis.wiki = wiki;\n\tthis.streams = streams;\n\tthis.outputPath = path.resolve($tw.boot.wikiPath,$tw.config.wikiOutputSubDir);\n};\n\n/*\nLog a string if verbose flag is set\n*/\nCommander.prototype.log = function(str) {\n\tif(this.verbose) {\n\t\tthis.streams.output.write(str + \"\\n\");\n\t}\n};\n\n/*\nWrite a string if verbose flag is set\n*/\nCommander.prototype.write = function(str) {\n\tif(this.verbose) {\n\t\tthis.streams.output.write(str);\n\t}\n};\n\n/*\nAdd a string of tokens to the command queue\n*/\nCommander.prototype.addCommandTokens = function(commandTokens) {\n\tvar params = commandTokens.slice(0);\n\tparams.unshift(0);\n\tparams.unshift(this.nextToken);\n\tArray.prototype.splice.apply(this.commandTokens,params);\n};\n\n/*\nExecute the sequence of commands and invoke a callback on completion\n*/\nCommander.prototype.execute = function() {\n\tthis.executeNextCommand();\n};\n\n/*\nExecute the next command in the sequence\n*/\nCommander.prototype.executeNextCommand = function() {\n\tvar self = this;\n\t// Invoke the callback if there are no more commands\n\tif(this.nextToken >= this.commandTokens.length) {\n\t\tthis.callback(null);\n\t} else {\n\t\t// Get and check the command token\n\t\tvar commandName = this.commandTokens[this.nextToken++];\n\t\tif(commandName.substr(0,2) !== \"--\") {\n\t\t\tthis.callback(\"Missing command: \" + commandName);\n\t\t} else {\n\t\t\tcommandName = commandName.substr(2); // Trim off the --\n\t\t\t// Accumulate the parameters to the command\n\t\t\tvar params = [];\n\t\t\twhile(this.nextToken < this.commandTokens.length && \n\t\t\t\tthis.commandTokens[this.nextToken].substr(0,2) !== \"--\") {\n\t\t\t\tparams.push(this.commandTokens[this.nextToken++]);\n\t\t\t}\n\t\t\t// Get the command info\n\t\t\tvar command = $tw.commands[commandName],\n\t\t\t\tc,err;\n\t\t\tif(!command) {\n\t\t\t\tthis.callback(\"Unknown command: \" + commandName);\n\t\t\t} else {\n\t\t\t\tif(this.verbose) {\n\t\t\t\t\tthis.streams.output.write(\"Executing command: \" + commandName + \" \" + params.join(\" \") + \"\\n\");\n\t\t\t\t}\n\t\t\t\tif(command.info.synchronous) {\n\t\t\t\t\t// Synchronous command\n\t\t\t\t\tc = new command.Command(params,this);\n\t\t\t\t\terr = c.execute();\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\tthis.callback(err);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.executeNextCommand();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Asynchronous command\n\t\t\t\t\tc = new command.Command(params,this,function(err) {\n\t\t\t\t\t\tif(err) {\n\t\t\t\t\t\t\tself.callback(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself.executeNextCommand();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\terr = c.execute();\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\tthis.callback(err);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nCommander.initCommands = function(moduleType) {\n\tmoduleType = moduleType || \"command\";\n\t$tw.commands = {};\n\t$tw.modules.forEachModuleOfType(moduleType,function(title,module) {\n\t\tvar c = $tw.commands[module.info.name] = {};\n\t\t// Add the methods defined by the module\n\t\tfor(var f in module) {\n\t\t\tif($tw.utils.hop(module,f)) {\n\t\t\t\tc[f] = module[f];\n\t\t\t}\n\t\t}\n\t});\n};\n\nexports.Commander = Commander;\n\n})();\n",
            "title": "$:/core/modules/commander.js",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/commands/build.js": {
            "text": "/*\\\ntitle: $:/core/modules/commands/build.js\ntype: application/javascript\nmodule-type: command\n\nCommand to build a build target\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"build\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\t// Get the build targets defined in the wiki\n\tvar buildTargets = $tw.boot.wikiInfo.build;\n\tif(!buildTargets) {\n\t\treturn \"No build targets defined\";\n\t}\n\t// Loop through each of the specified targets\n\tvar targets;\n\tif(this.params.length > 0) {\n\t\ttargets = this.params;\n\t} else {\n\t\ttargets = Object.keys(buildTargets);\n\t}\n\tfor(var targetIndex=0; targetIndex<targets.length; targetIndex++) {\n\t\tvar target = targets[targetIndex],\n\t\t\tcommands = buildTargets[target];\n\t\tif(!commands) {\n\t\t\treturn \"Build target '\" + target + \"' not found\";\n\t\t}\n\t\t// Add the commands to the queue\n\t\tthis.commander.addCommandTokens(commands);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "title": "$:/core/modules/commands/build.js",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/clearpassword.js": {
            "text": "/*\\\ntitle: $:/core/modules/commands/clearpassword.js\ntype: application/javascript\nmodule-type: command\n\nClear password for crypto operations\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"clearpassword\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\t$tw.crypto.setPassword(null);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "title": "$:/core/modules/commands/clearpassword.js",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/editions.js": {
            "text": "/*\\\ntitle: $:/core/modules/commands/editions.js\ntype: application/javascript\nmodule-type: command\n\nCommand to list the available editions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"editions\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this;\n\t// Output the list\n\tthis.commander.streams.output.write(\"Available editions:\\n\\n\");\n\tvar editionInfo = $tw.utils.getEditionInfo();\n\t$tw.utils.each(editionInfo,function(info,name) {\n\t\tself.commander.streams.output.write(\"    \" + name + \": \" + info.description + \"\\n\");\n\t});\n\tthis.commander.streams.output.write(\"\\n\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "title": "$:/core/modules/commands/editions.js",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/fetch.js": {
            "text": "/*\\\ntitle: $:/core/modules/commands/fetch.js\ntype: application/javascript\nmodule-type: command\n\nCommands to fetch external tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"fetch\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing subcommand and url\";\n\t}\n\tvar subcommand = this.params[0],\n\t\turl = this.params[1],\n\t\timportFilter = this.params[2] || \"[all[tiddlers]]\",\n\t\ttransformFilter = this.params[3] || \"\";\n\tswitch(subcommand) {\n\t\tcase \"file\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\turl: url,\n\t\t\t\timportFilter: importFilter,\n\t\t\t\ttransformFilter: transformFilter,\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"files\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\turlFilter: url,\n\t\t\t\timportFilter: importFilter,\n\t\t\t\ttransformFilter: transformFilter,\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t}\n\treturn null;\n};\n\nCommand.prototype.fetchFiles = function(options) {\n\tvar self = this;\n\t// Get the list of URLs\n\tvar urls;\n\tif(options.url) {\n\t\turls = [options.url]\n\t} else if(options.urlFilter) {\n\t\turls = $tw.wiki.filterTiddlers(options.urlFilter);\n\t} else {\n\t\treturn \"Missing URL\";\n\t}\n\t// Process each URL in turn\n\tvar next = 0;\n\tvar getNextFile = function(err) {\n\t\tif(err) {\n\t\t\treturn options.callback(err);\n\t\t}\n\t\tif(next < urls.length) {\n\t\t\tself.fetchFile(urls[next++],options,getNextFile);\n\t\t} else {\n\t\t\toptions.callback(null);\n\t\t}\n\t};\n\tgetNextFile(null);\n\t// Success\n\treturn null;\n};\n\nCommand.prototype.fetchFile = function(url,options,callback) {\n\tvar self = this,\n\t\tlib = url.substr(0,8) === \"https://\" ? require(\"https\") : require(\"http\");\n\tlib.get(url).on(\"response\",function(response) {\n\t    var type = (response.headers[\"content-type\"] || \"\").split(\";\")[0],\n\t    \tbody = \"\";\n\t    self.commander.write(\"Reading \" + url + \": \");\n\t    response.on(\"data\",function(chunk) {\n\t        body += chunk;\n\t        self.commander.write(\".\");\n\t    });\n\t    response.on(\"end\",function() {\n\t        self.commander.write(\"\\n\");\n\t        if(response.statusCode === 200) {\n\t\t        self.processBody(body,type,options);\n\t\t        callback(null);\n\t        } else {\n\t        \tcallback(\"Error \" + response.statusCode + \" retrieving \" + url)\n\t        }\n\t   \t});\n\t   \tresponse.on(\"error\",function(e) {\n\t\t\tconsole.log(\"Error on GET request: \" + e);\n\t\t\tcallback(e);\n\t   \t});\n\t});\n\treturn null;\n};\n\nCommand.prototype.processBody = function(body,type,options) {\n\t// Deserialise the HTML file and put the tiddlers in their own wiki\n\tvar self = this,\n\t\tincomingWiki = new $tw.Wiki(),\n\t\ttiddlers = this.commander.wiki.deserializeTiddlers(type || \"text/html\",body,{});\n\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\tincomingWiki.addTiddler(new $tw.Tiddler(tiddler));\n\t});\n\t// Filter the tiddlers to select the ones we want\n\tvar filteredTitles = incomingWiki.filterTiddlers(options.importFilter);\n\t// Import the selected tiddlers\n\tvar count = 0;\n\tincomingWiki.each(function(tiddler,title) {\n\t\tif(filteredTitles.indexOf(title) !== -1) {\n\t\t\tvar newTiddler;\n\t\t\tif(options.transformFilter) {\n\t\t\t\tvar transformedTitle = (incomingWiki.filterTiddlers(options.transformFilter,null,self.commander.wiki.makeTiddlerIterator([title])) || [\"\"])[0];\n\t\t\t\tif(transformedTitle) {\n\t\t\t\t\tself.commander.log(\"Importing \" + title + \" as \" + transformedTitle)\n\t\t\t\t\tnewTiddler = new $tw.Tiddler(tiddler,{title: transformedTitle});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tself.commander.log(\"Importing \" + title)\n\t\t\t\tnewTiddler = tiddler;\n\t\t\t}\n\t\t\tself.commander.wiki.importTiddler(newTiddler);\n\t\t\tcount++;\n\t\t}\n\t});\n\tself.commander.log(\"Imported \" + count + \" tiddlers\")\n};\n\nexports.Command = Command;\n\n})();\n",
            "title": "$:/core/modules/commands/fetch.js",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/help.js": {
            "text": "/*\\\ntitle: $:/core/modules/commands/help.js\ntype: application/javascript\nmodule-type: command\n\nHelp command\n\n\\*/\n(function(){\n\n/*jshint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"help\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar subhelp = this.params[0] || \"default\",\n\t\thelpBase = \"$:/language/Help/\",\n\t\ttext;\n\tif(!this.commander.wiki.getTiddler(helpBase + subhelp)) {\n\t\tsubhelp = \"notfound\";\n\t}\n\t// Wikify the help as formatted text (ie block elements generate newlines)\n\ttext = this.commander.wiki.renderTiddler(\"text/plain-formatted\",helpBase + subhelp);\n\t// Remove any leading linebreaks\n\ttext = text.replace(/^(\\r?\\n)*/g,\"\");\n\tthis.commander.streams.output.write(text);\n};\n\nexports.Command = Command;\n\n})();\n",
            "title": "$:/core/modules/commands/help.js",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/init.js": {
            "text": "/*\\\ntitle: $:/core/modules/commands/init.js\ntype: application/javascript\nmodule-type: command\n\nCommand to initialise an empty wiki folder\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"init\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar fs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\t// Check that we don't already have a valid wiki folder\n\tif($tw.boot.wikiTiddlersPath || ($tw.utils.isDirectory($tw.boot.wikiPath) && !$tw.utils.isDirectoryEmpty($tw.boot.wikiPath))) {\n\t\treturn \"Wiki folder is not empty\";\n\t}\n\t// Loop through each of the specified editions\n\tvar editions = this.params.length > 0 ? this.params : [\"empty\"];\n\tfor(var editionIndex=0; editionIndex<editions.length; editionIndex++) {\n\t\tvar editionName = editions[editionIndex];\n\t\t// Check the edition exists\n\t\tvar editionPath = $tw.findLibraryItem(editionName,$tw.getLibraryItemSearchPaths($tw.config.editionsPath,$tw.config.editionsEnvVar));\n\t\tif(!$tw.utils.isDirectory(editionPath)) {\n\t\t\treturn \"Edition '\" + editionName + \"' not found\";\n\t\t}\n\t\t// Copy the edition content\n\t\tvar err = $tw.utils.copyDirectory(editionPath,$tw.boot.wikiPath);\n\t\tif(!err) {\n\t\t\tthis.commander.streams.output.write(\"Copied edition '\" + editionName + \"' to \" + $tw.boot.wikiPath + \"\\n\");\n\t\t} else {\n\t\t\treturn err;\n\t\t}\n\t}\n\t// Tweak the tiddlywiki.info to remove any included wikis\n\tvar packagePath = $tw.boot.wikiPath + \"/tiddlywiki.info\",\n\t\tpackageJson = JSON.parse(fs.readFileSync(packagePath));\n\tdelete packageJson.includeWikis;\n\tfs.writeFileSync(packagePath,JSON.stringify(packageJson,null,$tw.config.preferences.jsonSpaces));\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "title": "$:/core/modules/commands/init.js",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/load.js": {
            "text": "/*\\\ntitle: $:/core/modules/commands/load.js\ntype: application/javascript\nmodule-type: command\n\nCommand to load tiddlers from a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"load\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar ext = path.extname(self.params[0]),\n\t\tstat = fs.statSync(self.params[0]),\n\t\ttiddlers = $tw.loadTiddlersFromPath(self.params[0]),\n\t\tcount = 0;\n\t$tw.utils.each(tiddlers,function(tiddlerInfo) {\n\t\t$tw.utils.each(tiddlerInfo.tiddlers,function(tiddler) {\n\t\t\tself.commander.wiki.importTiddler(new $tw.Tiddler(tiddler));\n\t\t\tcount++;\n\t\t});\n\t});\n\tif(!count) {\n\t\tself.callback(\"No tiddlers found in file \\\"\" + self.params[0] + \"\\\"\");\n\t} else {\n\t\tself.callback(null);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "title": "$:/core/modules/commands/load.js",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/makelibrary.js": {
            "text": "/*\\\ntitle: $:/core/modules/commands/makelibrary.js\ntype: application/javascript\nmodule-type: command\n\nCommand to pack all of the plugins in the library into a plugin tiddler of type \"library\"\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"makelibrary\",\n\tsynchronous: true\n};\n\nvar UPGRADE_LIBRARY_TITLE = \"$:/UpgradeLibrary\";\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar wiki = this.commander.wiki,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\tupgradeLibraryTitle = this.params[0] || UPGRADE_LIBRARY_TITLE,\n\t\ttiddlers = {};\n\t// Collect up the library plugins\n\tvar collectPlugins = function(folder) {\n\t\t\tvar pluginFolders = fs.readdirSync(folder);\n\t\t\tfor(var p=0; p<pluginFolders.length; p++) {\n\t\t\t\tif(!$tw.boot.excludeRegExp.test(pluginFolders[p])) {\n\t\t\t\t\tpluginFields = $tw.loadPluginFolder(path.resolve(folder,\"./\" + pluginFolders[p]));\n\t\t\t\t\tif(pluginFields && pluginFields.title) {\n\t\t\t\t\t\ttiddlers[pluginFields.title] = pluginFields;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tcollectPublisherPlugins = function(folder) {\n\t\t\tvar publisherFolders = fs.readdirSync(folder);\n\t\t\tfor(var t=0; t<publisherFolders.length; t++) {\n\t\t\t\tif(!$tw.boot.excludeRegExp.test(publisherFolders[t])) {\n\t\t\t\t\tcollectPlugins(path.resolve(folder,\"./\" + publisherFolders[t]));\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\tcollectPublisherPlugins(path.resolve($tw.boot.corePath,$tw.config.pluginsPath));\n\tcollectPublisherPlugins(path.resolve($tw.boot.corePath,$tw.config.themesPath));\n\tcollectPlugins(path.resolve($tw.boot.corePath,$tw.config.languagesPath));\n\t// Save the upgrade library tiddler\n\tvar pluginFields = {\n\t\ttitle: upgradeLibraryTitle,\n\t\ttype: \"application/json\",\n\t\t\"plugin-type\": \"library\",\n\t\t\"text\": JSON.stringify({tiddlers: tiddlers},null,$tw.config.preferences.jsonSpaces)\n\t};\n\twiki.addTiddler(new $tw.Tiddler(pluginFields));\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "title": "$:/core/modules/commands/makelibrary.js",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/output.js": {
            "text": "/*\\\ntitle: $:/core/modules/commands/output.js\ntype: application/javascript\nmodule-type: command\n\nCommand to set the default output location (defaults to current working directory)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"output\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar fs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 1) {\n\t\treturn \"Missing output path\";\n\t}\n\tthis.commander.outputPath = path.resolve(process.cwd(),this.params[0]);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "title": "$:/core/modules/commands/output.js",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/password.js": {
            "text": "/*\\\ntitle: $:/core/modules/commands/password.js\ntype: application/javascript\nmodule-type: command\n\nSave password for crypto operations\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"password\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing password\";\n\t}\n\t$tw.crypto.setPassword(this.params[0]);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "title": "$:/core/modules/commands/password.js",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/rendertiddler.js": {
            "text": "/*\\\ntitle: $:/core/modules/commands/rendertiddler.js\ntype: application/javascript\nmodule-type: command\n\nCommand to render a tiddler and save it to a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"rendertiddler\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\ttitle = this.params[0],\n\t\tfilename = path.resolve(this.commander.outputPath,this.params[1]),\n\t\ttype = this.params[2] || \"text/html\",\n\t\ttemplate = this.params[3],\n\t\tname = this.params[4],\n\t\tvalue = this.params[5],\n\t\tvariables = {};\n\t$tw.utils.createFileDirectories(filename);\n\tif(template) {\n\t\tvariables.currentTiddler = title;\n\t\ttitle = template;\n\t}\n\tif(name && value) {\n\t\tvariables[name] = value;\n\t}\n\tfs.writeFile(filename,this.commander.wiki.renderTiddler(type,title,{variables: variables}),\"utf8\",function(err) {\n\t\tself.callback(err);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "title": "$:/core/modules/commands/rendertiddler.js",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/rendertiddlers.js": {
            "text": "/*\\\ntitle: $:/core/modules/commands/rendertiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to render several tiddlers to a folder of files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"rendertiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\ttemplate = this.params[1],\n\t\toutputPath = this.commander.outputPath,\n\t\tpathname = path.resolve(outputPath,this.params[2]),\t\t\n\t\ttype = this.params[3] || \"text/html\",\n\t\textension = this.params[4] || \".html\",\n\t\tdeleteDirectory = (this.params[5] || \"\").toLowerCase() !== \"noclean\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\tif(deleteDirectory) {\n\t\t$tw.utils.deleteDirectory(pathname);\n\t}\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(template),\n\t\t\twidgetNode = wiki.makeWidget(parser,{variables: {currentTiddler: title}}),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\tvar text = type === \"text/html\" ? container.innerHTML : container.textContent,\n\t\t\texportPath = null;\n\t\tif($tw.utils.hop($tw.macros,\"tv-get-export-path\")) {\n\t\t\tvar macroPath = $tw.macros[\"tv-get-export-path\"].run.apply(self,[title]);\n\t\t\tif(macroPath) {\n\t\t\t\texportPath = path.resolve(outputPath,macroPath + extension);\n\t\t\t}\n\t\t}\n\t\tvar finalPath = exportPath || path.resolve(pathname,encodeURIComponent(title) + extension);\n\t\t$tw.utils.createFileDirectories(finalPath);\n\t\tfs.writeFileSync(finalPath,text,\"utf8\");\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "title": "$:/core/modules/commands/rendertiddlers.js",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/savelibrarytiddlers.js": {
            "text": "/*\\\ntitle: $:/core/modules/commands/savelibrarytiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the subtiddlers of a bundle tiddler as a series of JSON files\n\n--savelibrarytiddlers <tiddler> <pathname> <skinnylisting>\n\nThe tiddler identifies the bundle tiddler that contains the subtiddlers.\n\nThe pathname specifies the pathname to the folder in which the JSON files should be saved. The filename is the URL encoded title of the subtiddler.\n\nThe skinnylisting specifies the title of the tiddler to which a JSON catalogue of the subtiddlers will be saved. The JSON file contains the same data as the bundle tiddler but with the `text` field removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savelibrarytiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\tcontainerTitle = this.params[0],\n\t\tfilter = this.params[1],\n\t\tbasepath = this.params[2],\n\t\tskinnyListTitle = this.params[3];\n\t// Get the container tiddler as data\n\tvar containerData = self.commander.wiki.getTiddlerDataCached(containerTitle,undefined);\n\tif(!containerData) {\n\t\treturn \"'\" + containerTitle + \"' is not a tiddler bundle\";\n\t}\n\t// Filter the list of plugins\n\tvar pluginList = [];\n\t$tw.utils.each(containerData.tiddlers,function(tiddler,title) {\n\t\tpluginList.push(title);\n\t});\n\tvar filteredPluginList;\n\tif(filter) {\n\t\tfilteredPluginList = self.commander.wiki.filterTiddlers(filter,null,self.commander.wiki.makeTiddlerIterator(pluginList));\n\t} else {\n\t\tfilteredPluginList = pluginList;\n\t}\n\t// Iterate through the plugins\n\tvar skinnyList = [];\n\t$tw.utils.each(filteredPluginList,function(title) {\n\t\tvar tiddler = containerData.tiddlers[title];\n\t\t// Save each JSON file and collect the skinny data\n\t\tvar pathname = path.resolve(self.commander.outputPath,basepath + encodeURIComponent(title) + \".json\");\n\t\t$tw.utils.createFileDirectories(pathname);\n\t\tfs.writeFileSync(pathname,JSON.stringify(tiddler,null,$tw.config.preferences.jsonSpaces),\"utf8\");\n\t\t// Collect the skinny list data\n\t\tvar pluginTiddlers = JSON.parse(tiddler.text),\n\t\t\treadmeContent = (pluginTiddlers.tiddlers[title + \"/readme\"] || {}).text,\n\t\t\ticonTiddler = pluginTiddlers.tiddlers[title + \"/icon\"] || {},\n\t\t\ticonType = iconTiddler.type,\n\t\t\ticonText = iconTiddler.text,\n\t\t\ticonContent;\n\t\tif(iconType && iconText) {\n\t\t\ticonContent = $tw.utils.makeDataUri(iconText,iconType);\n\t\t}\n\t\tskinnyList.push($tw.utils.extend({},tiddler,{text: undefined, readme: readmeContent, icon: iconContent}));\n\t});\n\t// Save the catalogue tiddler\n\tif(skinnyListTitle) {\n\t\tself.commander.wiki.setTiddlerData(skinnyListTitle,skinnyList);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "title": "$:/core/modules/commands/savelibrarytiddlers.js",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/savetiddler.js": {
            "text": "/*\\\ntitle: $:/core/modules/commands/savetiddler.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the content of a tiddler to a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savetiddler\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\ttitle = this.params[0],\n\t\tfilename = path.resolve(this.commander.outputPath,this.params[1]),\n\t\ttiddler = this.commander.wiki.getTiddler(title);\n\tif(tiddler) {\n\t\tvar type = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"};\n\t\t$tw.utils.createFileDirectories(filename);\n\t\tfs.writeFile(filename,tiddler.fields.text,contentTypeInfo.encoding,function(err) {\n\t\t\tself.callback(err);\n\t\t});\n\t} else {\n\t\treturn \"Missing tiddler: \" + title;\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "title": "$:/core/modules/commands/savetiddler.js",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/savetiddlers.js": {
            "text": "/*\\\ntitle: $:/core/modules/commands/savetiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save several tiddlers to a folder of files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"savetiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\tpathname = path.resolve(this.commander.outputPath,this.params[1]),\n\t\tdeleteDirectory = (this.params[2] || \"\").toLowerCase() !== \"noclean\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\tif(deleteDirectory) {\n\t\t$tw.utils.deleteDirectory(pathname);\n\t}\n\t$tw.utils.createDirectory(pathname);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.commander.wiki.getTiddler(title),\n\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"},\n\t\t\tfilename = path.resolve(pathname,encodeURIComponent(title));\n\t\tfs.writeFileSync(filename,tiddler.fields.text,contentTypeInfo.encoding);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "title": "$:/core/modules/commands/savetiddlers.js",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/server.js": {
            "text": "/*\\\ntitle: $:/core/modules/commands/server.js\ntype: application/javascript\nmodule-type: command\n\nServe tiddlers over http\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nif($tw.node) {\n\tvar util = require(\"util\"),\n\t\tfs = require(\"fs\"),\n\t\turl = require(\"url\"),\n\t\tpath = require(\"path\"),\n\t\thttp = require(\"http\");\n}\n\nexports.info = {\n\tname: \"server\",\n\tsynchronous: true\n};\n\n/*\nA simple HTTP server with regexp-based routes\n*/\nfunction SimpleServer(options) {\n\tthis.routes = options.routes || [];\n\tthis.wiki = options.wiki;\n\tthis.variables = options.variables || {};\n}\n\nSimpleServer.prototype.set = function(obj) {\n\tvar self = this;\n\t$tw.utils.each(obj,function(value,name) {\n\t\tself.variables[name] = value;\n\t});\n};\n\nSimpleServer.prototype.get = function(name) {\n\treturn this.variables[name];\n};\n\nSimpleServer.prototype.addRoute = function(route) {\n\tthis.routes.push(route);\n};\n\nSimpleServer.prototype.findMatchingRoute = function(request,state) {\n\tvar pathprefix = this.get(\"pathprefix\") || \"\";\n\tfor(var t=0; t<this.routes.length; t++) {\n\t\tvar potentialRoute = this.routes[t],\n\t\t\tpathRegExp = potentialRoute.path,\n\t\t\tpathname = state.urlInfo.pathname,\n\t\t\tmatch;\n\t\tif(pathprefix) {\n\t\t\tif(pathname.substr(0,pathprefix.length) === pathprefix) {\n\t\t\t\tpathname = pathname.substr(pathprefix.length);\n\t\t\t\tmatch = potentialRoute.path.exec(pathname);\n\t\t\t} else {\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t} else {\n\t\t\tmatch = potentialRoute.path.exec(pathname);\n\t\t}\n\t\tif(match && request.method === potentialRoute.method) {\n\t\t\tstate.params = [];\n\t\t\tfor(var p=1; p<match.length; p++) {\n\t\t\t\tstate.params.push(match[p]);\n\t\t\t}\n\t\t\treturn potentialRoute;\n\t\t}\n\t}\n\treturn null;\n};\n\nSimpleServer.prototype.checkCredentials = function(request,incomingUsername,incomingPassword) {\n\tvar header = request.headers.authorization || \"\",\n\t\ttoken = header.split(/\\s+/).pop() || \"\",\n\t\tauth = $tw.utils.base64Decode(token),\n\t\tparts = auth.split(/:/),\n\t\tusername = parts[0],\n\t\tpassword = parts[1];\n\tif(incomingUsername === username && incomingPassword === password) {\n\t\treturn \"ALLOWED\";\n\t} else {\n\t\treturn \"DENIED\";\n\t}\n};\n\nSimpleServer.prototype.requestHandler = function(request,response) {\n\t// Compose the state object\n\tvar self = this;\n\tvar state = {};\n\tstate.wiki = self.wiki;\n\tstate.server = self;\n\tstate.urlInfo = url.parse(request.url);\n\t// Find the route that matches this path\n\tvar route = self.findMatchingRoute(request,state);\n\t// Check for the username and password if we've got one\n\tvar username = self.get(\"username\"),\n\t\tpassword = self.get(\"password\");\n\tif(username && password) {\n\t\t// Check they match\n\t\tif(self.checkCredentials(request,username,password) !== \"ALLOWED\") {\n\t\t\tvar servername = state.wiki.getTiddlerText(\"$:/SiteTitle\") || \"TiddlyWiki5\";\n\t\t\tresponse.writeHead(401,\"Authentication required\",{\n\t\t\t\t\"WWW-Authenticate\": 'Basic realm=\"Please provide your username and password to login to ' + servername + '\"'\n\t\t\t});\n\t\t\tresponse.end();\n\t\t\treturn;\n\t\t}\n\t}\n\t// Return a 404 if we didn't find a route\n\tif(!route) {\n\t\tresponse.writeHead(404);\n\t\tresponse.end();\n\t\treturn;\n\t}\n\t// Set the encoding for the incoming request\n\t// TODO: Presumably this would need tweaking if we supported PUTting binary tiddlers\n\trequest.setEncoding(\"utf8\");\n\t// Dispatch the appropriate method\n\tswitch(request.method) {\n\t\tcase \"GET\": // Intentional fall-through\n\t\tcase \"DELETE\":\n\t\t\troute.handler(request,response,state);\n\t\t\tbreak;\n\t\tcase \"PUT\":\n\t\t\tvar data = \"\";\n\t\t\trequest.on(\"data\",function(chunk) {\n\t\t\t\tdata += chunk.toString();\n\t\t\t});\n\t\t\trequest.on(\"end\",function() {\n\t\t\t\tstate.data = data;\n\t\t\t\troute.handler(request,response,state);\n\t\t\t});\n\t\t\tbreak;\n\t}\n};\n\t\nSimpleServer.prototype.listen = function(port,host) {\n\thttp.createServer(this.requestHandler.bind(this)).listen(port,host);\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n\t// Set up server\n\tthis.server = new SimpleServer({\n\t\twiki: this.commander.wiki\n\t});\n\t// Add route handlers\n\tthis.server.addRoute({\n\t\tmethod: \"PUT\",\n\t\tpath: /^\\/recipes\\/default\\/tiddlers\\/(.+)$/,\n\t\thandler: function(request,response,state) {\n\t\t\tvar title = decodeURIComponent(state.params[0]),\n\t\t\t\tfields = JSON.parse(state.data);\n\t\t\t// Pull up any subfields in the `fields` object\n\t\t\tif(fields.fields) {\n\t\t\t\t$tw.utils.each(fields.fields,function(field,name) {\n\t\t\t\t\tfields[name] = field;\n\t\t\t\t});\n\t\t\t\tdelete fields.fields;\n\t\t\t}\n\t\t\t// Remove any revision field\n\t\t\tif(fields.revision) {\n\t\t\t\tdelete fields.revision;\n\t\t\t}\n\t\t\tstate.wiki.addTiddler(new $tw.Tiddler(state.wiki.getCreationFields(),fields,{title: title},state.wiki.getModificationFields()));\n\t\t\tvar changeCount = state.wiki.getChangeCount(title).toString();\n\t\t\tresponse.writeHead(204, \"OK\",{\n\t\t\t\tEtag: \"\\\"default/\" + encodeURIComponent(title) + \"/\" + changeCount + \":\\\"\",\n\t\t\t\t\"Content-Type\": \"text/plain\"\n\t\t\t});\n\t\t\tresponse.end();\n\t\t}\n\t});\n\tthis.server.addRoute({\n\t\tmethod: \"DELETE\",\n\t\tpath: /^\\/bags\\/default\\/tiddlers\\/(.+)$/,\n\t\thandler: function(request,response,state) {\n\t\t\tvar title = decodeURIComponent(state.params[0]);\n\t\t\tstate.wiki.deleteTiddler(title);\n\t\t\tresponse.writeHead(204, \"OK\", {\n\t\t\t\t\"Content-Type\": \"text/plain\"\n\t\t\t});\n\t\t\tresponse.end();\n\t\t}\n\t});\n\tthis.server.addRoute({\n\t\tmethod: \"GET\",\n\t\tpath: /^\\/$/,\n\t\thandler: function(request,response,state) {\n\t\t\tresponse.writeHead(200, {\"Content-Type\": state.server.get(\"serveType\")});\n\t\t\tvar text = state.wiki.renderTiddler(state.server.get(\"renderType\"),state.server.get(\"rootTiddler\"));\n\t\t\tresponse.end(text,\"utf8\");\n\t\t}\n\t});\n\tthis.server.addRoute({\n\t\tmethod: \"GET\",\n\t\tpath: /^\\/status$/,\n\t\thandler: function(request,response,state) {\n\t\t\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\t\t\tvar text = JSON.stringify({\n\t\t\t\tusername: state.server.get(\"username\"),\n\t\t\t\tspace: {\n\t\t\t\t\trecipe: \"default\"\n\t\t\t\t},\n\t\t\t\ttiddlywiki_version: $tw.version\n\t\t\t});\n\t\t\tresponse.end(text,\"utf8\");\n\t\t}\n\t});\n\tthis.server.addRoute({\n\t\tmethod: \"GET\",\n\t\tpath: /^\\/favicon.ico$/,\n\t\thandler: function(request,response,state) {\n\t\t\tresponse.writeHead(200, {\"Content-Type\": \"image/x-icon\"});\n\t\t\tvar buffer = state.wiki.getTiddlerText(\"$:/favicon.ico\",\"\");\n\t\t\tresponse.end(buffer,\"base64\");\n\t\t}\n\t});\n\tthis.server.addRoute({\n\t\tmethod: \"GET\",\n\t\tpath: /^\\/recipes\\/default\\/tiddlers.json$/,\n\t\thandler: function(request,response,state) {\n\t\t\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\t\t\tvar tiddlers = [];\n\t\t\tstate.wiki.forEachTiddler({sortField: \"title\"},function(title,tiddler) {\n\t\t\t\tvar tiddlerFields = {};\n\t\t\t\t$tw.utils.each(tiddler.fields,function(field,name) {\n\t\t\t\t\tif(name !== \"text\") {\n\t\t\t\t\t\ttiddlerFields[name] = tiddler.getFieldString(name);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\ttiddlerFields.revision = state.wiki.getChangeCount(title);\n\t\t\t\ttiddlerFields.type = tiddlerFields.type || \"text/vnd.tiddlywiki\";\n\t\t\t\ttiddlers.push(tiddlerFields);\n\t\t\t});\n\t\t\tvar text = JSON.stringify(tiddlers);\n\t\t\tresponse.end(text,\"utf8\");\n\t\t}\n\t});\n\tthis.server.addRoute({\n\t\tmethod: \"GET\",\n\t\tpath: /^\\/recipes\\/default\\/tiddlers\\/(.+)$/,\n\t\thandler: function(request,response,state) {\n\t\t\tvar title = decodeURIComponent(state.params[0]),\n\t\t\t\ttiddler = state.wiki.getTiddler(title),\n\t\t\t\ttiddlerFields = {},\n\t\t\t\tknownFields = [\n\t\t\t\t\t\"bag\", \"created\", \"creator\", \"modified\", \"modifier\", \"permissions\", \"recipe\", \"revision\", \"tags\", \"text\", \"title\", \"type\", \"uri\"\n\t\t\t\t];\n\t\t\tif(tiddler) {\n\t\t\t\t$tw.utils.each(tiddler.fields,function(field,name) {\n\t\t\t\t\tvar value = tiddler.getFieldString(name);\n\t\t\t\t\tif(knownFields.indexOf(name) !== -1) {\n\t\t\t\t\t\ttiddlerFields[name] = value;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttiddlerFields.fields = tiddlerFields.fields || {};\n\t\t\t\t\t\ttiddlerFields.fields[name] = value;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\ttiddlerFields.revision = state.wiki.getChangeCount(title);\n\t\t\t\ttiddlerFields.type = tiddlerFields.type || \"text/vnd.tiddlywiki\";\n\t\t\t\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\t\t\t\tresponse.end(JSON.stringify(tiddlerFields),\"utf8\");\n\t\t\t} else {\n\t\t\t\tresponse.writeHead(404);\n\t\t\t\tresponse.end();\n\t\t\t}\n\t\t}\n\t});\n};\n\nCommand.prototype.execute = function() {\n\tif(!$tw.boot.wikiTiddlersPath) {\n\t\t$tw.utils.warning(\"Warning: Wiki folder '\" + $tw.boot.wikiPath + \"' does not exist or is missing a tiddlywiki.info file\");\n\t}\n\tvar port = this.params[0] || \"8080\",\n\t\trootTiddler = this.params[1] || \"$:/core/save/all\",\n\t\trenderType = this.params[2] || \"text/plain\",\n\t\tserveType = this.params[3] || \"text/html\",\n\t\tusername = this.params[4],\n\t\tpassword = this.params[5],\n\t\thost = this.params[6] || \"127.0.0.1\",\n\t\tpathprefix = this.params[7];\n\tthis.server.set({\n\t\trootTiddler: rootTiddler,\n\t\trenderType: renderType,\n\t\tserveType: serveType,\n\t\tusername: username,\n\t\tpassword: password,\n\t\tpathprefix: pathprefix\n\t});\n\tthis.server.listen(port,host);\n\tconsole.log(\"Serving on \" + host + \":\" + port);\n\tconsole.log(\"(press ctrl-C to exit)\");\n\t// Warn if required plugins are missing\n\tif(!$tw.wiki.getTiddler(\"$:/plugins/tiddlywiki/tiddlyweb\") || !$tw.wiki.getTiddler(\"$:/plugins/tiddlywiki/filesystem\")) {\n\t\t$tw.utils.warning(\"Warning: Plugins required for client-server operation (\\\"tiddlywiki/filesystem\\\" and \\\"tiddlywiki/tiddlyweb\\\") are missing from tiddlywiki.info file\");\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "title": "$:/core/modules/commands/server.js",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/setfield.js": {
            "text": "/*\\\ntitle: $:/core/modules/commands/setfield.js\ntype: application/javascript\nmodule-type: command\n\nCommand to modify selected tiddlers to set a field to the text of a template tiddler that has been wikified with the selected tiddler as the current tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"setfield\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 4) {\n\t\treturn \"Missing parameters\";\n\t}\n\tvar self = this,\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\tfieldname = this.params[1] || \"text\",\n\t\ttemplatetitle = this.params[2],\n\t\trendertype = this.params[3] || \"text/plain\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(templatetitle),\n\t\t\tnewFields = {},\n\t\t\ttiddler = wiki.getTiddler(title);\n\t\tif(parser) {\n\t\t\tvar widgetNode = wiki.makeWidget(parser,{variables: {currentTiddler: title}});\n\t\t\tvar container = $tw.fakeDocument.createElement(\"div\");\n\t\t\twidgetNode.render(container,null);\n\t\t\tnewFields[fieldname] = rendertype === \"text/html\" ? container.innerHTML : container.textContent;\n\t\t} else {\n\t\t\tnewFields[fieldname] = undefined;\n\t\t}\n\t\twiki.addTiddler(new $tw.Tiddler(tiddler,newFields));\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "title": "$:/core/modules/commands/setfield.js",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/unpackplugin.js": {
            "text": "/*\\\ntitle: $:/core/modules/commands/unpackplugin.js\ntype: application/javascript\nmodule-type: command\n\nCommand to extract the shadow tiddlers from within a plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"unpackplugin\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing plugin name\";\n\t}\n\tvar self = this,\n\t\ttitle = this.params[0],\n\t\tpluginData = this.commander.wiki.getTiddlerDataCached(title);\n\tif(!pluginData) {\n\t\treturn \"Plugin '\" + title + \"' not found\";\n\t}\n\t$tw.utils.each(pluginData.tiddlers,function(tiddler) {\n\t\tself.commander.wiki.addTiddler(new $tw.Tiddler(tiddler));\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "title": "$:/core/modules/commands/unpackplugin.js",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/verbose.js": {
            "text": "/*\\\ntitle: $:/core/modules/commands/verbose.js\ntype: application/javascript\nmodule-type: command\n\nVerbose command\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"verbose\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tthis.commander.verbose = true;\n\t// Output the boot message log\n\tthis.commander.streams.output.write(\"Boot log:\\n  \" + $tw.boot.logMessages.join(\"\\n  \") + \"\\n\");\n\treturn null; // No error\n};\n\nexports.Command = Command;\n\n})();\n",
            "title": "$:/core/modules/commands/verbose.js",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/version.js": {
            "text": "/*\\\ntitle: $:/core/modules/commands/version.js\ntype: application/javascript\nmodule-type: command\n\nVersion command\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"version\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tthis.commander.streams.output.write($tw.version + \"\\n\");\n\treturn null; // No error\n};\n\nexports.Command = Command;\n\n})();\n",
            "title": "$:/core/modules/commands/version.js",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/config.js": {
            "text": "/*\\\ntitle: $:/core/modules/config.js\ntype: application/javascript\nmodule-type: config\n\nCore configuration constants\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.preferences = {};\n\nexports.preferences.notificationDuration = 3 * 1000;\nexports.preferences.jsonSpaces = 4;\n\nexports.textPrimitives = {\n\tupperLetter: \"[A-Z\\u00c0-\\u00d6\\u00d8-\\u00de\\u0150\\u0170]\",\n\tlowerLetter: \"[a-z\\u00df-\\u00f6\\u00f8-\\u00ff\\u0151\\u0171]\",\n\tanyLetter:   \"[A-Za-z0-9\\u00c0-\\u00d6\\u00d8-\\u00de\\u00df-\\u00f6\\u00f8-\\u00ff\\u0150\\u0170\\u0151\\u0171]\",\n\tblockPrefixLetters:\t\"[A-Za-z0-9-_\\u00c0-\\u00d6\\u00d8-\\u00de\\u00df-\\u00f6\\u00f8-\\u00ff\\u0150\\u0170\\u0151\\u0171]\"\n};\n\nexports.textPrimitives.unWikiLink = \"~\";\nexports.textPrimitives.wikiLink = exports.textPrimitives.upperLetter + \"+\" +\n\texports.textPrimitives.lowerLetter + \"+\" +\n\texports.textPrimitives.upperLetter +\n\texports.textPrimitives.anyLetter + \"*\";\n\nexports.htmlEntities = {quot:34, amp:38, apos:39, lt:60, gt:62, nbsp:160, iexcl:161, cent:162, pound:163, curren:164, yen:165, brvbar:166, sect:167, uml:168, copy:169, ordf:170, laquo:171, not:172, shy:173, reg:174, macr:175, deg:176, plusmn:177, sup2:178, sup3:179, acute:180, micro:181, para:182, middot:183, cedil:184, sup1:185, ordm:186, raquo:187, frac14:188, frac12:189, frac34:190, iquest:191, Agrave:192, Aacute:193, Acirc:194, Atilde:195, Auml:196, Aring:197, AElig:198, Ccedil:199, Egrave:200, Eacute:201, Ecirc:202, Euml:203, Igrave:204, Iacute:205, Icirc:206, Iuml:207, ETH:208, Ntilde:209, Ograve:210, Oacute:211, Ocirc:212, Otilde:213, Ouml:214, times:215, Oslash:216, Ugrave:217, Uacute:218, Ucirc:219, Uuml:220, Yacute:221, THORN:222, szlig:223, agrave:224, aacute:225, acirc:226, atilde:227, auml:228, aring:229, aelig:230, ccedil:231, egrave:232, eacute:233, ecirc:234, euml:235, igrave:236, iacute:237, icirc:238, iuml:239, eth:240, ntilde:241, ograve:242, oacute:243, ocirc:244, otilde:245, ouml:246, divide:247, oslash:248, ugrave:249, uacute:250, ucirc:251, uuml:252, yacute:253, thorn:254, yuml:255, OElig:338, oelig:339, Scaron:352, scaron:353, Yuml:376, fnof:402, circ:710, tilde:732, Alpha:913, Beta:914, Gamma:915, Delta:916, Epsilon:917, Zeta:918, Eta:919, Theta:920, Iota:921, Kappa:922, Lambda:923, Mu:924, Nu:925, Xi:926, Omicron:927, Pi:928, Rho:929, Sigma:931, Tau:932, Upsilon:933, Phi:934, Chi:935, Psi:936, Omega:937, alpha:945, beta:946, gamma:947, delta:948, epsilon:949, zeta:950, eta:951, theta:952, iota:953, kappa:954, lambda:955, mu:956, nu:957, xi:958, omicron:959, pi:960, rho:961, sigmaf:962, sigma:963, tau:964, upsilon:965, phi:966, chi:967, psi:968, omega:969, thetasym:977, upsih:978, piv:982, ensp:8194, emsp:8195, thinsp:8201, zwnj:8204, zwj:8205, lrm:8206, rlm:8207, ndash:8211, mdash:8212, lsquo:8216, rsquo:8217, sbquo:8218, ldquo:8220, rdquo:8221, bdquo:8222, dagger:8224, Dagger:8225, bull:8226, hellip:8230, permil:8240, prime:8242, Prime:8243, lsaquo:8249, rsaquo:8250, oline:8254, frasl:8260, euro:8364, image:8465, weierp:8472, real:8476, trade:8482, alefsym:8501, larr:8592, uarr:8593, rarr:8594, darr:8595, harr:8596, crarr:8629, lArr:8656, uArr:8657, rArr:8658, dArr:8659, hArr:8660, forall:8704, part:8706, exist:8707, empty:8709, nabla:8711, isin:8712, notin:8713, ni:8715, prod:8719, sum:8721, minus:8722, lowast:8727, radic:8730, prop:8733, infin:8734, ang:8736, and:8743, or:8744, cap:8745, cup:8746, int:8747, there4:8756, sim:8764, cong:8773, asymp:8776, ne:8800, equiv:8801, le:8804, ge:8805, sub:8834, sup:8835, nsub:8836, sube:8838, supe:8839, oplus:8853, otimes:8855, perp:8869, sdot:8901, lceil:8968, rceil:8969, lfloor:8970, rfloor:8971, lang:9001, rang:9002, loz:9674, spades:9824, clubs:9827, hearts:9829, diams:9830 };\n\nexports.htmlVoidElements = \"area,base,br,col,command,embed,hr,img,input,keygen,link,meta,param,source,track,wbr\".split(\",\");\n\nexports.htmlBlockElements = \"address,article,aside,audio,blockquote,canvas,dd,div,dl,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,hr,li,noscript,ol,output,p,pre,section,table,tfoot,ul,video\".split(\",\");\n\nexports.htmlUnsafeElements = \"script\".split(\",\");\n\n})();\n",
            "title": "$:/core/modules/config.js",
            "type": "application/javascript",
            "module-type": "config"
        },
        "$:/core/modules/deserializers.js": {
            "text": "/*\\\ntitle: $:/core/modules/deserializers.js\ntype: application/javascript\nmodule-type: tiddlerdeserializer\n\nFunctions to deserialise tiddlers from a block of text\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nUtility function to parse an old-style tiddler DIV in a *.tid file. It looks like this:\n\n<div title=\"Title\" creator=\"JoeBloggs\" modifier=\"JoeBloggs\" created=\"201102111106\" modified=\"201102111310\" tags=\"myTag [[my long tag]]\">\n<pre>The text of the tiddler (without the expected HTML encoding).\n</pre>\n</div>\n\nNote that the field attributes are HTML encoded, but that the body of the <PRE> tag is not encoded.\n\nWhen these tiddler DIVs are encountered within a TiddlyWiki HTML file then the body is encoded in the usual way.\n*/\nvar parseTiddlerDiv = function(text /* [,fields] */) {\n\t// Slot together the default results\n\tvar result = {};\n\tif(arguments.length > 1) {\n\t\tfor(var f=1; f<arguments.length; f++) {\n\t\t\tvar fields = arguments[f];\n\t\t\tfor(var t in fields) {\n\t\t\t\tresult[t] = fields[t];\t\t\n\t\t\t}\n\t\t}\n\t}\n\t// Parse the DIV body\n\tvar startRegExp = /^\\s*<div\\s+([^>]*)>(\\s*<pre>)?/gi,\n\t\tendRegExp,\n\t\tmatch = startRegExp.exec(text);\n\tif(match) {\n\t\t// Old-style DIVs don't have the <pre> tag\n\t\tif(match[2]) {\n\t\t\tendRegExp = /<\\/pre>\\s*<\\/div>\\s*$/gi;\n\t\t} else {\n\t\t\tendRegExp = /<\\/div>\\s*$/gi;\n\t\t}\n\t\tvar endMatch = endRegExp.exec(text);\n\t\tif(endMatch) {\n\t\t\t// Extract the text\n\t\t\tresult.text = text.substring(match.index + match[0].length,endMatch.index);\n\t\t\t// Process the attributes\n\t\t\tvar attrRegExp = /\\s*([^=\\s]+)\\s*=\\s*(?:\"([^\"]*)\"|'([^']*)')/gi,\n\t\t\t\tattrMatch;\n\t\t\tdo {\n\t\t\t\tattrMatch = attrRegExp.exec(match[1]);\n\t\t\t\tif(attrMatch) {\n\t\t\t\t\tvar name = attrMatch[1];\n\t\t\t\t\tvar value = attrMatch[2] !== undefined ? attrMatch[2] : attrMatch[3];\n\t\t\t\t\tresult[name] = value;\n\t\t\t\t}\n\t\t\t} while(attrMatch);\n\t\t\treturn result;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports[\"application/x-tiddler-html-div\"] = function(text,fields) {\n\treturn [parseTiddlerDiv(text,fields)];\n};\n\nexports[\"application/json\"] = function(text,fields) {\n\tvar incoming,\n\t\tresults = [];\n\ttry {\n\t\tincoming = JSON.parse(text);\n\t} catch(e) {\n\t\tincoming = [{\n\t\t\ttitle: \"JSON error: \" + e,\n\t\t\ttext: \"\"\n\t\t}]\n\t}\n\tif(!$tw.utils.isArray(incoming)) {\n\t\tincoming = [incoming];\n\t}\n\tfor(var t=0; t<incoming.length; t++) {\n\t\tvar incomingFields = incoming[t],\n\t\t\tfields = {};\n\t\tfor(var f in incomingFields) {\n\t\t\tif(typeof incomingFields[f] === \"string\") {\n\t\t\t\tfields[f] = incomingFields[f];\n\t\t\t}\n\t\t}\n\t\tresults.push(fields);\n\t}\n\treturn results;\n};\n\n/*\nParse an HTML file into tiddlers. There are three possibilities:\n# A TiddlyWiki classic HTML file containing `text/x-tiddlywiki` tiddlers\n# A TiddlyWiki5 HTML file containing `text/vnd.tiddlywiki` tiddlers\n# An ordinary HTML file\n*/\nexports[\"text/html\"] = function(text,fields) {\n\t// Check if we've got a store area\n\tvar storeAreaMarkerRegExp = /<div id=[\"']?storeArea['\"]?( style=[\"']?display:none;[\"']?)?>/gi,\n\t\tmatch = storeAreaMarkerRegExp.exec(text);\n\tif(match) {\n\t\t// If so, it's either a classic TiddlyWiki file or an unencrypted TW5 file\n\t\t// First read the normal tiddlers\n\t\tvar results = deserializeTiddlyWikiFile(text,storeAreaMarkerRegExp.lastIndex,!!match[1],fields);\n\t\t// Then any system tiddlers\n\t\tvar systemAreaMarkerRegExp = /<div id=[\"']?systemArea['\"]?( style=[\"']?display:none;[\"']?)?>/gi,\n\t\t\tsysMatch = systemAreaMarkerRegExp.exec(text);\n\t\tif(sysMatch) {\n\t\t\tresults.push.apply(results,deserializeTiddlyWikiFile(text,systemAreaMarkerRegExp.lastIndex,!!sysMatch[1],fields));\n\t\t}\n\t\treturn results;\n\t} else {\n\t\t// Check whether we've got an encrypted file\n\t\tvar encryptedStoreArea = $tw.utils.extractEncryptedStoreArea(text);\n\t\tif(encryptedStoreArea) {\n\t\t\t// If so, attempt to decrypt it using the current password\n\t\t\treturn $tw.utils.decryptStoreArea(encryptedStoreArea);\n\t\t} else {\n\t\t\t// It's not a TiddlyWiki so we'll return the entire HTML file as a tiddler\n\t\t\treturn deserializeHtmlFile(text,fields);\n\t\t}\n\t}\n};\n\nfunction deserializeHtmlFile(text,fields) {\n\tvar result = {};\n\t$tw.utils.each(fields,function(value,name) {\n\t\tresult[name] = value;\n\t});\n\tresult.text = text;\n\tresult.type = \"text/html\";\n\treturn [result];\n}\n\nfunction deserializeTiddlyWikiFile(text,storeAreaEnd,isTiddlyWiki5,fields) {\n\tvar results = [],\n\t\tendOfDivRegExp = /(<\\/div>\\s*)/gi,\n\t\tstartPos = storeAreaEnd,\n\t\tdefaultType = isTiddlyWiki5 ? undefined : \"text/x-tiddlywiki\";\n\tendOfDivRegExp.lastIndex = startPos;\n\tvar match = endOfDivRegExp.exec(text);\n\twhile(match) {\n\t\tvar endPos = endOfDivRegExp.lastIndex,\n\t\t\ttiddlerFields = parseTiddlerDiv(text.substring(startPos,endPos),fields,{type: defaultType});\n\t\tif(!tiddlerFields) {\n\t\t\tbreak;\n\t\t}\n\t\t$tw.utils.each(tiddlerFields,function(value,name) {\n\t\t\tif(typeof value === \"string\") {\n\t\t\t\ttiddlerFields[name] = $tw.utils.htmlDecode(value);\n\t\t\t}\n\t\t});\n\t\tif(tiddlerFields.text !== null) {\n\t\t\tresults.push(tiddlerFields);\n\t\t}\n\t\tstartPos = endPos;\n\t\tmatch = endOfDivRegExp.exec(text);\n\t}\n\treturn results;\n}\n\n})();\n",
            "title": "$:/core/modules/deserializers.js",
            "type": "application/javascript",
            "module-type": "tiddlerdeserializer"
        },
        "$:/core/modules/editor/engines/framed.js": {
            "text": "/*\\\ntitle: $:/core/modules/editor/engines/framed.js\ntype: application/javascript\nmodule-type: library\n\nText editor engine based on a simple input or textarea within an iframe. This is done so that the selection is preserved even when clicking away from the textarea\n\n\\*/\n(function(){\n\n/*jslint node: true,browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HEIGHT_VALUE_TITLE = \"$:/config/TextEditor/EditorHeight/Height\";\n\nfunction FramedEngine(options) {\n\t// Save our options\n\toptions = options || {};\n\tthis.widget = options.widget;\n\tthis.value = options.value;\n\tthis.parentNode = options.parentNode;\n\tthis.nextSibling = options.nextSibling;\n\t// Create our hidden dummy text area for reading styles\n\tthis.dummyTextArea = this.widget.document.createElement(\"textarea\");\n\tif(this.widget.editClass) {\n\t\tthis.dummyTextArea.className = this.widget.editClass;\n\t}\n\tthis.dummyTextArea.setAttribute(\"hidden\",\"true\");\n\tthis.parentNode.insertBefore(this.dummyTextArea,this.nextSibling);\n\tthis.widget.domNodes.push(this.dummyTextArea);\n\t// Create the iframe\n\tthis.iframeNode = this.widget.document.createElement(\"iframe\");\n\tthis.parentNode.insertBefore(this.iframeNode,this.nextSibling);\n\tthis.iframeDoc = this.iframeNode.contentWindow.document;\n\t// (Firefox requires us to put some empty content in the iframe)\n\tthis.iframeDoc.open();\n\tthis.iframeDoc.write(\"\");\n\tthis.iframeDoc.close();\n\t// Style the iframe\n\tthis.iframeNode.className = this.dummyTextArea.className;\n\tthis.iframeNode.style.border = \"none\";\n\tthis.iframeNode.style.padding = \"0\";\n\tthis.iframeNode.style.resize = \"none\";\n\tthis.iframeDoc.body.style.margin = \"0\";\n\tthis.iframeDoc.body.style.padding = \"0\";\n\tthis.widget.domNodes.push(this.iframeNode);\n\t// Construct the textarea or input node\n\tvar tag = this.widget.editTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"input\";\n\t}\n\tthis.domNode = this.iframeDoc.createElement(tag);\n\t// Set the text\n\tif(this.widget.editTag === \"textarea\") {\n\t\tthis.domNode.appendChild(this.iframeDoc.createTextNode(this.value));\n\t} else {\n\t\tthis.domNode.value = this.value;\n\t}\n\t// Set the attributes\n\tif(this.widget.editType) {\n\t\tthis.domNode.setAttribute(\"type\",this.widget.editType);\n\t}\n\tif(this.widget.editPlaceholder) {\n\t\tthis.domNode.setAttribute(\"placeholder\",this.widget.editPlaceholder);\n\t}\n\tif(this.widget.editSize) {\n\t\tthis.domNode.setAttribute(\"size\",this.widget.editSize);\n\t}\n\tif(this.widget.editRows) {\n\t\tthis.domNode.setAttribute(\"rows\",this.widget.editRows);\n\t}\n\t// Copy the styles from the dummy textarea\n\tthis.copyStyles();\n\t// Add event listeners\n\t$tw.utils.addEventListeners(this.domNode,[\n\t\t{name: \"input\",handlerObject: this,handlerMethod: \"handleInputEvent\"},\n\t\t{name: \"keydown\",handlerObject: this.widget,handlerMethod: \"handleKeydownEvent\"}\n\t]);\n\t// Insert the element into the DOM\n\tthis.iframeDoc.body.appendChild(this.domNode);\n}\n\n/*\nCopy styles from the dummy text area to the textarea in the iframe\n*/\nFramedEngine.prototype.copyStyles = function() {\n\t// Copy all styles\n\t$tw.utils.copyStyles(this.dummyTextArea,this.domNode);\n\t// Override the ones that should not be set the same as the dummy textarea\n\tthis.domNode.style.display = \"block\";\n\tthis.domNode.style.width = \"100%\";\n\tthis.domNode.style.margin = \"0\";\n\t// In Chrome setting -webkit-text-fill-color overrides the placeholder text colour\n\tthis.domNode.style[\"-webkit-text-fill-color\"] = \"currentcolor\";\n};\n\n/*\nSet the text of the engine if it doesn't currently have focus\n*/\nFramedEngine.prototype.setText = function(text,type) {\n\tif(!this.domNode.isTiddlyWikiFakeDom) {\n\t\tif(this.domNode.ownerDocument.activeElement !== this.domNode) {\n\t\t\tthis.domNode.value = text;\n\t\t}\n\t\t// Fix the height if needed\n\t\tthis.fixHeight();\n\t}\n};\n\n/*\nGet the text of the engine\n*/\nFramedEngine.prototype.getText = function() {\n\treturn this.domNode.value;\n};\n\n/*\nFix the height of textarea to fit content\n*/\nFramedEngine.prototype.fixHeight = function() {\n\t// Make sure styles are updated\n\tthis.copyStyles();\n\t// Adjust height\n\tif(this.widget.editTag === \"textarea\") {\n\t\tif(this.widget.editAutoHeight) {\n\t\t\tif(this.domNode && !this.domNode.isTiddlyWikiFakeDom) {\n\t\t\t\tvar newHeight = $tw.utils.resizeTextAreaToFit(this.domNode,this.widget.editMinHeight);\n\t\t\t\tthis.iframeNode.style.height = (newHeight + 14) + \"px\"; // +14 for the border on the textarea\n\t\t\t}\n\t\t} else {\n\t\t\tvar fixedHeight = parseInt(this.widget.wiki.getTiddlerText(HEIGHT_VALUE_TITLE,\"400px\"),10);\n\t\t\tfixedHeight = Math.max(fixedHeight,20);\n\t\t\tthis.domNode.style.height = fixedHeight + \"px\";\n\t\t\tthis.iframeNode.style.height = (fixedHeight + 14) + \"px\";\n\t\t}\n\t}\n};\n\n/*\nFocus the engine node\n*/\nFramedEngine.prototype.focus  = function() {\n\tif(this.domNode.focus && this.domNode.select) {\n\t\tthis.domNode.focus();\n\t\tthis.domNode.select();\n\t}\n};\n\n/*\nHandle a dom \"input\" event which occurs when the text has changed\n*/\nFramedEngine.prototype.handleInputEvent = function(event) {\n\tthis.widget.saveChanges(this.getText());\n\tthis.fixHeight();\n\treturn true;\n};\n\n/*\nCreate a blank structure representing a text operation\n*/\nFramedEngine.prototype.createTextOperation = function() {\n\tvar operation = {\n\t\ttext: this.domNode.value,\n\t\tselStart: this.domNode.selectionStart,\n\t\tselEnd: this.domNode.selectionEnd,\n\t\tcutStart: null,\n\t\tcutEnd: null,\n\t\treplacement: null,\n\t\tnewSelStart: null,\n\t\tnewSelEnd: null\n\t};\n\toperation.selection = operation.text.substring(operation.selStart,operation.selEnd);\n\treturn operation;\n};\n\n/*\nExecute a text operation\n*/\nFramedEngine.prototype.executeTextOperation = function(operation) {\n\t// Perform the required changes to the text area and the underlying tiddler\n\tvar newText = operation.text;\n\tif(operation.replacement !== null) {\n\t\tnewText = operation.text.substring(0,operation.cutStart) + operation.replacement + operation.text.substring(operation.cutEnd);\n\t\t// Attempt to use a execCommand to modify the value of the control\n\t\tif(this.iframeDoc.queryCommandSupported(\"insertText\") && this.iframeDoc.queryCommandSupported(\"delete\") && !$tw.browser.isFirefox) {\n\t\t\tthis.domNode.focus();\n\t\t\tthis.domNode.setSelectionRange(operation.cutStart,operation.cutEnd);\n\t\t\tif(operation.replacement === \"\") {\n\t\t\t\tthis.iframeDoc.execCommand(\"delete\",false,\"\");\n\t\t\t} else {\n\t\t\t\tthis.iframeDoc.execCommand(\"insertText\",false,operation.replacement);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.domNode.value = newText;\n\t\t}\n\t\tthis.domNode.focus();\n\t\tthis.domNode.setSelectionRange(operation.newSelStart,operation.newSelEnd);\n\t}\n\tthis.domNode.focus();\n\treturn newText;\n};\n\nexports.FramedEngine = FramedEngine;\n\n})();\n",
            "title": "$:/core/modules/editor/engines/framed.js",
            "type": "application/javascript",
            "module-type": "library"
        },
        "$:/core/modules/editor/engines/simple.js": {
            "text": "/*\\\ntitle: $:/core/modules/editor/engines/simple.js\ntype: application/javascript\nmodule-type: library\n\nText editor engine based on a simple input or textarea tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HEIGHT_VALUE_TITLE = \"$:/config/TextEditor/EditorHeight/Height\";\n\nfunction SimpleEngine(options) {\n\t// Save our options\n\toptions = options || {};\n\tthis.widget = options.widget;\n\tthis.value = options.value;\n\tthis.parentNode = options.parentNode;\n\tthis.nextSibling = options.nextSibling;\n\t// Construct the textarea or input node\n\tvar tag = this.widget.editTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"input\";\n\t}\n\tthis.domNode = this.widget.document.createElement(tag);\n\t// Set the text\n\tif(this.widget.editTag === \"textarea\") {\n\t\tthis.domNode.appendChild(this.widget.document.createTextNode(this.value));\n\t} else {\n\t\tthis.domNode.value = this.value;\n\t}\n\t// Set the attributes\n\tif(this.widget.editType) {\n\t\tthis.domNode.setAttribute(\"type\",this.widget.editType);\n\t}\n\tif(this.widget.editPlaceholder) {\n\t\tthis.domNode.setAttribute(\"placeholder\",this.widget.editPlaceholder);\n\t}\n\tif(this.widget.editSize) {\n\t\tthis.domNode.setAttribute(\"size\",this.widget.editSize);\n\t}\n\tif(this.widget.editRows) {\n\t\tthis.domNode.setAttribute(\"rows\",this.widget.editRows);\n\t}\n\tif(this.widget.editClass) {\n\t\tthis.domNode.className = this.widget.editClass;\n\t}\n\t// Add an input event handler\n\t$tw.utils.addEventListeners(this.domNode,[\n\t\t{name: \"focus\", handlerObject: this, handlerMethod: \"handleFocusEvent\"},\n\t\t{name: \"input\", handlerObject: this, handlerMethod: \"handleInputEvent\"}\n\t]);\n\t// Insert the element into the DOM\n\tthis.parentNode.insertBefore(this.domNode,this.nextSibling);\n\tthis.widget.domNodes.push(this.domNode);\n}\n\n/*\nSet the text of the engine if it doesn't currently have focus\n*/\nSimpleEngine.prototype.setText = function(text,type) {\n\tif(!this.domNode.isTiddlyWikiFakeDom) {\n\t\tif(this.domNode.ownerDocument.activeElement !== this.domNode || text === \"\") {\n\t\t\tthis.domNode.value = text;\n\t\t}\n\t\t// Fix the height if needed\n\t\tthis.fixHeight();\n\t}\n};\n\n/*\nGet the text of the engine\n*/\nSimpleEngine.prototype.getText = function() {\n\treturn this.domNode.value;\n};\n\n/*\nFix the height of textarea to fit content\n*/\nSimpleEngine.prototype.fixHeight = function() {\n\tif(this.widget.editTag === \"textarea\") {\n\t\tif(this.widget.editAutoHeight) {\n\t\t\tif(this.domNode && !this.domNode.isTiddlyWikiFakeDom) {\n\t\t\t\t$tw.utils.resizeTextAreaToFit(this.domNode,this.widget.editMinHeight);\n\t\t\t}\n\t\t} else {\n\t\t\tvar fixedHeight = parseInt(this.widget.wiki.getTiddlerText(HEIGHT_VALUE_TITLE,\"400px\"),10);\n\t\t\tfixedHeight = Math.max(fixedHeight,20);\n\t\t\tthis.domNode.style.height = fixedHeight + \"px\";\n\t\t}\n\t}\n};\n\n/*\nFocus the engine node\n*/\nSimpleEngine.prototype.focus  = function() {\n\tif(this.domNode.focus && this.domNode.select) {\n\t\tthis.domNode.focus();\n\t\tthis.domNode.select();\n\t}\n};\n\n/*\nHandle a dom \"input\" event which occurs when the text has changed\n*/\nSimpleEngine.prototype.handleInputEvent = function(event) {\n\tthis.widget.saveChanges(this.getText());\n\tthis.fixHeight();\n\treturn true;\n};\n\n/*\nHandle a dom \"focus\" event\n*/\nSimpleEngine.prototype.handleFocusEvent = function(event) {\n\tif(this.widget.editFocusPopup) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNode,\n\t\t\ttitle: this.widget.editFocusPopup,\n\t\t\twiki: this.widget.wiki,\n\t\t\tforce: true\n\t\t});\n\t}\n\treturn true;\n};\n\n/*\nCreate a blank structure representing a text operation\n*/\nSimpleEngine.prototype.createTextOperation = function() {\n\treturn null;\n};\n\n/*\nExecute a text operation\n*/\nSimpleEngine.prototype.executeTextOperation = function(operation) {\n};\n\nexports.SimpleEngine = SimpleEngine;\n\n})();\n",
            "title": "$:/core/modules/editor/engines/simple.js",
            "type": "application/javascript",
            "module-type": "library"
        },
        "$:/core/modules/editor/factory.js": {
            "text": "/*\\\ntitle: $:/core/modules/editor/factory.js\ntype: application/javascript\nmodule-type: library\n\nFactory for constructing text editor widgets with specified engines for the toolbar and non-toolbar cases\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DEFAULT_MIN_TEXT_AREA_HEIGHT = \"100px\"; // Minimum height of textareas in pixels\n\n// Configuration tiddlers\nvar HEIGHT_MODE_TITLE = \"$:/config/TextEditor/EditorHeight/Mode\";\nvar ENABLE_TOOLBAR_TITLE = \"$:/config/TextEditor/EnableToolbar\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nfunction editTextWidgetFactory(toolbarEngine,nonToolbarEngine) {\n\n\tvar EditTextWidget = function(parseTreeNode,options) {\n\t\t// Initialise the editor operations if they've not been done already\n\t\tif(!this.editorOperations) {\n\t\t\tEditTextWidget.prototype.editorOperations = {};\n\t\t\t$tw.modules.applyMethods(\"texteditoroperation\",this.editorOperations);\n\t\t}\n\t\tthis.initialise(parseTreeNode,options);\n\t};\n\n\t/*\n\tInherit from the base widget class\n\t*/\n\tEditTextWidget.prototype = new Widget();\n\n\t/*\n\tRender this widget into the DOM\n\t*/\n\tEditTextWidget.prototype.render = function(parent,nextSibling) {\n\t\t// Save the parent dom node\n\t\tthis.parentDomNode = parent;\n\t\t// Compute our attributes\n\t\tthis.computeAttributes();\n\t\t// Execute our logic\n\t\tthis.execute();\n\t\t// Create the wrapper for the toolbar and render its content\n\t\tif(this.editShowToolbar) {\n\t\t\tthis.toolbarNode = this.document.createElement(\"div\");\n\t\t\tthis.toolbarNode.className = \"tc-editor-toolbar\";\n\t\t\tparent.insertBefore(this.toolbarNode,nextSibling);\n\t\t\tthis.renderChildren(this.toolbarNode,null);\n\t\t\tthis.domNodes.push(this.toolbarNode);\n\t\t}\n\t\t// Create our element\n\t\tvar editInfo = this.getEditInfo(),\n\t\t\tEngine = this.editShowToolbar ? toolbarEngine : nonToolbarEngine;\n\t\tthis.engine = new Engine({\n\t\t\t\twidget: this,\n\t\t\t\tvalue: editInfo.value,\n\t\t\t\ttype: editInfo.type,\n\t\t\t\tparentNode: parent,\n\t\t\t\tnextSibling: nextSibling\n\t\t\t});\n\t\t// Call the postRender hook\n\t\tif(this.postRender) {\n\t\t\tthis.postRender();\n\t\t}\n\t\t// Fix height\n\t\tthis.engine.fixHeight();\n\t\t// Focus if required\n\t\tif(this.editFocus === \"true\" || this.editFocus === \"yes\") {\n\t\t\tthis.engine.focus();\n\t\t}\n\t\t// Add widget message listeners\n\t\tthis.addEventListeners([\n\t\t\t{type: \"tm-edit-text-operation\", handler: \"handleEditTextOperationMessage\"}\n\t\t]);\n\t};\n\n\t/*\n\tGet the tiddler being edited and current value\n\t*/\n\tEditTextWidget.prototype.getEditInfo = function() {\n\t\t// Get the edit value\n\t\tvar self = this,\n\t\t\tvalue,\n\t\t\ttype = \"text/plain\",\n\t\t\tupdate;\n\t\tif(this.editIndex) {\n\t\t\tvalue = this.wiki.extractTiddlerDataItem(this.editTitle,this.editIndex,this.editDefault);\n\t\t\tupdate = function(value) {\n\t\t\t\tvar data = self.wiki.getTiddlerData(self.editTitle,{});\n\t\t\t\tif(data[self.editIndex] !== value) {\n\t\t\t\t\tdata[self.editIndex] = value;\n\t\t\t\t\tself.wiki.setTiddlerData(self.editTitle,data);\n\t\t\t\t}\n\t\t\t};\n\t\t} else {\n\t\t\t// Get the current tiddler and the field name\n\t\t\tvar tiddler = this.wiki.getTiddler(this.editTitle);\n\t\t\tif(tiddler) {\n\t\t\t\t// If we've got a tiddler, the value to display is the field string value\n\t\t\t\tvalue = tiddler.getFieldString(this.editField);\n\t\t\t\tif(this.editField === \"text\") {\n\t\t\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\";\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Otherwise, we need to construct a default value for the editor\n\t\t\t\tswitch(this.editField) {\n\t\t\t\t\tcase \"text\":\n\t\t\t\t\t\tvalue = \"Type the text for the tiddler '\" + this.editTitle + \"'\";\n\t\t\t\t\t\ttype = \"text/vnd.tiddlywiki\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"title\":\n\t\t\t\t\t\tvalue = this.editTitle;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(this.editDefault !== undefined) {\n\t\t\t\t\tvalue = this.editDefault;\n\t\t\t\t}\n\t\t\t}\n\t\t\tupdate = function(value) {\n\t\t\t\tvar tiddler = self.wiki.getTiddler(self.editTitle),\n\t\t\t\t\tupdateFields = {\n\t\t\t\t\t\ttitle: self.editTitle\n\t\t\t\t\t};\n\t\t\t\tupdateFields[self.editField] = value;\n\t\t\t\tself.wiki.addTiddler(new $tw.Tiddler(self.wiki.getCreationFields(),tiddler,updateFields,self.wiki.getModificationFields()));\n\t\t\t};\n\t\t}\n\t\tif(this.editType) {\n\t\t\ttype = this.editType;\n\t\t}\n\t\treturn {value: value || \"\", type: type, update: update};\n\t};\n\n\t/*\n\tHandle an edit text operation message from the toolbar\n\t*/\n\tEditTextWidget.prototype.handleEditTextOperationMessage = function(event) {\n\t\t// Prepare information about the operation\n\t\tvar operation = this.engine.createTextOperation();\n\t\t// Invoke the handler for the selected operation\n\t\tvar handler = this.editorOperations[event.param];\n\t\tif(handler) {\n\t\t\thandler.call(this,event,operation);\n\t\t}\n\t\t// Execute the operation via the engine\n\t\tvar newText = this.engine.executeTextOperation(operation);\n\t\t// Fix the tiddler height and save changes\n\t\tthis.engine.fixHeight();\n\t\tthis.saveChanges(newText);\n\t};\n\n\t/*\n\tCompute the internal state of the widget\n\t*/\n\tEditTextWidget.prototype.execute = function() {\n\t\t// Get our parameters\n\t\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t\tthis.editField = this.getAttribute(\"field\",\"text\");\n\t\tthis.editIndex = this.getAttribute(\"index\");\n\t\tthis.editDefault = this.getAttribute(\"default\");\n\t\tthis.editClass = this.getAttribute(\"class\");\n\t\tthis.editPlaceholder = this.getAttribute(\"placeholder\");\n\t\tthis.editSize = this.getAttribute(\"size\");\n\t\tthis.editRows = this.getAttribute(\"rows\");\n\t\tthis.editAutoHeight = this.wiki.getTiddlerText(HEIGHT_MODE_TITLE,\"auto\");\n\t\tthis.editAutoHeight = this.getAttribute(\"autoHeight\",this.editAutoHeight === \"auto\" ? \"yes\" : \"no\") === \"yes\";\n\t\tthis.editMinHeight = this.getAttribute(\"minHeight\",DEFAULT_MIN_TEXT_AREA_HEIGHT);\n\t\tthis.editFocusPopup = this.getAttribute(\"focusPopup\");\n\t\tthis.editFocus = this.getAttribute(\"focus\");\n\t\t// Get the default editor element tag and type\n\t\tvar tag,type;\n\t\tif(this.editField === \"text\") {\n\t\t\ttag = \"textarea\";\n\t\t} else {\n\t\t\ttag = \"input\";\n\t\t\tvar fieldModule = $tw.Tiddler.fieldModules[this.editField];\n\t\t\tif(fieldModule && fieldModule.editTag) {\n\t\t\t\ttag = fieldModule.editTag;\n\t\t\t}\n\t\t\tif(fieldModule && fieldModule.editType) {\n\t\t\t\ttype = fieldModule.editType;\n\t\t\t}\n\t\t\ttype = type || \"text\";\n\t\t}\n\t\t// Get the rest of our parameters\n\t\tthis.editTag = this.getAttribute(\"tag\",tag);\n\t\tthis.editType = this.getAttribute(\"type\",type);\n\t\t// Make the child widgets\n\t\tthis.makeChildWidgets();\n\t\t// Determine whether to show the toolbar\n\t\tthis.editShowToolbar = this.wiki.getTiddlerText(ENABLE_TOOLBAR_TITLE,\"yes\");\n\t\tthis.editShowToolbar = (this.editShowToolbar === \"yes\") && !!(this.children && this.children.length > 0);\n\t};\n\n\t/*\n\tSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n\t*/\n\tEditTextWidget.prototype.refresh = function(changedTiddlers) {\n\t\tvar changedAttributes = this.computeAttributes();\n\t\t// Completely rerender if any of our attributes have changed\n\t\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes[\"default\"] || changedAttributes[\"class\"] || changedAttributes.placeholder || changedAttributes.size || changedAttributes.autoHeight || changedAttributes.minHeight || changedAttributes.focusPopup ||  changedAttributes.rows || changedTiddlers[HEIGHT_MODE_TITLE] || changedTiddlers[ENABLE_TOOLBAR_TITLE]) {\n\t\t\tthis.refreshSelf();\n\t\t\treturn true;\n\t\t} else if(changedTiddlers[this.editTitle]) {\n\t\t\tvar editInfo = this.getEditInfo();\n\t\t\tthis.updateEditor(editInfo.value,editInfo.type);\n\t\t}\n\t\tthis.engine.fixHeight();\n\t\tif(this.editShowToolbar) {\n\t\t\treturn this.refreshChildren(changedTiddlers);\t\t\t\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t/*\n\tUpdate the editor with new text. This method is separate from updateEditorDomNode()\n\tso that subclasses can override updateEditor() and still use updateEditorDomNode()\n\t*/\n\tEditTextWidget.prototype.updateEditor = function(text,type) {\n\t\tthis.updateEditorDomNode(text,type);\n\t};\n\n\t/*\n\tUpdate the editor dom node with new text\n\t*/\n\tEditTextWidget.prototype.updateEditorDomNode = function(text,type) {\n\t\tthis.engine.setText(text,type);\n\t};\n\n\t/*\n\tSave changes back to the tiddler store\n\t*/\n\tEditTextWidget.prototype.saveChanges = function(text) {\n\t\tvar editInfo = this.getEditInfo();\n\t\tif(text !== editInfo.value) {\n\t\t\teditInfo.update(text);\n\t\t}\n\t};\n\n\t/*\n\tHandle a dom \"keydown\" event, which we'll bubble up to our container for the keyboard widgets benefit\n\t*/\n\tEditTextWidget.prototype.handleKeydownEvent = function(event) {\n\t\t// Check for a keyboard shortcut\n\t\tif(this.toolbarNode) {\n\t\t\tvar shortcutElements = this.toolbarNode.querySelectorAll(\"[data-tw-keyboard-shortcut]\");\n\t\t\tfor(var index=0; index<shortcutElements.length; index++) {\n\t\t\t\tvar el = shortcutElements[index],\n\t\t\t\t\tshortcutData = el.getAttribute(\"data-tw-keyboard-shortcut\"),\n\t\t\t\t\tkeyInfoArray = $tw.keyboardManager.parseKeyDescriptors(shortcutData,{\n\t\t\t\t\t\twiki: this.wiki\n\t\t\t\t\t});\n\t\t\t\tif($tw.keyboardManager.checkKeyDescriptors(event,keyInfoArray)) {\n\t\t\t\t\tvar clickEvent = this.document.createEvent(\"Events\");\n\t\t\t\t    clickEvent.initEvent(\"click\",true,false);\n\t\t\t\t    el.dispatchEvent(clickEvent);\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\treturn true;\t\t\t\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// Propogate the event to the container\n\t\tif(this.propogateKeydownEvent(event)) {\n\t\t\t// Ignore the keydown if it was already handled\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\treturn true;\n\t\t}\n\t\t// Otherwise, process the keydown normally\n\t\treturn false;\n\t};\n\n\t/*\n\tPropogate keydown events to our container for the keyboard widgets benefit\n\t*/\n\tEditTextWidget.prototype.propogateKeydownEvent = function(event) {\n\t\tvar newEvent = this.document.createEventObject ? this.document.createEventObject() : this.document.createEvent(\"Events\");\n\t\tif(newEvent.initEvent) {\n\t\t\tnewEvent.initEvent(\"keydown\", true, true);\n\t\t}\n\t\tnewEvent.keyCode = event.keyCode;\n\t\tnewEvent.which = event.which;\n\t\tnewEvent.metaKey = event.metaKey;\n\t\tnewEvent.ctrlKey = event.ctrlKey;\n\t\tnewEvent.altKey = event.altKey;\n\t\tnewEvent.shiftKey = event.shiftKey;\n\t\treturn !this.parentDomNode.dispatchEvent(newEvent);\n\t};\n\n\treturn EditTextWidget;\n\n}\n\nexports.editTextWidgetFactory = editTextWidgetFactory;\n\n})();\n",
            "title": "$:/core/modules/editor/factory.js",
            "type": "application/javascript",
            "module-type": "library"
        },
        "$:/core/modules/editor/operations/bitmap/clear.js": {
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/clear.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to clear the image\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"clear\"] = function(event) {\n\tvar ctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.globalAlpha = 1;\n\tctx.fillStyle = event.paramObject.colour || \"white\";\n\tctx.fillRect(0,0,this.canvasDomNode.width,this.canvasDomNode.height);\n\t// Save changes\n\tthis.strokeEnd();\n};\n\n})();\n",
            "title": "$:/core/modules/editor/operations/bitmap/clear.js",
            "type": "application/javascript",
            "module-type": "bitmapeditoroperation"
        },
        "$:/core/modules/editor/operations/bitmap/resize.js": {
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/resize.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to resize the image\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"resize\"] = function(event) {\n\t// Get the new width\n\tvar newWidth = parseInt(event.paramObject.width || this.canvasDomNode.width,10),\n\t\tnewHeight = parseInt(event.paramObject.height || this.canvasDomNode.height,10);\n\t// Update if necessary\n\tif(newWidth > 0 && newHeight > 0 && !(newWidth === this.currCanvas.width && newHeight === this.currCanvas.height)) {\n\t\tthis.changeCanvasSize(newWidth,newHeight);\n\t}\n\t// Update the input controls\n\tthis.refreshToolbar();\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\n})();\n",
            "title": "$:/core/modules/editor/operations/bitmap/resize.js",
            "type": "application/javascript",
            "module-type": "bitmapeditoroperation"
        },
        "$:/core/modules/editor/operations/text/excise.js": {
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/excise.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to excise the selection to a new tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"excise\"] = function(event,operation) {\n\tvar editTiddler = this.wiki.getTiddler(this.editTitle),\n\t\teditTiddlerTitle = this.editTitle;\n\tif(editTiddler && editTiddler.fields[\"draft.of\"]) {\n\t\teditTiddlerTitle = editTiddler.fields[\"draft.of\"];\n\t}\n\tvar excisionTitle = event.paramObject.title || this.wiki.generateNewTitle(\"New Excision\");\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\tthis.wiki.getCreationFields(),\n\t\tthis.wiki.getModificationFields(),\n\t\t{\n\t\t\ttitle: excisionTitle,\n\t\t\ttext: operation.selection,\n\t\t\ttags: event.paramObject.tagnew === \"yes\" ?  [editTiddlerTitle] : []\n\t\t}\n\t));\n\toperation.replacement = excisionTitle;\n\tswitch(event.paramObject.type || \"transclude\") {\n\t\tcase \"transclude\":\n\t\t\toperation.replacement = \"{{\" + operation.replacement+ \"}}\";\n\t\t\tbreak;\n\t\tcase \"link\":\n\t\t\toperation.replacement = \"[[\" + operation.replacement+ \"]]\";\n\t\t\tbreak;\n\t\tcase \"macro\":\n\t\t\toperation.replacement = \"<<\" + (event.paramObject.macro || \"translink\") + \" \\\"\\\"\\\"\" + operation.replacement + \"\\\"\\\"\\\">>\";\n\t\t\tbreak;\n\t}\n\toperation.cutStart = operation.selStart;\n\toperation.cutEnd = operation.selEnd;\n\toperation.newSelStart = operation.selStart;\n\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n};\n\n})();\n",
            "title": "$:/core/modules/editor/operations/text/excise.js",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/make-link.js": {
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/make-link.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to make a link\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"make-link\"] = function(event,operation) {\n\tif(operation.selection) {\n\t\toperation.replacement = \"[[\" + operation.selection + \"|\" + event.paramObject.text + \"]]\";\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t} else {\n\t\toperation.replacement = \"[[\" + event.paramObject.text + \"]]\";\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t}\n\toperation.newSelStart = operation.selStart + operation.replacement.length;\n\toperation.newSelEnd = operation.newSelStart;\n};\n\n})();\n",
            "title": "$:/core/modules/editor/operations/text/make-link.js",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/prefix-lines.js": {
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/prefix-lines.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to add a prefix to the selected lines\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"prefix-lines\"] = function(event,operation) {\n\t// Cut just past the preceding line break, or the start of the text\n\toperation.cutStart = $tw.utils.findPrecedingLineBreak(operation.text,operation.selStart);\n\t// Cut to just past the following line break, or to the end of the text\n\toperation.cutEnd = $tw.utils.findFollowingLineBreak(operation.text,operation.selEnd);\n\t// Compose the required prefix\n\tvar prefix = $tw.utils.repeat(event.paramObject.character,event.paramObject.count);\n\t// Process each line\n\tvar lines = operation.text.substring(operation.cutStart,operation.cutEnd).split(/\\r?\\n/mg);\n\t$tw.utils.each(lines,function(line,index) {\n\t\t// Remove and count any existing prefix characters\n\t\tvar count = 0;\n\t\twhile(line.charAt(0) === event.paramObject.character) {\n\t\t\tline = line.substring(1);\n\t\t\tcount++;\n\t\t}\n\t\t// Remove any whitespace\n\t\twhile(line.charAt(0) === \" \") {\n\t\t\tline = line.substring(1);\n\t\t}\n\t\t// We're done if we removed the exact required prefix, otherwise add it\n\t\tif(count !== event.paramObject.count) {\n\t\t\t// Apply the prefix\n\t\t\tline =  prefix + \" \" + line;\n\t\t}\n\t\t// Save the modified line\n\t\tlines[index] = line;\n\t});\n\t// Stitch the replacement text together and set the selection\n\toperation.replacement = lines.join(\"\\n\");\n\tif(lines.length === 1) {\n\t\toperation.newSelStart = operation.cutStart + operation.replacement.length;\n\t\toperation.newSelEnd = operation.newSelStart;\n\t} else {\n\t\toperation.newSelStart = operation.cutStart;\n\t\toperation.newSelEnd = operation.newSelStart + operation.replacement.length;\n\t}\n};\n\n})();\n",
            "title": "$:/core/modules/editor/operations/text/prefix-lines.js",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/replace-all.js": {
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/replace-all.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to replace the entire text\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"replace-all\"] = function(event,operation) {\n\toperation.cutStart = 0;\n\toperation.cutEnd = operation.text.length;\n\toperation.replacement = event.paramObject.text;\n\toperation.newSelStart = 0;\n\toperation.newSelEnd = operation.replacement.length;\n};\n\n})();\n",
            "title": "$:/core/modules/editor/operations/text/replace-all.js",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/replace-selection.js": {
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/replace-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to replace the selection\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"replace-selection\"] = function(event,operation) {\n\toperation.replacement = event.paramObject.text;\n\toperation.cutStart = operation.selStart;\n\toperation.cutEnd = operation.selEnd;\n\toperation.newSelStart = operation.selStart;\n\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n};\n\n})();\n",
            "title": "$:/core/modules/editor/operations/text/replace-selection.js",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/wrap-lines.js": {
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/wrap-lines.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to wrap the selected lines with a prefix and suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"wrap-lines\"] = function(event,operation) {\n\t// Cut just past the preceding line break, or the start of the text\n\toperation.cutStart = $tw.utils.findPrecedingLineBreak(operation.text,operation.selStart);\n\t// Cut to just past the following line break, or to the end of the text\n\toperation.cutEnd = $tw.utils.findFollowingLineBreak(operation.text,operation.selEnd);\n\t// Add the prefix and suffix\n\toperation.replacement = event.paramObject.prefix + \"\\n\" +\n\t\t\t\toperation.text.substring(operation.cutStart,operation.cutEnd) + \"\\n\" +\n\t\t\t\tevent.paramObject.suffix + \"\\n\";\n\toperation.newSelStart = operation.cutStart + event.paramObject.prefix.length + 1;\n\toperation.newSelEnd = operation.newSelStart + (operation.cutEnd - operation.cutStart);\n};\n\n})();\n",
            "title": "$:/core/modules/editor/operations/text/wrap-lines.js",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/wrap-selection.js": {
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/wrap-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to wrap the selection with the specified prefix and suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"wrap-selection\"] = function(event,operation) {\n\tif(operation.selStart === operation.selEnd) {\n\t\t// No selection; check if we're within the prefix/suffix\n\t\tif(operation.text.substring(operation.selStart - event.paramObject.prefix.length,operation.selStart + event.paramObject.suffix.length) === event.paramObject.prefix + event.paramObject.suffix) {\n\t\t\t// Remove the prefix and suffix unless they comprise the entire text\n\t\t\tif(operation.selStart > event.paramObject.prefix.length || (operation.selEnd + event.paramObject.suffix.length) < operation.text.length ) {\n\t\t\t\toperation.cutStart = operation.selStart - event.paramObject.prefix.length;\n\t\t\t\toperation.cutEnd = operation.selEnd + event.paramObject.suffix.length;\n\t\t\t\toperation.replacement = \"\";\n\t\t\t\toperation.newSelStart = operation.cutStart;\n\t\t\t\toperation.newSelEnd = operation.newSelStart;\n\t\t\t}\n\t\t} else {\n\t\t\t// Wrap the cursor instead\n\t\t\toperation.cutStart = operation.selStart;\n\t\t\toperation.cutEnd = operation.selEnd;\n\t\t\toperation.replacement = event.paramObject.prefix + event.paramObject.suffix;\n\t\t\toperation.newSelStart = operation.selStart + event.paramObject.prefix.length;\n\t\t\toperation.newSelEnd = operation.newSelStart;\n\t\t}\n\t} else if(operation.text.substring(operation.selStart,operation.selStart + event.paramObject.prefix.length) === event.paramObject.prefix && operation.text.substring(operation.selEnd - event.paramObject.suffix.length,operation.selEnd) === event.paramObject.suffix) {\n\t\t// Prefix and suffix are already present, so remove them\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t\toperation.replacement = operation.selection.substring(event.paramObject.prefix.length,operation.selection.length - event.paramObject.suffix.length);\n\t\toperation.newSelStart = operation.selStart;\n\t\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n\t} else {\n\t\t// Add the prefix and suffix\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t\toperation.replacement = event.paramObject.prefix + operation.selection + event.paramObject.suffix;\n\t\toperation.newSelStart = operation.selStart;\n\t\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n\t}\n};\n\n})();\n",
            "title": "$:/core/modules/editor/operations/text/wrap-selection.js",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/filters/addprefix.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/addprefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for adding a prefix to each title in the list. This is\nespecially useful in contexts where only a filter expression is allowed\nand macro substitution isn't available.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.addprefix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(operator.operand + title);\n\t});\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/addprefix.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/addsuffix.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/addsuffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for adding a suffix to each title in the list. This is\nespecially useful in contexts where only a filter expression is allowed\nand macro substitution isn't available.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.addsuffix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title + operator.operand);\n\t});\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/addsuffix.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/after.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/after.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler from the current list that is after the tiddler named in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.after = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar index = results.indexOf(operator.operand);\n\tif(index === -1 || index > (results.length - 2)) {\n\t\treturn [];\n\t} else {\n\t\treturn [results[index + 1]];\n\t}\n};\n\n})();\n",
            "title": "$:/core/modules/filters/after.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/all/current.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/all/current.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[current]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.current = function(source,prefix,options) {\n\tvar currTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\");\n\tif(currTiddlerTitle) {\n\t\treturn [currTiddlerTitle];\n\t} else {\n\t\treturn [];\n\t}\n};\n\n})();\n",
            "title": "$:/core/modules/filters/all/current.js",
            "type": "application/javascript",
            "module-type": "allfilteroperator"
        },
        "$:/core/modules/filters/all/missing.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/all/missing.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[missing]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.missing = function(source,prefix,options) {\n\treturn options.wiki.getMissingTitles();\n};\n\n})();\n",
            "title": "$:/core/modules/filters/all/missing.js",
            "type": "application/javascript",
            "module-type": "allfilteroperator"
        },
        "$:/core/modules/filters/all/orphans.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/all/orphans.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[orphans]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.orphans = function(source,prefix,options) {\n\treturn options.wiki.getOrphanTitles();\n};\n\n})();\n",
            "title": "$:/core/modules/filters/all/orphans.js",
            "type": "application/javascript",
            "module-type": "allfilteroperator"
        },
        "$:/core/modules/filters/all/shadows.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/all/shadows.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[shadows]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadows = function(source,prefix,options) {\n\treturn options.wiki.allShadowTitles();\n};\n\n})();\n",
            "title": "$:/core/modules/filters/all/shadows.js",
            "type": "application/javascript",
            "module-type": "allfilteroperator"
        },
        "$:/core/modules/filters/all/tags.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/all/tags.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[tags]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tags = function(source,prefix,options) {\n\treturn Object.keys(options.wiki.getTagMap());\n};\n\n})();\n",
            "title": "$:/core/modules/filters/all/tags.js",
            "type": "application/javascript",
            "module-type": "allfilteroperator"
        },
        "$:/core/modules/filters/all/tiddlers.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/all/tiddlers.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[tiddlers]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tiddlers = function(source,prefix,options) {\n\treturn options.wiki.allTitles();\n};\n\n})();\n",
            "title": "$:/core/modules/filters/all/tiddlers.js",
            "type": "application/javascript",
            "module-type": "allfilteroperator"
        },
        "$:/core/modules/filters/all.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/all.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for selecting tiddlers\n\n[all[shadows+tiddlers]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar allFilterOperators;\n\nfunction getAllFilterOperators() {\n\tif(!allFilterOperators) {\n\t\tallFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"allfilteroperator\",allFilterOperators);\n\t}\n\treturn allFilterOperators;\n}\n\n/*\nExport our filter function\n*/\nexports.all = function(source,operator,options) {\n\t// Get our suboperators\n\tvar allFilterOperators = getAllFilterOperators();\n\t// Cycle through the suboperators accumulating their results\n\tvar results = [],\n\t\tsubops = operator.operand.split(\"+\");\n\t// Check for common optimisations\n\tif(subops.length === 1 && subops[0] === \"\") {\n\t\treturn source;\n\t} else if(subops.length === 1 && subops[0] === \"tiddlers\") {\n\t\treturn options.wiki.each;\n\t} else if(subops.length === 1 && subops[0] === \"shadows\") {\n\t\treturn options.wiki.eachShadow;\n\t} else if(subops.length === 2 && subops[0] === \"tiddlers\" && subops[1] === \"shadows\") {\n\t\treturn options.wiki.eachTiddlerPlusShadows;\n\t} else if(subops.length === 2 && subops[0] === \"shadows\" && subops[1] === \"tiddlers\") {\n\t\treturn options.wiki.eachShadowPlusTiddlers;\n\t}\n\t// Do it the hard way\n\tfor(var t=0; t<subops.length; t++) {\n\t\tvar subop = allFilterOperators[subops[t]];\n\t\tif(subop) {\n\t\t\t$tw.utils.pushTop(results,subop(source,operator.prefix,options));\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/all.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/backlinks.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/backlinks.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning all the backlinks from a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.backlinks = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlerBacklinks(title));\n\t});\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/backlinks.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/before.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/before.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler from the current list that is before the tiddler named in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.before = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar index = results.indexOf(operator.operand);\n\tif(index <= 0) {\n\t\treturn [];\n\t} else {\n\t\treturn [results[index - 1]];\n\t}\n};\n\n})();\n",
            "title": "$:/core/modules/filters/before.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/commands.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/commands.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the commands available in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.commands = function(source,operator,options) {\n\tvar results = [];\n\t$tw.utils.each($tw.commands,function(commandInfo,name) {\n\t\tresults.push(name);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/commands.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/count.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/count.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the number of entries in the current list.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.count = function(source,operator,options) {\n\tvar count = 0;\n\tsource(function(tiddler,title) {\n\t\tcount++;\n\t});\n\treturn [count + \"\"];\n};\n\n})();\n",
            "title": "$:/core/modules/filters/count.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/days.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/days.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects tiddlers with a specified date field within a specified date interval.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.days = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName = operator.suffix || \"modified\",\n\t\tdayInterval = (parseInt(operator.operand,10)||0),\n\t\tdayIntervalSign = $tw.utils.sign(dayInterval),\n\t\ttargetTimeStamp = (new Date()).setHours(0,0,0,0) + 1000*60*60*24*dayInterval,\n\t\tisWithinDays = function(dateField) {\n\t\t\tvar sign = $tw.utils.sign(targetTimeStamp - (new Date(dateField)).setHours(0,0,0,0));\n\t\t\treturn sign === 0 || sign === dayIntervalSign;\n\t\t};\n\n\tif(operator.prefix === \"!\") {\n\t\ttargetTimeStamp = targetTimeStamp - 1000*60*60*24*dayIntervalSign;\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\t\tif(!isWithinDays($tw.utils.parseDate(tiddler.fields[fieldName]))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\t\tif(isWithinDays($tw.utils.parseDate(tiddler.fields[fieldName]))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/days.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/each.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/each.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects one tiddler for each unique value of the specified field.\nWith suffix \"list\", selects all tiddlers that are values in a specified list field.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.each = function(source,operator,options) {\n\tvar results =[] ,\n\t\tvalue,values = {},\n\t\tfield = operator.operand || \"title\";\n\tif(operator.suffix !== \"list-item\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\tvalue = (field === \"title\") ? title : tiddler.getFieldString(field);\n\t\t\t\tif(!$tw.utils.hop(values,value)) {\n\t\t\t\t\tvalues[value] = true;\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\t$tw.utils.each(\n\t\t\t\t\toptions.wiki.getTiddlerList(title,field),\n\t\t\t\t\tfunction(value) {\n\t\t\t\t\t\tif(!$tw.utils.hop(values,value)) {\n\t\t\t\t\t\t\tvalues[value] = true;\n\t\t\t\t\t\t\tresults.push(value);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/each.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/eachday.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/eachday.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects one tiddler for each unique day covered by the specified date field\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.eachday = function(source,operator,options) {\n\tvar results = [],\n\t\tvalues = [],\n\t\tfieldName = operator.operand || \"modified\";\n\t// Function to convert a date/time to a date integer\n\tvar toDate = function(value) {\n\t\tvalue = (new Date(value)).setHours(0,0,0,0);\n\t\treturn value+0;\n\t};\n\tsource(function(tiddler,title) {\n\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\tvar value = toDate($tw.utils.parseDate(tiddler.fields[fieldName]));\n\t\t\tif(values.indexOf(value) === -1) {\n\t\t\t\tvalues.push(value);\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/eachday.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/editiondescription.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/editiondescription.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the descriptions of the specified edition names\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.editiondescription = function(source,operator,options) {\n\tvar results = [],\n\t\teditionInfo = $tw.utils.getEditionInfo();\n\tif(editionInfo) {\n\t\tsource(function(tiddler,title) {\n\t\t\tif($tw.utils.hop(editionInfo,title)) {\n\t\t\t\tresults.push(editionInfo[title].description || \"\");\t\t\t\t\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/editiondescription.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/editions.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/editions.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the available editions in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.editions = function(source,operator,options) {\n\tvar results = [],\n\t\teditionInfo = $tw.utils.getEditionInfo();\n\tif(editionInfo) {\n\t\t$tw.utils.each(editionInfo,function(info,name) {\n\t\t\tresults.push(name);\n\t\t});\n\t}\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/editions.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/decodeuricomponent.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/decodeuricomponent.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for applying decodeURIComponent() to each item.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter functions\n*/\n\nexports.decodeuricomponent = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(decodeURIComponent(title));\n\t});\n\treturn results;\n};\n\nexports.encodeuricomponent = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(encodeURIComponent(title));\n\t});\n\treturn results;\n};\n\nexports.decodeuri = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(decodeURI(title));\n\t});\n\treturn results;\n};\n\nexports.encodeuri = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(encodeURI(title));\n\t});\n\treturn results;\n};\n\nexports.decodehtml = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.htmlDecode(title));\n\t});\n\treturn results;\n};\n\nexports.encodehtml = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.htmlEncode(title));\n\t});\n\treturn results;\n};\n\nexports.stringify = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.stringify(title));\n\t});\n\treturn results;\n};\n\nexports.escaperegexp = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.escapeRegExp(title));\n\t});\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/decodeuricomponent.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/enlist.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/enlist.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning its operand parsed as a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.enlist = function(source,operator,options) {\n\tvar list = $tw.utils.parseStringArray(operator.operand);\n\tif(operator.prefix === \"!\") {\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t\treturn results;\n\t} else {\n\t\treturn list;\n\t}\n};\n\n})();\n",
            "title": "$:/core/modules/filters/enlist.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/field.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/field.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for comparing fields for equality\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.field = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldname = (operator.suffix || operator.operator || \"title\").toLowerCase();\n\tif(operator.prefix === \"!\") {\n\t\tif(operator.regexp) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && !operator.regexp.exec(text)) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && text !== operator.operand) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tif(operator.regexp) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && !!operator.regexp.exec(text)) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && text === operator.operand) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/field.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/fields.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/fields.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the fields on the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.fields = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tfor(var fieldName in tiddler.fields) {\n\t\t\t\t$tw.utils.pushTop(results,fieldName);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/fields.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/get.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/get.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing tiddler titles by the value of the field specified in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.get = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tvar value = tiddler.getFieldString(operator.operand);\n\t\t\tif(value) {\n\t\t\t\tresults.push(value);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/get.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/getindex.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/getindex.js\ntype: application/javascript\nmodule-type: filteroperator\n\nreturns the value at a given index of datatiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.getindex = function(source,operator,options) {\n\tvar data,title,results = [];\n\tif(operator.operand){\n\t\tsource(function(tiddler,title) {\n\t\t\ttitle = tiddler ? tiddler.fields.title : title;\n\t\t\tdata = options.wiki.extractTiddlerDataItem(tiddler,operator.operand);\n\t\t\tif(data) {\n\t\t\t\tresults.push(data);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/getindex.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/has.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/has.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a tiddler has the specified field\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.has = function(source,operator,options) {\n\tvar results = [],\n\t\tinvert = operator.prefix === \"!\";\n\n\tif(operator.suffix === \"field\") {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || (tiddler && (!$tw.utils.hop(tiddler.fields,operator.operand)))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && $tw.utils.hop(tiddler.fields,operator.operand)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || !$tw.utils.hop(tiddler.fields,operator.operand) || (tiddler.fields[operator.operand] === \"\")) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && $tw.utils.hop(tiddler.fields,operator.operand) && !(tiddler.fields[operator.operand] === \"\" || tiddler.fields[operator.operand].length === 0)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/has.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/haschanged.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/haschanged.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returns tiddlers from the list that have a non-zero changecount.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.haschanged = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.getChangeCount(title) === 0) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.getChangeCount(title) > 0) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/haschanged.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/indexes.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/indexes.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the indexes of a data tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.indexes = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar data = options.wiki.getTiddlerDataCached(title);\n\t\tif(data) {\n\t\t\t$tw.utils.pushTop(results,Object.keys(data));\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/indexes.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/insertbefore.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/insertbefore.js\ntype: application/javascript\nmodule-type: filteroperator\n\nInsert an item before another item in a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOrder a list\n*/\nexports.insertbefore = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar target = options.widget && options.widget.getVariable(operator.suffix || \"currentTiddler\");\n\tif(target !== operator.operand) {\n\t\t// Remove the entry from the list if it is present\n\t\tvar pos = results.indexOf(operator.operand);\n\t\tif(pos !== -1) {\n\t\t\tresults.splice(pos,1);\n\t\t}\n\t\t// Insert the entry before the target marker\n\t\tpos = results.indexOf(target);\n\t\tif(pos !== -1) {\n\t\t\tresults.splice(pos,0,operator.operand);\n\t\t} else {\n\t\t\tresults.push(operator.operand);\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/insertbefore.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/is/current.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/is/current.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[current]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.current = function(source,prefix,options) {\n\tvar results = [],\n\t\tcurrTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\");\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title !== currTiddlerTitle) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title === currTiddlerTitle) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/is/current.js",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/image.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/is/image.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[image]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.image = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isImageTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isImageTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/is/image.js",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/missing.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/is/missing.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[missing]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.missing = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/is/missing.js",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/orphan.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/is/orphan.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[orphan]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.orphan = function(source,prefix,options) {\n\tvar results = [],\n\t\torphanTitles = options.wiki.getOrphanTitles();\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(orphanTitles.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(orphanTitles.indexOf(title) !== -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/is/orphan.js",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/shadow.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/is/shadow.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[shadow]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadow = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isShadowTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isShadowTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/is/shadow.js",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/system.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/is/system.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[system]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.system = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isSystemTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isSystemTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/is/system.js",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/tag.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/is/tag.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[tag]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tag = function(source,prefix,options) {\n\tvar results = [],\n\t\ttagMap = options.wiki.getTagMap();\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!$tw.utils.hop(tagMap,title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif($tw.utils.hop(tagMap,title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/is/tag.js",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/tiddler.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/is/tiddler.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[tiddler]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tiddler = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/is/tiddler.js",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/is.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking tiddler properties\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar isFilterOperators;\n\nfunction getIsFilterOperators() {\n\tif(!isFilterOperators) {\n\t\tisFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"isfilteroperator\",isFilterOperators);\n\t}\n\treturn isFilterOperators;\n}\n\n/*\nExport our filter function\n*/\nexports.is = function(source,operator,options) {\n\t// Dispatch to the correct isfilteroperator\n\tvar isFilterOperators = getIsFilterOperators();\n\tif(operator.operand) {\n\t\tvar isFilterOperator = isFilterOperators[operator.operand];\n\t\tif(isFilterOperator) {\n\t\t\treturn isFilterOperator(source,operator.prefix,options);\n\t\t} else {\n\t\t\treturn [$tw.language.getString(\"Error/IsFilterOperator\")];\n\t\t}\n\t} else {\n\t\t// Return all tiddlers if the operand is missing\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t\treturn results;\n\t}\n};\n\n})();\n",
            "title": "$:/core/modules/filters/is.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/limit.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/limit.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for chopping the results to a specified maximum number of entries\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.limit = function(source,operator,options) {\n\tvar results = [];\n\t// Convert to an array\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\t// Slice the array if necessary\n\tvar limit = Math.min(results.length,parseInt(operator.operand,10));\n\tif(operator.prefix === \"!\") {\n\t\tresults = results.slice(-limit);\n\t} else {\n\t\tresults = results.slice(0,limit);\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/limit.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/links.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/links.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning all the links from a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.links = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlerLinks(title));\n\t});\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/links.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/list.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/list.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddlers whose title is listed in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.list = function(source,operator,options) {\n\tvar results = [],\n\t\ttr = $tw.utils.parseTextReference(operator.operand),\n\t\tcurrTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\"),\n\t\tlist = options.wiki.getTiddlerList(tr.title || currTiddlerTitle,tr.field,tr.index);\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tresults = list;\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/list.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/listed.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/listed.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all tiddlers that have the selected tiddlers in a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.listed = function(source,operator,options) {\n\tvar field = operator.operand || \"list\",\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.findListingsOfTiddler(title,field));\n\t});\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/listed.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/listops.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/listops.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operators for manipulating the current selection list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOrder a list\n*/\nexports.order = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.operand.toLowerCase() === \"reverse\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.unshift(title);\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\t\t\n\t}\n\treturn results;\n};\n\n/*\nReverse list\n*/\nexports.reverse = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.unshift(title);\n\t});\n\treturn results;\n};\n\n/*\nFirst entry/entries in list\n*/\nexports.first = function(source,operator,options) {\n\tvar count = parseInt(operator.operand) || 1,\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(0,count);\n};\n\n/*\nLast entry/entries in list\n*/\nexports.last = function(source,operator,options) {\n\tvar count = parseInt(operator.operand) || 1,\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(-count);\n};\n\n/*\nAll but the first entry/entries of the list\n*/\nexports.rest = function(source,operator,options) {\n\tvar count = parseInt(operator.operand) || 1,\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(count);\n};\nexports.butfirst = exports.rest;\nexports.bf = exports.rest;\n\n/*\nAll but the last entry/entries of the list\n*/\nexports.butlast = function(source,operator,options) {\n\tvar count = parseInt(operator.operand) || 1,\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(0,-count);\n};\nexports.bl = exports.butlast;\n\n/*\nThe nth member of the list\n*/\nexports.nth = function(source,operator,options) {\n\tvar count = parseInt(operator.operand) || 1,\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(count - 1,count);\n};\n\n})();\n",
            "title": "$:/core/modules/filters/listops.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/minlength.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/minlength.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for filtering out titles that don't meet the minimum length in the operand\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.minlength = function(source,operator,options) {\n\tvar results = [],\n\t\tminLength = parseInt(operator.operand || \"\",10) || 0;\n\tsource(function(tiddler,title) {\n\t\tif(title.length >= minLength) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/minlength.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/modules.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/modules.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the titles of the modules of a given type in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.modules = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.each($tw.modules.types[title],function(moduleInfo,moduleName) {\n\t\t\tresults.push(moduleName);\n\t\t});\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/modules.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/moduletypes.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/moduletypes.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the module types in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.moduletypes = function(source,operator,options) {\n\tvar results = [];\n\t$tw.utils.each($tw.modules.types,function(moduleInfo,type) {\n\t\tresults.push(type);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/moduletypes.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/next.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/next.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler whose title occurs next in the list supplied in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.next = function(source,operator,options) {\n\tvar results = [],\n\t\tlist = options.wiki.getTiddlerList(operator.operand);\n\tsource(function(tiddler,title) {\n\t\tvar match = list.indexOf(title);\n\t\t// increment match and then test if result is in range\n\t\tmatch++;\n\t\tif(match > 0 && match < list.length) {\n\t\t\tresults.push(list[match]);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/next.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/plugintiddlers.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/plugintiddlers.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the titles of the shadow tiddlers within a plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.plugintiddlers = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar pluginInfo = options.wiki.getPluginInfo(title) || options.wiki.getTiddlerDataCached(title,{tiddlers:[]});\n\t\tif(pluginInfo && pluginInfo.tiddlers) {\n\t\t\t$tw.utils.each(pluginInfo.tiddlers,function(fields,title) {\n\t\t\t\tresults.push(title);\n\t\t\t});\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/plugintiddlers.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/prefix.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/prefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title starts with a prefix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.prefix = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(0,operator.operand.length) !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(0,operator.operand.length) === operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/prefix.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/previous.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/previous.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler whose title occurs immediately prior in the list supplied in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.previous = function(source,operator,options) {\n\tvar results = [],\n\t\tlist = options.wiki.getTiddlerList(operator.operand);\n\tsource(function(tiddler,title) {\n\t\tvar match = list.indexOf(title);\n\t\t// increment match and then test if result is in range\n\t\tmatch--;\n\t\tif(match >= 0) {\n\t\t\tresults.push(list[match]);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/previous.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/regexp.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/regexp.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for regexp matching\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.regexp = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldname = (operator.suffix || \"title\").toLowerCase(),\n\t\tregexpString, regexp, flags = \"\", match,\n\t\tgetFieldString = function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\treturn tiddler.getFieldString(fieldname);\n\t\t\t} else if(fieldname === \"title\") {\n\t\t\t\treturn title;\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t};\n\t// Process flags and construct regexp\n\tregexpString = operator.operand;\n\tmatch = /^\\(\\?([gim]+)\\)/.exec(regexpString);\n\tif(match) {\n\t\tflags = match[1];\n\t\tregexpString = regexpString.substr(match[0].length);\n\t} else {\n\t\tmatch = /\\(\\?([gim]+)\\)$/.exec(regexpString);\n\t\tif(match) {\n\t\t\tflags = match[1];\n\t\t\tregexpString = regexpString.substr(0,regexpString.length - match[0].length);\n\t\t}\n\t}\n\ttry {\n\t\tregexp = new RegExp(regexpString,flags);\n\t} catch(e) {\n\t\treturn [\"\" + e];\n\t}\n\t// Process the incoming tiddlers\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tvar text = getFieldString(tiddler,title);\n\t\t\tif(text !== null) {\n\t\t\t\tif(!regexp.exec(text)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tvar text = getFieldString(tiddler,title);\n\t\t\tif(text !== null) {\n\t\t\t\tif(!!regexp.exec(text)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/regexp.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/removeprefix.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/removeprefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for removing a prefix from each title in the list. Titles that do not start with the prefix are removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.removeprefix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(title.substr(0,operator.operand.length) === operator.operand) {\n\t\t\tresults.push(title.substr(operator.operand.length));\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/removeprefix.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/removesuffix.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/removesuffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for removing a suffix from each title in the list. Titles that do not end with the suffix are removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.removesuffix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(title.substr(-operator.operand.length) === operator.operand) {\n\t\t\tresults.push(title.substr(0,title.length - operator.operand.length));\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/removesuffix.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/sameday.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/sameday.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects tiddlers with a modified date field on the same day as the provided value.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.sameday = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName = operator.suffix || \"modified\",\n\t\ttargetDate = (new Date($tw.utils.parseDate(operator.operand))).setHours(0,0,0,0);\n\t// Function to convert a date/time to a date integer\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tif(tiddler.getFieldDay(fieldName) === targetDate) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/sameday.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/search.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/search.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for searching for the text in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.search = function(source,operator,options) {\n\tvar invert = operator.prefix === \"!\";\n\tif(operator.suffix) {\n\t\treturn options.wiki.search(operator.operand,{\n\t\t\tsource: source,\n\t\t\tinvert: invert,\n\t\t\tfield: operator.suffix\n\t\t});\n\t} else {\n\t\treturn options.wiki.search(operator.operand,{\n\t\t\tsource: source,\n\t\t\tinvert: invert\n\t\t});\n\t}\n};\n\n})();\n",
            "title": "$:/core/modules/filters/search.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/shadowsource.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/shadowsource.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the source plugins for shadow tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadowsource = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar source = options.wiki.getShadowSource(title);\n\t\tif(source) {\n\t\t\t$tw.utils.pushTop(results,source);\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/shadowsource.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/sort.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/sort.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for sorting\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.sort = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",false,false);\n\treturn results;\n};\n\nexports.nsort = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",false,true);\n\treturn results;\n};\n\nexports.sortcs = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",true,false);\n\treturn results;\n};\n\nexports.nsortcs = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",true,true);\n\treturn results;\n};\n\nvar prepare_results = function (source) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/sort.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/splitbefore.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/splitbefore.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that splits each result on the first occurance of the specified separator and returns the unique values.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.splitbefore = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar parts = title.split(operator.operand);\n\t\tif(parts.length === 1) {\n\t\t\t$tw.utils.pushTop(results,parts[0]);\n\t\t} else {\n\t\t\t$tw.utils.pushTop(results,parts[0] + operator.operand);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/splitbefore.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/storyviews.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/storyviews.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the story views in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.storyviews = function(source,operator,options) {\n\tvar results = [],\n\t\tstoryviews = {};\n\t$tw.modules.applyMethods(\"storyview\",storyviews);\n\t$tw.utils.each(storyviews,function(info,name) {\n\t\tresults.push(name);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/storyviews.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/suffix.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/suffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title ends with a suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.suffix = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(-operator.operand.length) !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(-operator.operand.length) === operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/suffix.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/tag.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/tag.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking for the presence of a tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tag = function(source,operator,options) {\n\tvar results = [];\n\tif((operator.suffix || \"\").toLowerCase() === \"strict\" && !operator.operand) {\n\t\t// New semantics:\n\t\t// Always return copy of input if operator.operand is missing\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t} else {\n\t\t// Old semantics:\n\t\tif(operator.prefix === \"!\") {\n\t\t\t// Returns a copy of the input if operator.operand is missing\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && !tiddler.hasTag(operator.operand)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\t// Returns empty results if operator.operand is missing\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && tiddler.hasTag(operator.operand)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t\tresults = options.wiki.sortByList(results,operator.operand);\n\t\t}\t\t\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/tag.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/tagging.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/tagging.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all tiddlers that are tagged with the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tagging = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlersWithTag(title));\n\t});\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/tagging.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/tags.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/tags.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all the tags of the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tags = function(source,operator,options) {\n\tvar tags = {};\n\tsource(function(tiddler,title) {\n\t\tvar t, length;\n\t\tif(tiddler && tiddler.fields.tags) {\n\t\t\tfor(t=0, length=tiddler.fields.tags.length; t<length; t++) {\n\t\t\t\ttags[tiddler.fields.tags[t]] = true;\n\t\t\t}\n\t\t}\n\t});\n\treturn Object.keys(tags);\n};\n\n})();\n",
            "title": "$:/core/modules/filters/tags.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/title.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/title.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for comparing title fields for equality\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.title = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields.title !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tresults.push(operator.operand);\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/title.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/untagged.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/untagged.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all the selected tiddlers that are untagged\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.untagged = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && $tw.utils.isArray(tiddler.fields.tags) && tiddler.fields.tags.length > 0) {\n\t\t\t\t$tw.utils.pushTop(results,title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!tiddler || !tiddler.hasField(\"tags\") || ($tw.utils.isArray(tiddler.fields.tags) && tiddler.fields.tags.length === 0)) {\n\t\t\t\t$tw.utils.pushTop(results,title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/untagged.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/wikiparserrules.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/wikiparserrules.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the wiki parser rules in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.wikiparserrules = function(source,operator,options) {\n\tvar results = [],\n\t\toperand = operator.operand;\n\t$tw.utils.each($tw.modules.types.wikirule,function(mod) {\n\t\tvar exp = mod.exports;\n\t\tif(!operand || exp.types[operand]) {\n\t\t\tresults.push(exp.name);\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "title": "$:/core/modules/filters/wikiparserrules.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/x-listops.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/x-listops.js\ntype: application/javascript\nmodule-type: filteroperator\n\nExtended filter operators to manipulate the current list.\n\n\\*/\n(function () {\n\n    /*jslint node: true, browser: true */\n    /*global $tw: false */\n    \"use strict\";\n\n    /*\n    Fetch titles from the current list\n    */\n    var prepare_results = function (source) {\n    var results = [];\n        source(function (tiddler, title) {\n            results.push(title);\n        });\n        return results;\n    };\n\n    /*\n    Moves a number of items from the tail of the current list before the item named in the operand\n    */\n    exports.putbefore = function (source, operator) {\n        var results = prepare_results(source),\n            index = results.indexOf(operator.operand),\n            count = parseInt(operator.suffix) || 1;\n        return (index === -1) ?\n            results.slice(0, -1) :\n            results.slice(0, index).concat(results.slice(-count)).concat(results.slice(index, -count));\n    };\n\n    /*\n    Moves a number of items from the tail of the current list after the item named in the operand\n    */\n    exports.putafter = function (source, operator) {\n        var results = prepare_results(source),\n            index = results.indexOf(operator.operand),\n            count = parseInt(operator.suffix) || 1;\n        return (index === -1) ?\n            results.slice(0, -1) :\n            results.slice(0, index + 1).concat(results.slice(-count)).concat(results.slice(index + 1, -count));\n    };\n\n    /*\n    Replaces the item named in the operand with a number of items from the tail of the current list\n    */\n    exports.replace = function (source, operator) {\n        var results = prepare_results(source),\n            index = results.indexOf(operator.operand),\n            count = parseInt(operator.suffix) || 1;\n        return (index === -1) ?\n            results.slice(0, -count) :\n            results.slice(0, index).concat(results.slice(-count)).concat(results.slice(index + 1, -count));\n    };\n\n    /*\n    Moves a number of items from the tail of the current list to the head of the list\n    */\n    exports.putfirst = function (source, operator) {\n        var results = prepare_results(source),\n            count = parseInt(operator.suffix) || 1;\n        return results.slice(-count).concat(results.slice(0, -count));\n    };\n\n    /*\n    Moves a number of items from the head of the current list to the tail of the list\n    */\n    exports.putlast = function (source, operator) {\n        var results = prepare_results(source),\n            count = parseInt(operator.suffix) || 1;\n        return results.slice(count).concat(results.slice(0, count));\n    };\n\n    /*\n    Moves the item named in the operand a number of places forward or backward in the list\n    */\n    exports.move = function (source, operator) {\n        var results = prepare_results(source),\n            index = results.indexOf(operator.operand),\n            count = parseInt(operator.suffix) || 1,\n            marker = results.splice(index, 1),\n            offset =  (index + count) > 0 ? index + count : 0;\n        return results.slice(0, offset).concat(marker).concat(results.slice(offset));\n    };\n\n    /*\n    Returns the items from the current list that are after the item named in the operand\n    */\n    exports.allafter = function (source, operator) {\n        var results = prepare_results(source),\n            index = results.indexOf(operator.operand);\n        return (index === -1 || index > (results.length - 2)) ? [] :\n            (operator.suffix) ? results.slice(index) :\n            results.slice(index + 1);\n    };\n\n    /*\n    Returns the items from the current list that are before the item named in the operand\n    */\n    exports.allbefore = function (source, operator) {\n        var results = prepare_results(source),\n            index = results.indexOf(operator.operand);\n        return (index <= 0) ? [] :\n            (operator.suffix) ? results.slice(0, index + 1) :\n            results.slice(0, index);\n    };\n\n    /*\n    Appends the items listed in the operand array to the tail of the current list\n    */\n    exports.append = function (source, operator) {\n        var append = $tw.utils.parseStringArray(operator.operand, \"true\"),\n            results = prepare_results(source),\n            count = parseInt(operator.suffix) || append.length;\n        return (append.length === 0) ? results :\n            (operator.prefix) ? results.concat(append.slice(-count)) :\n            results.concat(append.slice(0, count));\n    };\n\n    /*\n    Prepends the items listed in the operand array to the head of the current list\n    */\n    exports.prepend = function (source, operator) {\n        var prepend = $tw.utils.parseStringArray(operator.operand, \"true\"),\n            results = prepare_results(source),\n            count = parseInt(operator.suffix) || prepend.length;\n        return (prepend.length === 0) ? results :\n            (operator.prefix) ? prepend.slice(-count).concat(results) :\n            prepend.slice(0, count).concat(results);\n    };\n\n    /*\n    Returns all items from the current list except the items listed in the operand array\n    */\n    exports.remove = function (source, operator) {\n        var array = $tw.utils.parseStringArray(operator.operand, \"true\"),\n            results = prepare_results(source),\n            count = parseInt(operator.suffix) || array.length,\n            p,\n            len,\n            index;\n        len = array.length - 1;\n        for (p = 0; p < count; ++p) {\n            if (operator.prefix) {\n                index = results.indexOf(array[len - p]);\n            } else {\n                index = results.indexOf(array[p]);\n            }\n            if (index !== -1) {\n                results.splice(index, 1);\n            }\n        }\n        return results;\n    };\n\n    /*\n    Returns all items from the current list sorted in the order of the items in the operand array\n    */\n    exports.sortby = function (source, operator) {\n        var results = prepare_results(source);\n        if (!results || results.length < 2) {\n            return results;\n        }\n        var lookup = $tw.utils.parseStringArray(operator.operand, \"true\");\n        results.sort(function (a, b) {\n            return lookup.indexOf(a) - lookup.indexOf(b);\n        });\n        return results;\n    };\n\n    /*\n    Removes all duplicate items from the current list\n    */\n    exports.unique = function (source, operator) {\n        var results = prepare_results(source);\n        var set = results.reduce(function (a, b) {\n            if (a.indexOf(b) < 0) {\n                a.push(b);\n            }\n            return a;\n        }, []);\n        return set;\n    };\n})();\n",
            "title": "$:/core/modules/filters/x-listops.js",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters.js\ntype: application/javascript\nmodule-type: wikimethod\n\nAdds tiddler filtering methods to the $tw.Wiki object.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParses an operation (i.e. a run) within a filter string\n\toperators: Array of array of operator nodes into which results should be inserted\n\tfilterString: filter string\n\tp: start position within the string\nReturns the new start position, after the parsed operation\n*/\nfunction parseFilterOperation(operators,filterString,p) {\n\tvar nextBracketPos, operator;\n\t// Skip the starting square bracket\n\tif(filterString.charAt(p++) !== \"[\") {\n\t\tthrow \"Missing [ in filter expression\";\n\t}\n\t// Process each operator in turn\n\tdo {\n\t\toperator = {};\n\t\t// Check for an operator prefix\n\t\tif(filterString.charAt(p) === \"!\") {\n\t\t\toperator.prefix = filterString.charAt(p++);\n\t\t}\n\t\t// Get the operator name\n\t\tnextBracketPos = filterString.substring(p).search(/[\\[\\{<\\/]/);\n\t\tif(nextBracketPos === -1) {\n\t\t\tthrow \"Missing [ in filter expression\";\n\t\t}\n\t\tnextBracketPos += p;\n\t\tvar bracket = filterString.charAt(nextBracketPos);\n\t\toperator.operator = filterString.substring(p,nextBracketPos);\n\n\t\t// Any suffix?\n\t\tvar colon = operator.operator.indexOf(':');\n\t\tif(colon > -1) {\n\t\t\toperator.suffix = operator.operator.substring(colon + 1);\n\t\t\toperator.operator = operator.operator.substring(0,colon) || \"field\";\n\t\t}\n\t\t// Empty operator means: title\n\t\telse if(operator.operator === \"\") {\n\t\t\toperator.operator = \"title\";\n\t\t}\n\n\t\tp = nextBracketPos + 1;\n\t\tswitch (bracket) {\n\t\t\tcase \"{\": // Curly brackets\n\t\t\t\toperator.indirect = true;\n\t\t\t\tnextBracketPos = filterString.indexOf(\"}\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"[\": // Square brackets\n\t\t\t\tnextBracketPos = filterString.indexOf(\"]\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"<\": // Angle brackets\n\t\t\t\toperator.variable = true;\n\t\t\t\tnextBracketPos = filterString.indexOf(\">\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"/\": // regexp brackets\n\t\t\t\tvar rex = /^((?:[^\\\\\\/]*|\\\\.)*)\\/(?:\\(([mygi]+)\\))?/g,\n\t\t\t\t\trexMatch = rex.exec(filterString.substring(p));\n\t\t\t\tif(rexMatch) {\n\t\t\t\t\toperator.regexp = new RegExp(rexMatch[1], rexMatch[2]);\n// DEPRECATION WARNING\nconsole.log(\"WARNING: Filter\",operator.operator,\"has a deprecated regexp operand\",operator.regexp);\n\t\t\t\t\tnextBracketPos = p + rex.lastIndex - 1;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthrow \"Unterminated regular expression in filter expression\";\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(nextBracketPos === -1) {\n\t\t\tthrow \"Missing closing bracket in filter expression\";\n\t\t}\n\t\tif(!operator.regexp) {\n\t\t\toperator.operand = filterString.substring(p,nextBracketPos);\n\t\t}\n\t\tp = nextBracketPos + 1;\n\n\t\t// Push this operator\n\t\toperators.push(operator);\n\t} while(filterString.charAt(p) !== \"]\");\n\t// Skip the ending square bracket\n\tif(filterString.charAt(p++) !== \"]\") {\n\t\tthrow \"Missing ] in filter expression\";\n\t}\n\t// Return the parsing position\n\treturn p;\n}\n\n/*\nParse a filter string\n*/\nexports.parseFilter = function(filterString) {\n\tfilterString = filterString || \"\";\n\tvar results = [], // Array of arrays of operator nodes {operator:,operand:}\n\t\tp = 0, // Current position in the filter string\n\t\tmatch;\n\tvar whitespaceRegExp = /(\\s+)/mg,\n\t\toperandRegExp = /((?:\\+|\\-)?)(?:(\\[)|(?:\"([^\"]*)\")|(?:'([^']*)')|([^\\s\\[\\]]+))/mg;\n\twhile(p < filterString.length) {\n\t\t// Skip any whitespace\n\t\twhitespaceRegExp.lastIndex = p;\n\t\tmatch = whitespaceRegExp.exec(filterString);\n\t\tif(match && match.index === p) {\n\t\t\tp = p + match[0].length;\n\t\t}\n\t\t// Match the start of the operation\n\t\tif(p < filterString.length) {\n\t\t\toperandRegExp.lastIndex = p;\n\t\t\tmatch = operandRegExp.exec(filterString);\n\t\t\tif(!match || match.index !== p) {\n\t\t\t\tthrow $tw.language.getString(\"Error/FilterSyntax\");\n\t\t\t}\n\t\t\tvar operation = {\n\t\t\t\tprefix: \"\",\n\t\t\t\toperators: []\n\t\t\t};\n\t\t\tif(match[1]) {\n\t\t\t\toperation.prefix = match[1];\n\t\t\t\tp++;\n\t\t\t}\n\t\t\tif(match[2]) { // Opening square bracket\n\t\t\t\tp = parseFilterOperation(operation.operators,filterString,p);\n\t\t\t} else {\n\t\t\t\tp = match.index + match[0].length;\n\t\t\t}\n\t\t\tif(match[3] || match[4] || match[5]) { // Double quoted string, single quoted string or unquoted title\n\t\t\t\toperation.operators.push(\n\t\t\t\t\t{operator: \"title\", operand: match[3] || match[4] || match[5]}\n\t\t\t\t);\n\t\t\t}\n\t\t\tresults.push(operation);\n\t\t}\n\t}\n\treturn results;\n};\n\nexports.getFilterOperators = function() {\n\tif(!this.filterOperators) {\n\t\t$tw.Wiki.prototype.filterOperators = {};\n\t\t$tw.modules.applyMethods(\"filteroperator\",this.filterOperators);\n\t}\n\treturn this.filterOperators;\n};\n\nexports.filterTiddlers = function(filterString,widget,source) {\n\tvar fn = this.compileFilter(filterString);\n\treturn fn.call(this,source,widget);\n};\n\n/*\nCompile a filter into a function with the signature fn(source,widget) where:\nsource: an iterator function for the source tiddlers, called source(iterator), where iterator is called as iterator(tiddler,title)\nwidget: an optional widget node for retrieving the current tiddler etc.\n*/\nexports.compileFilter = function(filterString) {\n\tvar filterParseTree;\n\ttry {\n\t\tfilterParseTree = this.parseFilter(filterString);\n\t} catch(e) {\n\t\treturn function(source,widget) {\n\t\t\treturn [$tw.language.getString(\"Error/Filter\") + \": \" + e];\n\t\t};\n\t}\n\t// Get the hashmap of filter operator functions\n\tvar filterOperators = this.getFilterOperators();\n\t// Assemble array of functions, one for each operation\n\tvar operationFunctions = [];\n\t// Step through the operations\n\tvar self = this;\n\t$tw.utils.each(filterParseTree,function(operation) {\n\t\t// Create a function for the chain of operators in the operation\n\t\tvar operationSubFunction = function(source,widget) {\n\t\t\tvar accumulator = source,\n\t\t\t\tresults = [],\n\t\t\t\tcurrTiddlerTitle = widget && widget.getVariable(\"currentTiddler\");\n\t\t\t$tw.utils.each(operation.operators,function(operator) {\n\t\t\t\tvar operand = operator.operand,\n\t\t\t\t\toperatorFunction;\n\t\t\t\tif(!operator.operator) {\n\t\t\t\t\toperatorFunction = filterOperators.title;\n\t\t\t\t} else if(!filterOperators[operator.operator]) {\n\t\t\t\t\toperatorFunction = filterOperators.field;\n\t\t\t\t} else {\n\t\t\t\t\toperatorFunction = filterOperators[operator.operator];\n\t\t\t\t}\n\t\t\t\tif(operator.indirect) {\n\t\t\t\t\toperand = self.getTextReference(operator.operand,\"\",currTiddlerTitle);\n\t\t\t\t}\n\t\t\t\tif(operator.variable) {\n\t\t\t\t\toperand = widget.getVariable(operator.operand,{defaultValue: \"\"});\n\t\t\t\t}\n\t\t\t\t// Invoke the appropriate filteroperator module\n\t\t\t\tresults = operatorFunction(accumulator,{\n\t\t\t\t\t\t\toperator: operator.operator,\n\t\t\t\t\t\t\toperand: operand,\n\t\t\t\t\t\t\tprefix: operator.prefix,\n\t\t\t\t\t\t\tsuffix: operator.suffix,\n\t\t\t\t\t\t\tregexp: operator.regexp\n\t\t\t\t\t\t},{\n\t\t\t\t\t\t\twiki: self,\n\t\t\t\t\t\t\twidget: widget\n\t\t\t\t\t\t});\n\t\t\t\tif($tw.utils.isArray(results)) {\n\t\t\t\t\taccumulator = self.makeTiddlerIterator(results);\n\t\t\t\t} else {\n\t\t\t\t\taccumulator = results;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif($tw.utils.isArray(results)) {\n\t\t\t\treturn results;\n\t\t\t} else {\n\t\t\t\tvar resultArray = [];\n\t\t\t\tresults(function(tiddler,title) {\n\t\t\t\t\tresultArray.push(title);\n\t\t\t\t});\n\t\t\t\treturn resultArray;\n\t\t\t}\n\t\t};\n\t\t// Wrap the operator functions in a wrapper function that depends on the prefix\n\t\toperationFunctions.push((function() {\n\t\t\tswitch(operation.prefix || \"\") {\n\t\t\t\tcase \"\": // No prefix means that the operation is unioned into the result\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\t$tw.utils.pushTop(results,operationSubFunction(source,widget));\n\t\t\t\t\t};\n\t\t\t\tcase \"-\": // The results of this operation are removed from the main result\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\t$tw.utils.removeArrayEntries(results,operationSubFunction(source,widget));\n\t\t\t\t\t};\n\t\t\t\tcase \"+\": // This operation is applied to the main results so far\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\t// This replaces all the elements of the array, but keeps the actual array so that references to it are preserved\n\t\t\t\t\t\tsource = self.makeTiddlerIterator(results);\n\t\t\t\t\t\tresults.splice(0,results.length);\n\t\t\t\t\t\t$tw.utils.pushTop(results,operationSubFunction(source,widget));\n\t\t\t\t\t};\n\t\t\t}\n\t\t})());\n\t});\n\t// Return a function that applies the operations to a source iterator of tiddler titles\n\treturn $tw.perf.measure(\"filter\",function filterFunction(source,widget) {\n\t\tif(!source) {\n\t\t\tsource = self.each;\n\t\t} else if(typeof source === \"object\") { // Array or hashmap\n\t\t\tsource = self.makeTiddlerIterator(source);\n\t\t}\n\t\tvar results = [];\n\t\t$tw.utils.each(operationFunctions,function(operationFunction) {\n\t\t\toperationFunction(results,source,widget);\n\t\t});\n\t\treturn results;\n\t});\n};\n\n})();\n",
            "title": "$:/core/modules/filters.js",
            "type": "application/javascript",
            "module-type": "wikimethod"
        },
        "$:/core/modules/info/platform.js": {
            "text": "/*\\\ntitle: $:/core/modules/info/platform.js\ntype: application/javascript\nmodule-type: info\n\nInitialise basic platform $:/info/ tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.getInfoTiddlerFields = function() {\n\tvar mapBoolean = function(value) {return value ? \"yes\" : \"no\";},\n\t\tinfoTiddlerFields = [];\n\t// Basics\n\tinfoTiddlerFields.push({title: \"$:/info/browser\", text: mapBoolean(!!$tw.browser)});\n\tinfoTiddlerFields.push({title: \"$:/info/node\", text: mapBoolean(!!$tw.node)});\n\t// Document location\n\tif($tw.browser) {\n\t\tvar setLocationProperty = function(name,value) {\n\t\t\t\tinfoTiddlerFields.push({title: \"$:/info/url/\" + name, text: value});\t\t\t\n\t\t\t},\n\t\t\tlocation = document.location;\n\t\tsetLocationProperty(\"full\", (location.toString()).split(\"#\")[0]);\n\t\tsetLocationProperty(\"host\", location.host);\n\t\tsetLocationProperty(\"hostname\", location.hostname);\n\t\tsetLocationProperty(\"protocol\", location.protocol);\n\t\tsetLocationProperty(\"port\", location.port);\n\t\tsetLocationProperty(\"pathname\", location.pathname);\n\t\tsetLocationProperty(\"search\", location.search);\n\t\tsetLocationProperty(\"origin\", location.origin);\n\t}\n\treturn infoTiddlerFields;\n};\n\n})();\n",
            "title": "$:/core/modules/info/platform.js",
            "type": "application/javascript",
            "module-type": "info"
        },
        "$:/core/modules/keyboard.js": {
            "text": "/*\\\ntitle: $:/core/modules/keyboard.js\ntype: application/javascript\nmodule-type: global\n\nKeyboard handling utilities\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar namedKeys = {\n\t\"cancel\": 3,\n\t\"help\": 6,\n\t\"backspace\": 8,\n\t\"tab\": 9,\n\t\"clear\": 12,\n\t\"return\": 13,\n\t\"enter\": 13,\n\t\"pause\": 19,\n\t\"escape\": 27,\n\t\"space\": 32,\n\t\"page_up\": 33,\n\t\"page_down\": 34,\n\t\"end\": 35,\n\t\"home\": 36,\n\t\"left\": 37,\n\t\"up\": 38,\n\t\"right\": 39,\n\t\"down\": 40,\n\t\"printscreen\": 44,\n\t\"insert\": 45,\n\t\"delete\": 46,\n\t\"0\": 48,\n\t\"1\": 49,\n\t\"2\": 50,\n\t\"3\": 51,\n\t\"4\": 52,\n\t\"5\": 53,\n\t\"6\": 54,\n\t\"7\": 55,\n\t\"8\": 56,\n\t\"9\": 57,\n\t\"firefoxsemicolon\": 59,\n\t\"firefoxequals\": 61,\n\t\"a\": 65,\n\t\"b\": 66,\n\t\"c\": 67,\n\t\"d\": 68,\n\t\"e\": 69,\n\t\"f\": 70,\n\t\"g\": 71,\n\t\"h\": 72,\n\t\"i\": 73,\n\t\"j\": 74,\n\t\"k\": 75,\n\t\"l\": 76,\n\t\"m\": 77,\n\t\"n\": 78,\n\t\"o\": 79,\n\t\"p\": 80,\n\t\"q\": 81,\n\t\"r\": 82,\n\t\"s\": 83,\n\t\"t\": 84,\n\t\"u\": 85,\n\t\"v\": 86,\n\t\"w\": 87,\n\t\"x\": 88,\n\t\"y\": 89,\n\t\"z\": 90,\n\t\"numpad0\": 96,\n\t\"numpad1\": 97,\n\t\"numpad2\": 98,\n\t\"numpad3\": 99,\n\t\"numpad4\": 100,\n\t\"numpad5\": 101,\n\t\"numpad6\": 102,\n\t\"numpad7\": 103,\n\t\"numpad8\": 104,\n\t\"numpad9\": 105,\n\t\"multiply\": 106,\n\t\"add\": 107,\n\t\"separator\": 108,\n\t\"subtract\": 109,\n\t\"decimal\": 110,\n\t\"divide\": 111,\n\t\"f1\": 112,\n\t\"f2\": 113,\n\t\"f3\": 114,\n\t\"f4\": 115,\n\t\"f5\": 116,\n\t\"f6\": 117,\n\t\"f7\": 118,\n\t\"f8\": 119,\n\t\"f9\": 120,\n\t\"f10\": 121,\n\t\"f11\": 122,\n\t\"f12\": 123,\n\t\"f13\": 124,\n\t\"f14\": 125,\n\t\"f15\": 126,\n\t\"f16\": 127,\n\t\"f17\": 128,\n\t\"f18\": 129,\n\t\"f19\": 130,\n\t\"f20\": 131,\n\t\"f21\": 132,\n\t\"f22\": 133,\n\t\"f23\": 134,\n\t\"f24\": 135,\n\t\"firefoxminus\": 173,\n\t\"semicolon\": 186,\n\t\"equals\": 187,\n\t\"comma\": 188,\n\t\"dash\": 189,\n\t\"period\": 190,\n\t\"slash\": 191,\n\t\"backquote\": 192,\n\t\"openbracket\": 219,\n\t\"backslash\": 220,\n\t\"closebracket\": 221,\n\t\"quote\": 222\n};\n\nfunction KeyboardManager(options) {\n\tvar self = this;\n\toptions = options || \"\";\n\t// Save the named key hashmap\n\tthis.namedKeys = namedKeys;\n\t// Create a reverse mapping of code to keyname\n\tthis.keyNames = [];\n\t$tw.utils.each(namedKeys,function(keyCode,name) {\n\t\tself.keyNames[keyCode] = name.substr(0,1).toUpperCase() + name.substr(1);\n\t});\n\t// Save the platform-specific name of the \"meta\" key\n\tthis.metaKeyName = $tw.platform.isMac ? \"cmd-\" : \"win-\";\n}\n\n/*\nReturn an array of keycodes for the modifier keys ctrl, shift, alt, meta\n*/\nKeyboardManager.prototype.getModifierKeys = function() {\n\treturn [\n\t\t16, // Shift\n\t\t17, // Ctrl\n\t\t18, // Alt\n\t\t20, // CAPS LOCK\n\t\t91, // Meta (left)\n\t\t93, // Meta (right)\n\t\t224 // Meta (Firefox)\n\t]\n};\n\n/*\nParses a key descriptor into the structure:\n{\n\tkeyCode: numeric keycode\n\tshiftKey: boolean\n\taltKey: boolean\n\tctrlKey: boolean\n\tmetaKey: boolean\n}\nKey descriptors have the following format:\n\tctrl+enter\n\tctrl+shift+alt+A\n*/\nKeyboardManager.prototype.parseKeyDescriptor = function(keyDescriptor) {\n\tvar components = keyDescriptor.split(/\\+|\\-/),\n\t\tinfo = {\n\t\t\tkeyCode: 0,\n\t\t\tshiftKey: false,\n\t\t\taltKey: false,\n\t\t\tctrlKey: false,\n\t\t\tmetaKey: false\n\t\t};\n\tfor(var t=0; t<components.length; t++) {\n\t\tvar s = components[t].toLowerCase(),\n\t\t\tc = s.charCodeAt(0);\n\t\t// Look for modifier keys\n\t\tif(s === \"ctrl\") {\n\t\t\tinfo.ctrlKey = true;\n\t\t} else if(s === \"shift\") {\n\t\t\tinfo.shiftKey = true;\n\t\t} else if(s === \"alt\") {\n\t\t\tinfo.altKey = true;\n\t\t} else if(s === \"meta\" || s === \"cmd\" || s === \"win\") {\n\t\t\tinfo.metaKey = true;\n\t\t}\n\t\t// Replace named keys with their code\n\t\tif(this.namedKeys[s]) {\n\t\t\tinfo.keyCode = this.namedKeys[s];\n\t\t}\n\t}\n\tif(info.keyCode) {\n\t\treturn info;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nParse a list of key descriptors into an array of keyInfo objects. The key descriptors can be passed as an array of strings or a space separated string\n*/\nKeyboardManager.prototype.parseKeyDescriptors = function(keyDescriptors,options) {\n\tvar self = this;\n\toptions = options || {};\n\toptions.stack = options.stack || [];\n\tvar wiki = options.wiki || $tw.wiki;\n\tif(typeof keyDescriptors === \"string\" && keyDescriptors === \"\") {\n\t\treturn [];\n\t}\n\tif(!$tw.utils.isArray(keyDescriptors)) {\n\t\tkeyDescriptors = keyDescriptors.split(\" \");\n\t}\n\tvar result = [];\n\t$tw.utils.each(keyDescriptors,function(keyDescriptor) {\n\t\t// Look for a named shortcut\n\t\tif(keyDescriptor.substr(0,2) === \"((\" && keyDescriptor.substr(-2,2) === \"))\") {\n\t\t\tif(options.stack.indexOf(keyDescriptor) === -1) {\n\t\t\t\toptions.stack.push(keyDescriptor);\n\t\t\t\tvar name = keyDescriptor.substring(2,keyDescriptor.length - 2),\n\t\t\t\t\tlookupName = function(configName) {\n\t\t\t\t\t\tvar keyDescriptors = wiki.getTiddlerText(\"$:/config/\" + configName + \"/\" + name);\n\t\t\t\t\t\tif(keyDescriptors) {\n\t\t\t\t\t\t\tresult.push.apply(result,self.parseKeyDescriptors(keyDescriptors,options));\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\tlookupName(\"shortcuts\");\n\t\t\t\tlookupName($tw.platform.isMac ? \"shortcuts-mac\" : \"shortcuts-not-mac\");\n\t\t\t\tlookupName($tw.platform.isWindows ? \"shortcuts-windows\" : \"shortcuts-not-windows\");\n\t\t\t\tlookupName($tw.platform.isLinux ? \"shortcuts-linux\" : \"shortcuts-not-linux\");\n\t\t\t}\n\t\t} else {\n\t\t\tresult.push(self.parseKeyDescriptor(keyDescriptor));\n\t\t}\n\t});\n\treturn result;\n};\n\nKeyboardManager.prototype.getPrintableShortcuts = function(keyInfoArray) {\n\tvar self = this,\n\t\tresult = [];\n\t$tw.utils.each(keyInfoArray,function(keyInfo) {\n\t\tif(keyInfo) {\n\t\t\tresult.push((keyInfo.ctrlKey ? \"ctrl-\" : \"\") + \n\t\t\t\t   (keyInfo.shiftKey ? \"shift-\" : \"\") + \n\t\t\t\t   (keyInfo.altKey ? \"alt-\" : \"\") + \n\t\t\t\t   (keyInfo.metaKey ? self.metaKeyName : \"\") + \n\t\t\t\t   (self.keyNames[keyInfo.keyCode]));\n\t\t}\n\t});\n\treturn result;\n}\n\nKeyboardManager.prototype.checkKeyDescriptor = function(event,keyInfo) {\n\treturn keyInfo &&\n\t\t\tevent.keyCode === keyInfo.keyCode && \n\t\t\tevent.shiftKey === keyInfo.shiftKey && \n\t\t\tevent.altKey === keyInfo.altKey && \n\t\t\tevent.ctrlKey === keyInfo.ctrlKey && \n\t\t\tevent.metaKey === keyInfo.metaKey;\n};\n\nKeyboardManager.prototype.checkKeyDescriptors = function(event,keyInfoArray) {\n\tfor(var t=0; t<keyInfoArray.length; t++) {\n\t\tif(this.checkKeyDescriptor(event,keyInfoArray[t])) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\nexports.KeyboardManager = KeyboardManager;\n\n})();\n",
            "title": "$:/core/modules/keyboard.js",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/language.js": {
            "text": "/*\\\ntitle: $:/core/modules/language.js\ntype: application/javascript\nmodule-type: global\n\nThe $tw.Language() manages translateable strings\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreate an instance of the language manager. Options include:\nwiki: wiki from which to retrieve translation tiddlers\n*/\nfunction Language(options) {\n\toptions = options || \"\";\n\tthis.wiki = options.wiki || $tw.wiki;\n}\n\n/*\nReturn a wikified translateable string. The title is automatically prefixed with \"$:/language/\"\nOptions include:\nvariables: optional hashmap of variables to supply to the language wikification\n*/\nLanguage.prototype.getString = function(title,options) {\n\toptions = options || {};\n\ttitle = \"$:/language/\" + title;\n\treturn this.wiki.renderTiddler(\"text/plain\",title,{variables: options.variables});\n};\n\n/*\nReturn a raw, unwikified translateable string. The title is automatically prefixed with \"$:/language/\"\n*/\nLanguage.prototype.getRawString = function(title) {\n\ttitle = \"$:/language/\" + title;\n\treturn this.wiki.getTiddlerText(title);\n};\n\nexports.Language = Language;\n\n})();\n",
            "title": "$:/core/modules/language.js",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/macros/changecount.js": {
            "text": "/*\\\ntitle: $:/core/modules/macros/changecount.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return the changecount for the current tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"changecount\";\n\nexports.params = [];\n\n/*\nRun the macro\n*/\nexports.run = function() {\n\treturn this.wiki.getChangeCount(this.getVariable(\"currentTiddler\")) + \"\";\n};\n\n})();\n",
            "title": "$:/core/modules/macros/changecount.js",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/contrastcolour.js": {
            "text": "/*\\\ntitle: $:/core/modules/macros/contrastcolour.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to choose which of two colours has the highest contrast with a base colour\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"contrastcolour\";\n\nexports.params = [\n\t{name: \"target\"},\n\t{name: \"fallbackTarget\"},\n\t{name: \"colourA\"},\n\t{name: \"colourB\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(target,fallbackTarget,colourA,colourB) {\n\tvar rgbTarget = $tw.utils.parseCSSColor(target) || $tw.utils.parseCSSColor(fallbackTarget);\n\tif(!rgbTarget) {\n\t\treturn colourA;\n\t}\n\tvar rgbColourA = $tw.utils.parseCSSColor(colourA),\n\t\trgbColourB = $tw.utils.parseCSSColor(colourB);\n\tif(rgbColourA && !rgbColourB) {\n\t\treturn rgbColourA;\n\t}\n\tif(rgbColourB && !rgbColourA) {\n\t\treturn rgbColourB;\n\t}\n\tif(!rgbColourA && !rgbColourB) {\n\t\t// If neither colour is readable, return a crude inverse of the target\n\t\treturn [255 - rgbTarget[0],255 - rgbTarget[1],255 - rgbTarget[2],rgbTarget[3]];\n\t}\n\t// Colour brightness formula derived from http://www.w3.org/WAI/ER/WD-AERT/#color-contrast\n\tvar brightnessTarget = rgbTarget[0] * 0.299 + rgbTarget[1] * 0.587 + rgbTarget[2] * 0.114,\n\t\tbrightnessA = rgbColourA[0] * 0.299 + rgbColourA[1] * 0.587 + rgbColourA[2] * 0.114,\n\t\tbrightnessB = rgbColourB[0] * 0.299 + rgbColourB[1] * 0.587 + rgbColourB[2] * 0.114;\n\treturn Math.abs(brightnessTarget - brightnessA) > Math.abs(brightnessTarget - brightnessB) ? colourA : colourB;\n};\n\n})();\n",
            "title": "$:/core/modules/macros/contrastcolour.js",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/csvtiddlers.js": {
            "text": "/*\\\ntitle: $:/core/modules/macros/csvtiddlers.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output tiddlers matching a filter to CSV\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"csvtiddlers\";\n\nexports.params = [\n\t{name: \"filter\"},\n\t{name: \"format\"},\n];\n\n/*\nRun the macro\n*/\nexports.run = function(filter,format) {\n\tvar self = this,\n\t\ttiddlers = this.wiki.filterTiddlers(filter),\n\t\ttiddler,\n\t\tfields = [],\n\t\tt,f;\n\t// Collect all the fields\n\tfor(t=0;t<tiddlers.length; t++) {\n\t\ttiddler = this.wiki.getTiddler(tiddlers[t]);\n\t\tfor(f in tiddler.fields) {\n\t\t\tif(fields.indexOf(f) === -1) {\n\t\t\t\tfields.push(f);\n\t\t\t}\n\t\t}\n\t}\n\t// Sort the fields and bring the standard ones to the front\n\tfields.sort();\n\t\"title text modified modifier created creator\".split(\" \").reverse().forEach(function(value,index) {\n\t\tvar p = fields.indexOf(value);\n\t\tif(p !== -1) {\n\t\t\tfields.splice(p,1);\n\t\t\tfields.unshift(value)\n\t\t}\n\t});\n\t// Output the column headings\n\tvar output = [], row = [];\n\tfields.forEach(function(value) {\n\t\trow.push(quoteAndEscape(value))\n\t});\n\toutput.push(row.join(\",\"));\n\t// Output each tiddler\n\tfor(var t=0;t<tiddlers.length; t++) {\n\t\trow = [];\n\t\ttiddler = this.wiki.getTiddler(tiddlers[t]);\n\t\t\tfor(f=0; f<fields.length; f++) {\n\t\t\t\trow.push(quoteAndEscape(tiddler ? tiddler.getFieldString(fields[f]) || \"\" : \"\"));\n\t\t\t}\n\t\toutput.push(row.join(\",\"));\n\t}\n\treturn output.join(\"\\n\");\n};\n\nfunction quoteAndEscape(value) {\n\treturn \"\\\"\" + value.replace(/\"/mg,\"\\\"\\\"\") + \"\\\"\";\n}\n\n})();\n",
            "title": "$:/core/modules/macros/csvtiddlers.js",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/displayshortcuts.js": {
            "text": "/*\\\ntitle: $:/core/modules/macros/displayshortcuts.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to display a list of keyboard shortcuts in human readable form. Notably, it resolves named shortcuts like `((bold))` to the underlying keystrokes.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"displayshortcuts\";\n\nexports.params = [\n\t{name: \"shortcuts\"},\n\t{name: \"prefix\"},\n\t{name: \"separator\"},\n\t{name: \"suffix\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(shortcuts,prefix,separator,suffix) {\n\tvar shortcutArray = $tw.keyboardManager.getPrintableShortcuts($tw.keyboardManager.parseKeyDescriptors(shortcuts,{\n\t\twiki: this.wiki\n\t}));\n\tif(shortcutArray.length > 0) {\n\t\tshortcutArray.sort(function(a,b) {\n\t\t    return a.toLowerCase().localeCompare(b.toLowerCase());\n\t\t})\n\t\treturn prefix + shortcutArray.join(separator) + suffix;\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n})();\n",
            "title": "$:/core/modules/macros/displayshortcuts.js",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/dumpvariables.js": {
            "text": "/*\\\ntitle: $:/core/modules/macros/dumpvariables.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to dump all active variable values\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"dumpvariables\";\n\nexports.params = [\n];\n\n/*\nRun the macro\n*/\nexports.run = function() {\n\tvar output = [\"|!Variable |!Value |\"],\n\t\tvariables = [], variable;\n\tfor(variable in this.variables) {\n\t\tvariables.push(variable);\n\t}\n\tvariables.sort();\n\tfor(var index=0; index<variables.length; index++) {\n\t\tvar variable = variables[index];\n\t\toutput.push(\"|\" + variable + \" |<input size=50 value=<<\" + variable + \">>/> |\")\n\t}\n\treturn output.join(\"\\n\");\n};\n\n})();\n",
            "title": "$:/core/modules/macros/dumpvariables.js",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/jsontiddler.js": {
            "text": "/*\\\ntitle: $:/core/modules/macros/jsontiddler.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output a single tiddler to JSON\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"jsontiddler\";\n\nexports.params = [\n\t{name: \"title\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(title) {\n\ttitle = title || this.getVariable(\"currentTiddler\");\n\tvar tiddler = !!title && this.wiki.getTiddler(title),\n\t\tfields = new Object();\n\tif(tiddler) {\n\t\tfor(var field in tiddler.fields) {\n\t\t\tfields[field] = tiddler.getFieldString(field);\n\t\t}\n\t}\n\treturn JSON.stringify(fields,null,$tw.config.preferences.jsonSpaces);\n};\n\n})();\n",
            "title": "$:/core/modules/macros/jsontiddler.js",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/jsontiddlers.js": {
            "text": "/*\\\ntitle: $:/core/modules/macros/jsontiddlers.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output tiddlers matching a filter to JSON\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"jsontiddlers\";\n\nexports.params = [\n\t{name: \"filter\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(filter) {\n\tvar tiddlers = this.wiki.filterTiddlers(filter),\n\t\tdata = [];\n\tfor(var t=0;t<tiddlers.length; t++) {\n\t\tvar tiddler = this.wiki.getTiddler(tiddlers[t]);\n\t\tif(tiddler) {\n\t\t\tvar fields = new Object();\n\t\t\tfor(var field in tiddler.fields) {\n\t\t\t\tfields[field] = tiddler.getFieldString(field);\n\t\t\t}\n\t\t\tdata.push(fields);\n\t\t}\n\t}\n\treturn JSON.stringify(data,null,$tw.config.preferences.jsonSpaces);\n};\n\n})();\n",
            "title": "$:/core/modules/macros/jsontiddlers.js",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/makedatauri.js": {
            "text": "/*\\\ntitle: $:/core/modules/macros/makedatauri.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to convert a string of text to a data URI\n\n<<makedatauri text:\"Text to be converted\" type:\"text/vnd.tiddlywiki\">>\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"makedatauri\";\n\nexports.params = [\n\t{name: \"text\"},\n\t{name: \"type\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(text,type) {\n\treturn $tw.utils.makeDataUri(text,type);\n};\n\n})();\n",
            "title": "$:/core/modules/macros/makedatauri.js",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/now.js": {
            "text": "/*\\\ntitle: $:/core/modules/macros/now.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return a formatted version of the current time\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"now\";\n\nexports.params = [\n\t{name: \"format\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(format) {\n\treturn $tw.utils.formatDateString(new Date(),format || \"0hh:0mm, DDth MMM YYYY\");\n};\n\n})();\n",
            "title": "$:/core/modules/macros/now.js",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/qualify.js": {
            "text": "/*\\\ntitle: $:/core/modules/macros/qualify.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to qualify a state tiddler title according\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"qualify\";\n\nexports.params = [\n\t{name: \"title\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(title) {\n\treturn title + \"-\" + this.getStateQualifier();\n};\n\n})();\n",
            "title": "$:/core/modules/macros/qualify.js",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/resolvepath.js": {
            "text": "/*\\\ntitle: $:/core/modules/macros/resolvepath.js\ntype: application/javascript\nmodule-type: macro\n\nResolves a relative path for an absolute rootpath.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"resolvepath\";\n\nexports.params = [\n\t{name: \"source\"},\n\t{name: \"root\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(source, root) {\n\treturn $tw.utils.resolvePath(source, root);\n};\n\n})();\n",
            "title": "$:/core/modules/macros/resolvepath.js",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/version.js": {
            "text": "/*\\\ntitle: $:/core/modules/macros/version.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return the TiddlyWiki core version number\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"version\";\n\nexports.params = [];\n\n/*\nRun the macro\n*/\nexports.run = function() {\n\treturn $tw.version;\n};\n\n})();\n",
            "title": "$:/core/modules/macros/version.js",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/parsers/audioparser.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/audioparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe audio parser parses an audio tiddler into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar AudioParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"audio\",\n\t\t\tattributes: {\n\t\t\t\tcontrols: {type: \"string\", value: \"controls\"}\n\t\t\t}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"audio/ogg\"] = AudioParser;\nexports[\"audio/mpeg\"] = AudioParser;\nexports[\"audio/mp3\"] = AudioParser;\nexports[\"audio/mp4\"] = AudioParser;\n\n})();\n\n",
            "title": "$:/core/modules/parsers/audioparser.js",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/csvparser.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/csvparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe CSV text parser processes CSV files into a table wrapped in a scrollable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar CsvParser = function(type,text,options) {\n\t// Table framework\n\tthis.tree = [{\n\t\t\"type\": \"scrollable\", \"children\": [{\n\t\t\t\"type\": \"element\", \"tag\": \"table\", \"children\": [{\n\t\t\t\t\"type\": \"element\", \"tag\": \"tbody\", \"children\": []\n\t\t\t}], \"attributes\": {\n\t\t\t\t\"class\": {\"type\": \"string\", \"value\": \"tc-csv-table\"}\n\t\t\t}\n\t\t}]\n\t}];\n\t// Split the text into lines\n\tvar lines = text.split(/\\r?\\n/mg),\n\t\ttag = \"th\";\n\tfor(var line=0; line<lines.length; line++) {\n\t\tvar lineText = lines[line];\n\t\tif(lineText) {\n\t\t\tvar row = {\n\t\t\t\t\t\"type\": \"element\", \"tag\": \"tr\", \"children\": []\n\t\t\t\t};\n\t\t\tvar columns = lineText.split(\",\");\n\t\t\tfor(var column=0; column<columns.length; column++) {\n\t\t\t\trow.children.push({\n\t\t\t\t\t\t\"type\": \"element\", \"tag\": tag, \"children\": [{\n\t\t\t\t\t\t\t\"type\": \"text\",\n\t\t\t\t\t\t\t\"text\": columns[column]\n\t\t\t\t\t\t}]\n\t\t\t\t\t});\n\t\t\t}\n\t\t\ttag = \"td\";\n\t\t\tthis.tree[0].children[0].children[0].children.push(row);\n\t\t}\n\t}\n};\n\nexports[\"text/csv\"] = CsvParser;\n\n})();\n\n",
            "title": "$:/core/modules/parsers/csvparser.js",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/htmlparser.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/htmlparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe HTML parser displays text as raw HTML\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HtmlParser = function(type,text,options) {\n\tvar src;\n\tif(options._canonical_uri) {\n\t\tsrc = options._canonical_uri;\n\t} else if(text) {\n\t\tsrc = \"data:text/html;charset=utf-8,\" + encodeURIComponent(text);\n\t}\n\tthis.tree = [{\n\t\ttype: \"element\",\n\t\ttag: \"iframe\",\n\t\tattributes: {\n\t\t\tsrc: {type: \"string\", value: src},\n\t\t\tsandbox: {type: \"string\", value: \"\"}\n\t\t}\n\t}];\n};\n\nexports[\"text/html\"] = HtmlParser;\n\n})();\n\n",
            "title": "$:/core/modules/parsers/htmlparser.js",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/imageparser.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/imageparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe image parser parses an image into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ImageParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"img\",\n\t\t\tattributes: {}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\tif(type === \"image/svg+xml\" || type === \".svg\") {\n\t\t\telement.attributes.src = {type: \"string\", value: \"data:image/svg+xml,\" + encodeURIComponent(text)};\n\t\t} else {\n\t\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t\t}\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"image/svg+xml\"] = ImageParser;\nexports[\"image/jpg\"] = ImageParser;\nexports[\"image/jpeg\"] = ImageParser;\nexports[\"image/png\"] = ImageParser;\nexports[\"image/gif\"] = ImageParser;\nexports[\"image/x-icon\"] = ImageParser;\n\n})();\n\n",
            "title": "$:/core/modules/parsers/imageparser.js",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/utils/parseutils.js": {
            "text": "/*\\\ntitle: $:/core/modules/utils/parseutils.js\ntype: application/javascript\nmodule-type: utils\n\nUtility functions concerned with parsing text into tokens.\n\nMost functions have the following pattern:\n\n* The parameters are:\n** `source`: the source string being parsed\n** `pos`: the current parse position within the string\n** Any further parameters are used to identify the token that is being parsed\n* The return value is:\n** null if the token was not found at the specified position\n** an object representing the token with the following standard fields:\n*** `type`: string indicating the type of the token\n*** `start`: start position of the token in the source string\n*** `end`: end position of the token in the source string\n*** Any further fields required to describe the token\n\nThe exception is `skipWhiteSpace`, which just returns the position after the whitespace.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nLook for a whitespace token. Returns null if not found, otherwise returns {type: \"whitespace\", start:, end:,}\n*/\nexports.parseWhiteSpace = function(source,pos) {\n\tvar p = pos,c;\n\twhile(true) {\n\t\tc = source.charAt(p);\n\t\tif((c === \" \") || (c === \"\\f\") || (c === \"\\n\") || (c === \"\\r\") || (c === \"\\t\") || (c === \"\\v\") || (c === \"\\u00a0\")) { // Ignores some obscure unicode spaces\n\t\t\tp++;\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t}\n\tif(p === pos) {\n\t\treturn null;\n\t} else {\n\t\treturn {\n\t\t\ttype: \"whitespace\",\n\t\t\tstart: pos,\n\t\t\tend: p\n\t\t}\n\t}\n};\n\n/*\nConvenience wrapper for parseWhiteSpace. Returns the position after the whitespace\n*/\nexports.skipWhiteSpace = function(source,pos) {\n\tvar c;\n\twhile(true) {\n\t\tc = source.charAt(pos);\n\t\tif((c === \" \") || (c === \"\\f\") || (c === \"\\n\") || (c === \"\\r\") || (c === \"\\t\") || (c === \"\\v\") || (c === \"\\u00a0\")) { // Ignores some obscure unicode spaces\n\t\t\tpos++;\n\t\t} else {\n\t\t\treturn pos;\n\t\t}\n\t}\n};\n\n/*\nLook for a given string token. Returns null if not found, otherwise returns {type: \"token\", value:, start:, end:,}\n*/\nexports.parseTokenString = function(source,pos,token) {\n\tvar match = source.indexOf(token,pos) === pos;\n\tif(match) {\n\t\treturn {\n\t\t\ttype: \"token\",\n\t\t\tvalue: token,\n\t\t\tstart: pos,\n\t\t\tend: pos + token.length\n\t\t};\n\t}\n\treturn null;\n};\n\n/*\nLook for a token matching a regex. Returns null if not found, otherwise returns {type: \"regexp\", match:, start:, end:,}\n*/\nexports.parseTokenRegExp = function(source,pos,reToken) {\n\tvar node = {\n\t\ttype: \"regexp\",\n\t\tstart: pos\n\t};\n\treToken.lastIndex = pos;\n\tnode.match = reToken.exec(source);\n\tif(node.match && node.match.index === pos) {\n\t\tnode.end = pos + node.match[0].length;\n\t\treturn node;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLook for a string literal. Returns null if not found, otherwise returns {type: \"string\", value:, start:, end:,}\n*/\nexports.parseStringLiteral = function(source,pos) {\n\tvar node = {\n\t\ttype: \"string\",\n\t\tstart: pos\n\t};\n\tvar reString = /(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\")|(?:'([^']*)')/g;\n\treString.lastIndex = pos;\n\tvar match = reString.exec(source);\n\tif(match && match.index === pos) {\n\t\tnode.value = match[1] !== undefined ? match[1] :(\n\t\t\tmatch[2] !== undefined ? match[2] : match[3] \n\t\t\t\t\t);\n\t\tnode.end = pos + match[0].length;\n\t\treturn node;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLook for a macro invocation parameter. Returns null if not found, or {type: \"macro-parameter\", name:, value:, start:, end:}\n*/\nexports.parseMacroParameter = function(source,pos) {\n\tvar node = {\n\t\ttype: \"macro-parameter\",\n\t\tstart: pos\n\t};\n\t// Define our regexp\n\tvar reMacroParameter = /(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\\s>\"'=]+)))/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the parameter\n\tvar token = $tw.utils.parseTokenRegExp(source,pos,reMacroParameter);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the parameter details\n\tnode.value = token.match[2] !== undefined ? token.match[2] : (\n\t\t\t\t\ttoken.match[3] !== undefined ? token.match[3] : (\n\t\t\t\t\t\ttoken.match[4] !== undefined ? token.match[4] : (\n\t\t\t\t\t\t\ttoken.match[5] !== undefined ? token.match[5] : (\n\t\t\t\t\t\t\t\ttoken.match[6] !== undefined ? token.match[6] : (\n\t\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t);\n\tif(token.match[1]) {\n\t\tnode.name = token.match[1];\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n/*\nLook for a macro invocation. Returns null if not found, or {type: \"macrocall\", name:, parameters:, start:, end:}\n*/\nexports.parseMacroInvocation = function(source,pos) {\n\tvar node = {\n\t\ttype: \"macrocall\",\n\t\tstart: pos,\n\t\tparams: []\n\t};\n\t// Define our regexps\n\tvar reMacroName = /([^\\s>\"'=]+)/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a double less than sign\n\tvar token = $tw.utils.parseTokenString(source,pos,\"<<\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the macro name\n\tvar name = $tw.utils.parseTokenRegExp(source,pos,reMacroName);\n\tif(!name) {\n\t\treturn null;\n\t}\n\tnode.name = name.match[1];\n\tpos = name.end;\n\t// Process parameters\n\tvar parameter = $tw.utils.parseMacroParameter(source,pos);\n\twhile(parameter) {\n\t\tnode.params.push(parameter);\n\t\tpos = parameter.end;\n\t\t// Get the next parameter\n\t\tparameter = $tw.utils.parseMacroParameter(source,pos);\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a double greater than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\">>\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n/*\nLook for an HTML attribute definition. Returns null if not found, otherwise returns {type: \"attribute\", name:, valueType: \"string|indirect|macro\", value:, start:, end:,}\n*/\nexports.parseAttribute = function(source,pos) {\n\tvar node = {\n\t\tstart: pos\n\t};\n\t// Define our regexps\n\tvar reAttributeName = /([^\\/\\s>\"'=]+)/g,\n\t\treUnquotedAttribute = /([^\\/\\s<>\"'=]+)/g,\n\t\treFilteredValue = /\\{\\{\\{(.+?)\\}\\}\\}/g,\n\t\treIndirectValue = /\\{\\{([^\\}]+)\\}\\}/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Get the attribute name\n\tvar name = $tw.utils.parseTokenRegExp(source,pos,reAttributeName);\n\tif(!name) {\n\t\treturn null;\n\t}\n\tnode.name = name.match[1];\n\tpos = name.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for an equals sign\n\tvar token = $tw.utils.parseTokenString(source,pos,\"=\");\n\tif(token) {\n\t\tpos = token.end;\n\t\t// Skip whitespace\n\t\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t\t// Look for a string literal\n\t\tvar stringLiteral = $tw.utils.parseStringLiteral(source,pos);\n\t\tif(stringLiteral) {\n\t\t\tpos = stringLiteral.end;\n\t\t\tnode.type = \"string\";\n\t\t\tnode.value = stringLiteral.value;\n\t\t} else {\n\t\t\t// Look for a filtered value\n\t\t\tvar filteredValue = $tw.utils.parseTokenRegExp(source,pos,reFilteredValue);\n\t\t\tif(filteredValue) {\n\t\t\t\tpos = filteredValue.end;\n\t\t\t\tnode.type = \"filtered\";\n\t\t\t\tnode.filter = filteredValue.match[1];\n\t\t\t} else {\n\t\t\t\t// Look for an indirect value\n\t\t\t\tvar indirectValue = $tw.utils.parseTokenRegExp(source,pos,reIndirectValue);\n\t\t\t\tif(indirectValue) {\n\t\t\t\t\tpos = indirectValue.end;\n\t\t\t\t\tnode.type = \"indirect\";\n\t\t\t\t\tnode.textReference = indirectValue.match[1];\n\t\t\t\t} else {\n\t\t\t\t\t// Look for a unquoted value\n\t\t\t\t\tvar unquotedValue = $tw.utils.parseTokenRegExp(source,pos,reUnquotedAttribute);\n\t\t\t\t\tif(unquotedValue) {\n\t\t\t\t\t\tpos = unquotedValue.end;\n\t\t\t\t\t\tnode.type = \"string\";\n\t\t\t\t\t\tnode.value = unquotedValue.match[1];\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Look for a macro invocation value\n\t\t\t\t\t\tvar macroInvocation = $tw.utils.parseMacroInvocation(source,pos);\n\t\t\t\t\t\tif(macroInvocation) {\n\t\t\t\t\t\t\tpos = macroInvocation.end;\n\t\t\t\t\t\t\tnode.type = \"macro\";\n\t\t\t\t\t\t\tnode.value = macroInvocation;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnode.type = \"string\";\n\t\t\t\t\t\t\tnode.value = \"true\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tnode.type = \"string\";\n\t\tnode.value = \"true\";\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n})();\n",
            "title": "$:/core/modules/utils/parseutils.js",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/parsers/pdfparser.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/pdfparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe PDF parser embeds a PDF viewer\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ImageParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"embed\",\n\t\t\tattributes: {}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:application/pdf;base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"application/pdf\"] = ImageParser;\n\n})();\n\n",
            "title": "$:/core/modules/parsers/pdfparser.js",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/textparser.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/textparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe plain text parser processes blocks of source text into a degenerate parse tree consisting of a single text node\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar TextParser = function(type,text,options) {\n\tthis.tree = [{\n\t\ttype: \"codeblock\",\n\t\tattributes: {\n\t\t\tcode: {type: \"string\", value: text},\n\t\t\tlanguage: {type: \"string\", value: type}\n\t\t}\n\t}];\n};\n\nexports[\"text/plain\"] = TextParser;\nexports[\"text/x-tiddlywiki\"] = TextParser;\nexports[\"application/javascript\"] = TextParser;\nexports[\"application/json\"] = TextParser;\nexports[\"text/css\"] = TextParser;\nexports[\"application/x-tiddler-dictionary\"] = TextParser;\n\n})();\n\n",
            "title": "$:/core/modules/parsers/textparser.js",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/videoparser.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/videoparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe video parser parses a video tiddler into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar VideoParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"video\",\n\t\t\tattributes: {\n\t\t\t\tcontrols: {type: \"string\", value: \"controls\"}\n\t\t\t}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"video/mp4\"] = VideoParser;\nexports[\"video/quicktime\"] = VideoParser;\n\n})();\n\n",
            "title": "$:/core/modules/parsers/videoparser.js",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/wikiparser/rules/codeblock.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/codeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for code blocks. For example:\n\n```\n\t```\n\tThis text will not be //wikified//\n\t```\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"codeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match and get language if defined\n\tthis.matchRegExp = /```([\\w-]*)\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /(\\r?\\n```$)/mg;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Look for the end of the block\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the block\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\t// Return the $codeblock widget\n\treturn [{\n\t\t\ttype: \"codeblock\",\n\t\t\tattributes: {\n\t\t\t\t\tcode: {type: \"string\", value: text},\n\t\t\t\t\tlanguage: {type: \"string\", value: this.match[1]}\n\t\t\t}\n\t}];\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/codeblock.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/codeinline.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/codeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for code runs. For example:\n\n```\n\tThis is a `code run`.\n\tThis is another ``code run``\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"codeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(``?)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar reEnd = new RegExp(this.match[1], \"mg\");\n\t// Look for the end marker\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the text\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"code\",\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\ttext: text\n\t\t}]\n\t}];\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/codeinline.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/commentblock.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/commentblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for HTML comments. For example:\n\n```\n<!-- This is a comment -->\n```\n\nNote that the syntax for comments is simplified to an opening \"<!--\" sequence and a closing \"-->\" sequence -- HTML itself implements a more complex format (see http://ostermiller.org/findhtmlcomment.html)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"commentblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\tthis.matchRegExp = /<!--/mg;\n\tthis.endMatchRegExp = /-->/mg;\n};\n\nexports.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\tif(this.match) {\n\t\tthis.endMatchRegExp.lastIndex = startPos + this.match[0].length;\n\t\tthis.endMatch = this.endMatchRegExp.exec(this.parser.source);\n\t\tif(this.endMatch) {\n\t\t\treturn this.match.index;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.endMatchRegExp.lastIndex;\n\t// Don't return any elements\n\treturn [];\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/commentblock.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/commentinline.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/commentinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for HTML comments. For example:\n\n```\n<!-- This is a comment -->\n```\n\nNote that the syntax for comments is simplified to an opening \"<!--\" sequence and a closing \"-->\" sequence -- HTML itself implements a more complex format (see http://ostermiller.org/findhtmlcomment.html)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"commentinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\tthis.matchRegExp = /<!--/mg;\n\tthis.endMatchRegExp = /-->/mg;\n};\n\nexports.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\tif(this.match) {\n\t\tthis.endMatchRegExp.lastIndex = startPos + this.match[0].length;\n\t\tthis.endMatch = this.endMatchRegExp.exec(this.parser.source);\n\t\tif(this.endMatch) {\n\t\t\treturn this.match.index;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.endMatchRegExp.lastIndex;\n\t// Don't return any elements\n\treturn [];\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/commentinline.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/dash.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/dash.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for dashes. For example:\n\n```\nThis is an en-dash: --\n\nThis is an em-dash: ---\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"dash\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /-{2,3}(?!-)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar dash = this.match[0].length === 2 ? \"&ndash;\" : \"&mdash;\";\n\treturn [{\n\t\ttype: \"entity\",\n\t\tentity: dash\n\t}];\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/dash.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/emphasis/bold.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/bold.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - bold. For example:\n\n```\n\tThis is ''bold'' text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except bold \n\\rules only bold \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"bold\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /''/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/''/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"strong\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
            "title": "$:/core/modules/parsers/wikiparser/rules/emphasis/bold.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/emphasis/italic.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/italic.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - italic. For example:\n\n```\n\tThis is //italic// text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except italic\n\\rules only italic\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"italic\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\/\\//mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/\\/\\//mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"em\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
            "title": "$:/core/modules/parsers/wikiparser/rules/emphasis/italic.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - strikethrough. For example:\n\n```\n\tThis is ~~strikethrough~~ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except strikethrough \n\\rules only strikethrough \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"strikethrough\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /~~/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/~~/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"strike\",\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - subscript. For example:\n\n```\n\tThis is ,,subscript,, text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except subscript \n\\rules only subscript \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"subscript\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /,,/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/,,/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"sub\",\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - superscript. For example:\n\n```\n\tThis is ^^superscript^^ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except superscript \n\\rules only superscript \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"superscript\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\^\\^/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/\\^\\^/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"sup\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
            "title": "$:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - underscore. For example:\n\n```\n\tThis is __underscore__ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except underscore \n\\rules only underscore\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"underscore\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /__/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/__/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"u\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
            "title": "$:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/entity.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/entity.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for HTML entities. For example:\n\n```\n\tThis is a copyright symbol: &copy;\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"entity\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(&#?[a-zA-Z0-9]{2,8};)/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar entityString = this.match[1];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Return the entity\n\treturn [{type: \"entity\", entity: this.match[0]}];\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/entity.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/extlink.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/extlink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for external links. For example:\n\n```\nAn external link: http://www.tiddlywiki.com/\n\nA suppressed external link: ~http://www.tiddlyspace.com/\n```\n\nExternal links can be suppressed by preceding them with `~`.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"extlink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /~?(?:file|http|https|mailto|ftp|irc|news|data|skype):[^\\s<>{}\\[\\]`|\"\\\\^]+(?:\\/|\\b)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Create the link unless it is suppressed\n\tif(this.match[0].substr(0,1) === \"~\") {\n\t\treturn [{type: \"text\", text: this.match[0].substr(1)}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tattributes: {\n\t\t\t\thref: {type: \"string\", value: this.match[0]},\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t\ttarget: {type: \"string\", value: \"_blank\"},\n\t\t\t\trel: {type: \"string\", value: \"noopener noreferrer\"}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: this.match[0]\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/extlink.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for block-level filtered transclusion. For example:\n\n```\n{{{ [tag[docs]] }}}\n{{{ [tag[docs]] |tooltip}}}\n{{{ [tag[docs]] ||TemplateTitle}}}\n{{{ [tag[docs]] |tooltip||TemplateTitle}}}\n{{{ [tag[docs]] }}width:40;height:50;}.class.class\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"filteredtranscludeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{\\{([^\\|]+?)(?:\\|([^\\|\\{\\}]+))?(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}([^\\}]*)\\}(?:\\.(\\S+))?(?:\\r?\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar filter = this.match[1],\n\t\ttooltip = this.match[2],\n\t\ttemplate = $tw.utils.trim(this.match[3]),\n\t\tstyle = this.match[4],\n\t\tclasses = this.match[5];\n\t// Return the list widget\n\tvar node = {\n\t\ttype: \"list\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: filter}\n\t\t},\n\t\tisBlock: true\n\t};\n\tif(tooltip) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: tooltip};\n\t}\n\tif(template) {\n\t\tnode.attributes.template = {type: \"string\", value: template};\n\t}\n\tif(style) {\n\t\tnode.attributes.style = {type: \"string\", value: style};\n\t}\n\tif(classes) {\n\t\tnode.attributes.itemClass = {type: \"string\", value: classes.split(\".\").join(\" \")};\n\t}\n\treturn [node];\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for inline filtered transclusion. For example:\n\n```\n{{{ [tag[docs]] }}}\n{{{ [tag[docs]] |tooltip}}}\n{{{ [tag[docs]] ||TemplateTitle}}}\n{{{ [tag[docs]] |tooltip||TemplateTitle}}}\n{{{ [tag[docs]] }}width:40;height:50;}.class.class\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"filteredtranscludeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{\\{([^\\|]+?)(?:\\|([^\\|\\{\\}]+))?(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}([^\\}]*)\\}(?:\\.(\\S+))?/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar filter = this.match[1],\n\t\ttooltip = this.match[2],\n\t\ttemplate = $tw.utils.trim(this.match[3]),\n\t\tstyle = this.match[4],\n\t\tclasses = this.match[5];\n\t// Return the list widget\n\tvar node = {\n\t\ttype: \"list\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: filter}\n\t\t}\n\t};\n\tif(tooltip) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: tooltip};\n\t}\n\tif(template) {\n\t\tnode.attributes.template = {type: \"string\", value: template};\n\t}\n\tif(style) {\n\t\tnode.attributes.style = {type: \"string\", value: style};\n\t}\n\tif(classes) {\n\t\tnode.attributes.itemClass = {type: \"string\", value: classes.split(\".\").join(\" \")};\n\t}\n\treturn [node];\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for marking areas with hard line breaks. For example:\n\n```\n\"\"\"\nThis is some text\nThat is set like\nIt is a Poem\nWhen it is\nClearly\nNot\n\"\"\"\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"hardlinebreaks\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\"\"\"(?:\\r?\\n)?/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /(\"\"\")|(\\r?\\n)/mg,\n\t\ttree = [],\n\t\tmatch;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tdo {\n\t\t// Parse the run up to the terminator\n\t\ttree.push.apply(tree,this.parser.parseInlineRun(reEnd,{eatTerminator: false}));\n\t\t// Redo the terminator match\n\t\treEnd.lastIndex = this.parser.pos;\n\t\tmatch = reEnd.exec(this.parser.source);\n\t\tif(match) {\n\t\t\tthis.parser.pos = reEnd.lastIndex;\n\t\t\t// Add a line break if the terminator was a line break\n\t\t\tif(match[2]) {\n\t\t\t\ttree.push({type: \"element\", tag: \"br\"});\n\t\t\t}\n\t\t}\n\t} while(match && !match[1]);\n\t// Return the nodes\n\treturn tree;\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/heading.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/heading.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for headings\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"heading\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(!{1,6})/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar headingLevel = this.match[1].length;\n\t// Move past the !s\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse any classes, whitespace and then the heading itself\n\tvar classes = this.parser.parseClasses();\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tvar tree = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// Return the heading\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"h\" + headingLevel, \n\t\tattributes: {\n\t\t\t\"class\": {type: \"string\", value: classes.join(\" \")}\n\t\t},\n\t\tchildren: tree\n\t}];\n};\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/heading.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/horizrule.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/horizrule.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for rules. For example:\n\n```\n---\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"horizrule\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /-{3,}\\r?(?:\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\treturn [{type: \"element\", tag: \"hr\"}];\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/horizrule.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/html.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/html.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for HTML elements and widgets. For example:\n\n{{{\n<aside>\nThis is an HTML5 aside element\n</aside>\n\n<$slider target=\"MyTiddler\">\nThis is a widget invocation\n</$slider>\n\n}}}\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"html\";\nexports.types = {inline: true, block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextTag = this.findNextTag(this.parser.source,startPos,{\n\t\trequireLineBreak: this.is.block\n\t});\n\treturn this.nextTag ? this.nextTag.start : undefined;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Retrieve the most recent match so that recursive calls don't overwrite it\n\tvar tag = this.nextTag;\n\tthis.nextTag = null;\n\t// Advance the parser position to past the tag\n\tthis.parser.pos = tag.end;\n\t// Check for an immediately following double linebreak\n\tvar hasLineBreak = !tag.isSelfClosing && !!$tw.utils.parseTokenRegExp(this.parser.source,this.parser.pos,/([^\\S\\n\\r]*\\r?\\n(?:[^\\S\\n\\r]*\\r?\\n|$))/g);\n\t// Set whether we're in block mode\n\ttag.isBlock = this.is.block || hasLineBreak;\n\t// Parse the body if we need to\n\tif(!tag.isSelfClosing && $tw.config.htmlVoidElements.indexOf(tag.tag) === -1) {\n\t\t\tvar reEndString = \"</\" + $tw.utils.escapeRegExp(tag.tag) + \">\",\n\t\t\t\treEnd = new RegExp(\"(\" + reEndString + \")\",\"mg\");\n\t\tif(hasLineBreak) {\n\t\t\ttag.children = this.parser.parseBlocks(reEndString);\n\t\t} else {\n\t\t\ttag.children = this.parser.parseInlineRun(reEnd);\n\t\t}\n\t\treEnd.lastIndex = this.parser.pos;\n\t\tvar endMatch = reEnd.exec(this.parser.source);\n\t\tif(endMatch && endMatch.index === this.parser.pos) {\n\t\t\tthis.parser.pos = endMatch.index + endMatch[0].length;\n\t\t}\n\t}\n\t// Return the tag\n\treturn [tag];\n};\n\n/*\nLook for an HTML tag. Returns null if not found, otherwise returns {type: \"element\", name:, attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseTag = function(source,pos,options) {\n\toptions = options || {};\n\tvar token,\n\t\tnode = {\n\t\t\ttype: \"element\",\n\t\t\tstart: pos,\n\t\t\tattributes: {}\n\t\t};\n\t// Define our regexps\n\tvar reTagName = /([a-zA-Z0-9\\-\\$]+)/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a less than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\"<\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the tag name\n\ttoken = $tw.utils.parseTokenRegExp(source,pos,reTagName);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tnode.tag = token.match[1];\n\tif(node.tag.charAt(0) === \"$\") {\n\t\tnode.type = node.tag.substr(1);\n\t}\n\tpos = token.end;\n\t// Check that the tag is terminated by a space, / or >\n\tif(!$tw.utils.parseWhiteSpace(source,pos) && !(source.charAt(pos) === \"/\") && !(source.charAt(pos) === \">\") ) {\n\t\treturn null;\n\t}\n\t// Process attributes\n\tvar attribute = $tw.utils.parseAttribute(source,pos);\n\twhile(attribute) {\n\t\tnode.attributes[attribute.name] = attribute;\n\t\tpos = attribute.end;\n\t\t// Get the next attribute\n\t\tattribute = $tw.utils.parseAttribute(source,pos);\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a closing slash\n\ttoken = $tw.utils.parseTokenString(source,pos,\"/\");\n\tif(token) {\n\t\tpos = token.end;\n\t\tnode.isSelfClosing = true;\n\t}\n\t// Look for a greater than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\">\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Check for a required line break\n\tif(options.requireLineBreak) {\n\t\ttoken = $tw.utils.parseTokenRegExp(source,pos,/([^\\S\\n\\r]*\\r?\\n(?:[^\\S\\n\\r]*\\r?\\n|$))/g);\n\t\tif(!token) {\n\t\t\treturn null;\n\t\t}\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\nexports.findNextTag = function(source,pos,options) {\n\t// A regexp for finding candidate HTML tags\n\tvar reLookahead = /<([a-zA-Z\\-\\$]+)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a tag\n\t\tvar tag = this.parseTag(source,match.index,options);\n\t\t// Return success\n\t\tif(tag && this.isLegalTag(tag)) {\n\t\t\treturn tag;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\nexports.isLegalTag = function(tag) {\n\t// Widgets are always OK\n\tif(tag.type !== \"element\") {\n\t\treturn true;\n\t// If it's an HTML tag that starts with a dash then it's not legal\n\t} else if(tag.tag.charAt(0) === \"-\") {\n\t\treturn false;\n\t} else {\n\t\t// Otherwise it's OK\n\t\treturn true;\n\t}\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/html.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/image.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/image.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for embedding images. For example:\n\n```\n[img[http://tiddlywiki.com/fractalveg.jpg]]\n[img width=23 height=24 [http://tiddlywiki.com/fractalveg.jpg]]\n[img width={{!!width}} height={{!!height}} [http://tiddlywiki.com/fractalveg.jpg]]\n[img[Description of image|http://tiddlywiki.com/fractalveg.jpg]]\n[img[TiddlerTitle]]\n[img[Description of image|TiddlerTitle]]\n```\n\nGenerates the `<$image>` widget.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"image\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextImage = this.findNextImage(this.parser.source,startPos);\n\treturn this.nextImage ? this.nextImage.start : undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.nextImage.end;\n\tvar node = {\n\t\ttype: \"image\",\n\t\tattributes: this.nextImage.attributes\n\t};\n\treturn [node];\n};\n\n/*\nFind the next image from the current position\n*/\nexports.findNextImage = function(source,pos) {\n\t// A regexp for finding candidate HTML tags\n\tvar reLookahead = /(\\[img)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a tag\n\t\tvar tag = this.parseImage(source,match.index);\n\t\t// Return success\n\t\tif(tag) {\n\t\t\treturn tag;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\n/*\nLook for an image at the specified position. Returns null if not found, otherwise returns {type: \"image\", attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseImage = function(source,pos) {\n\tvar token,\n\t\tnode = {\n\t\t\ttype: \"image\",\n\t\t\tstart: pos,\n\t\t\tattributes: {}\n\t\t};\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[img`\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[img\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Process attributes\n\tif(source.charAt(pos) !== \"[\") {\n\t\tvar attribute = $tw.utils.parseAttribute(source,pos);\n\t\twhile(attribute) {\n\t\t\tnode.attributes[attribute.name] = attribute;\n\t\t\tpos = attribute.end;\n\t\t\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t\t\tif(source.charAt(pos) !== \"[\") {\n\t\t\t\t// Get the next attribute\n\t\t\t\tattribute = $tw.utils.parseAttribute(source,pos);\n\t\t\t} else {\n\t\t\t\tattribute = null;\n\t\t\t}\n\t\t}\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[` after the attributes\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Get the source up to the terminating `]]`\n\ttoken = $tw.utils.parseTokenRegExp(source,pos,/(?:([^|\\]]*?)\\|)?([^\\]]+?)\\]\\]/g);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\tif(token.match[1]) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: token.match[1].trim()};\n\t}\n\tnode.attributes.source = {type: \"string\", value: (token.match[2] || \"\").trim()};\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/image.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/list.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/list.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for lists. For example:\n\n```\n* This is an unordered list\n* It has two items\n\n# This is a numbered list\n## With a subitem\n# And a third item\n\n; This is a term that is being defined\n: This is the definition of that term\n```\n\nNote that lists can be nested arbitrarily:\n\n```\n#** One\n#* Two\n#** Three\n#**** Four\n#**# Five\n#**## Six\n## Seven\n### Eight\n## Nine\n```\n\nA CSS class can be applied to a list item as follows:\n\n```\n* List item one\n*.active List item two has the class `active`\n* List item three\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"list\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /([\\*#;:>]+)/mg;\n};\n\nvar listTypes = {\n\t\"*\": {listTag: \"ul\", itemTag: \"li\"},\n\t\"#\": {listTag: \"ol\", itemTag: \"li\"},\n\t\";\": {listTag: \"dl\", itemTag: \"dt\"},\n\t\":\": {listTag: \"dl\", itemTag: \"dd\"},\n\t\">\": {listTag: \"blockquote\", itemTag: \"p\"}\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Array of parse tree nodes for the previous row of the list\n\tvar listStack = [];\n\t// Cycle through the items in the list\n\twhile(true) {\n\t\t// Match the list marker\n\t\tvar reMatch = /([\\*#;:>]+)/mg;\n\t\treMatch.lastIndex = this.parser.pos;\n\t\tvar match = reMatch.exec(this.parser.source);\n\t\tif(!match || match.index !== this.parser.pos) {\n\t\t\tbreak;\n\t\t}\n\t\t// Check whether the list type of the top level matches\n\t\tvar listInfo = listTypes[match[0].charAt(0)];\n\t\tif(listStack.length > 0 && listStack[0].tag !== listInfo.listTag) {\n\t\t\tbreak;\n\t\t}\n\t\t// Move past the list marker\n\t\tthis.parser.pos = match.index + match[0].length;\n\t\t// Walk through the list markers for the current row\n\t\tfor(var t=0; t<match[0].length; t++) {\n\t\t\tlistInfo = listTypes[match[0].charAt(t)];\n\t\t\t// Remove any stacked up element if we can't re-use it because the list type doesn't match\n\t\t\tif(listStack.length > t && listStack[t].tag !== listInfo.listTag) {\n\t\t\t\tlistStack.splice(t,listStack.length - t);\n\t\t\t}\n\t\t\t// Construct the list element or reuse the previous one at this level\n\t\t\tif(listStack.length <= t) {\n\t\t\t\tvar listElement = {type: \"element\", tag: listInfo.listTag, children: [\n\t\t\t\t\t{type: \"element\", tag: listInfo.itemTag, children: []}\n\t\t\t\t]};\n\t\t\t\t// Link this list element into the last child item of the parent list item\n\t\t\t\tif(t) {\n\t\t\t\t\tvar prevListItem = listStack[t-1].children[listStack[t-1].children.length-1];\n\t\t\t\t\tprevListItem.children.push(listElement);\n\t\t\t\t}\n\t\t\t\t// Save this element in the stack\n\t\t\t\tlistStack[t] = listElement;\n\t\t\t} else if(t === (match[0].length - 1)) {\n\t\t\t\tlistStack[t].children.push({type: \"element\", tag: listInfo.itemTag, children: []});\n\t\t\t}\n\t\t}\n\t\tif(listStack.length > match[0].length) {\n\t\t\tlistStack.splice(match[0].length,listStack.length - match[0].length);\n\t\t}\n\t\t// Process the body of the list item into the last list item\n\t\tvar lastListChildren = listStack[listStack.length-1].children,\n\t\t\tlastListItem = lastListChildren[lastListChildren.length-1],\n\t\t\tclasses = this.parser.parseClasses();\n\t\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\t\tvar tree = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t\tlastListItem.children.push.apply(lastListItem.children,tree);\n\t\tif(classes.length > 0) {\n\t\t\t$tw.utils.addClassToParseTreeNode(lastListItem,classes.join(\" \"));\n\t\t}\n\t\t// Consume any whitespace following the list item\n\t\tthis.parser.skipWhitespace();\n\t}\n\t// Return the root element of the list\n\treturn [listStack[0]];\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/list.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/macrocallblock.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrocallblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for block macro calls\n\n```\n<<name value value2>>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrocallblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /<<([^>\\s]+)(?:\\s*)((?:[^>]|(?:>(?!>)))*?)>>(?:\\r?\\n|$)/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar macroName = this.match[1],\n\t\tparamString = this.match[2];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar params = [],\n\t\treParam = /\\s*(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))/mg,\n\t\tparamMatch = reParam.exec(paramString);\n\twhile(paramMatch) {\n\t\t// Process this parameter\n\t\tvar paramInfo = {\n\t\t\tvalue: paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5] || paramMatch[6]\n\t\t};\n\t\tif(paramMatch[1]) {\n\t\t\tparamInfo.name = paramMatch[1];\n\t\t}\n\t\tparams.push(paramInfo);\n\t\t// Find the next match\n\t\tparamMatch = reParam.exec(paramString);\n\t}\n\treturn [{\n\t\ttype: \"macrocall\",\n\t\tname: macroName,\n\t\tparams: params,\n\t\tisBlock: true\n\t}];\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/macrocallblock.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/macrocallinline.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrocallinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for macro calls\n\n```\n<<name value value2>>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrocallinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /<<([^\\s>]+)\\s*([\\s\\S]*?)>>/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar macroName = this.match[1],\n\t\tparamString = this.match[2];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar params = [],\n\t\treParam = /\\s*(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))/mg,\n\t\tparamMatch = reParam.exec(paramString);\n\twhile(paramMatch) {\n\t\t// Process this parameter\n\t\tvar paramInfo = {\n\t\t\tvalue: paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5]|| paramMatch[6]\n\t\t};\n\t\tif(paramMatch[1]) {\n\t\t\tparamInfo.name = paramMatch[1];\n\t\t}\n\t\tparams.push(paramInfo);\n\t\t// Find the next match\n\t\tparamMatch = reParam.exec(paramString);\n\t}\n\treturn [{\n\t\ttype: \"macrocall\",\n\t\tname: macroName,\n\t\tparams: params\n\t}];\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/macrocallinline.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/macrodef.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrodef.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for macro definitions\n\n```\n\\define name(param:defaultvalue,param2:defaultvalue)\ndefinition text, including $param$ markers\n\\end\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrodef\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\define\\s+([^(\\s]+)\\(\\s*([^)]*)\\)(\\s*\\r?\\n)?/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Move past the macro name and parameters\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the parameters\n\tvar paramString = this.match[2],\n\t\tparams = [];\n\tif(paramString !== \"\") {\n\t\tvar reParam = /\\s*([A-Za-z0-9\\-_]+)(?:\\s*:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))?/mg,\n\t\t\tparamMatch = reParam.exec(paramString);\n\t\twhile(paramMatch) {\n\t\t\t// Save the parameter details\n\t\t\tvar paramInfo = {name: paramMatch[1]},\n\t\t\t\tdefaultValue = paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5] || paramMatch[6];\n\t\t\tif(defaultValue) {\n\t\t\t\tparamInfo[\"default\"] = defaultValue;\n\t\t\t}\n\t\t\tparams.push(paramInfo);\n\t\t\t// Look for the next parameter\n\t\t\tparamMatch = reParam.exec(paramString);\n\t\t}\n\t}\n\t// Is this a multiline definition?\n\tvar reEnd;\n\tif(this.match[3]) {\n\t\t// If so, the end of the body is marked with \\end\n\t\treEnd = /(\\r?\\n\\\\end[^\\S\\n\\r]*(?:$|\\r?\\n))/mg;\n\t} else {\n\t\t// Otherwise, the end of the definition is marked by the end of the line\n\t\treEnd = /($|\\r?\\n)/mg;\n\t\t// Move past any whitespace\n\t\tthis.parser.pos = $tw.utils.skipWhiteSpace(this.parser.source,this.parser.pos);\n\t}\n\t// Find the end of the definition\n\treEnd.lastIndex = this.parser.pos;\n\tvar text,\n\t\tendMatch = reEnd.exec(this.parser.source);\n\tif(endMatch) {\n\t\ttext = this.parser.source.substring(this.parser.pos,endMatch.index);\n\t\tthis.parser.pos = endMatch.index + endMatch[0].length;\n\t} else {\n\t\t// We didn't find the end of the definition, so we'll make it blank\n\t\ttext = \"\";\n\t}\n\t// Save the macro definition\n\treturn [{\n\t\ttype: \"set\",\n\t\tattributes: {\n\t\t\tname: {type: \"string\", value: this.match[1]},\n\t\t\tvalue: {type: \"string\", value: text}\n\t\t},\n\t\tchildren: [],\n\t\tparams: params\n\t}];\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/macrodef.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/prettyextlink.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/prettyextlink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for external links. For example:\n\n```\n[ext[http://tiddlywiki.com/fractalveg.jpg]]\n[ext[Tooltip|http://tiddlywiki.com/fractalveg.jpg]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"prettyextlink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextLink = this.findNextLink(this.parser.source,startPos);\n\treturn this.nextLink ? this.nextLink.start : undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.nextLink.end;\n\treturn [this.nextLink];\n};\n\n/*\nFind the next link from the current position\n*/\nexports.findNextLink = function(source,pos) {\n\t// A regexp for finding candidate links\n\tvar reLookahead = /(\\[ext\\[)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a link\n\t\tvar link = this.parseLink(source,match.index);\n\t\t// Return success\n\t\tif(link) {\n\t\t\treturn link;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\n/*\nLook for an link at the specified position. Returns null if not found, otherwise returns {type: \"element\", tag: \"a\", attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseLink = function(source,pos) {\n\tvar token,\n\t\ttextNode = {\n\t\t\ttype: \"text\"\n\t\t},\n\t\tnode = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tstart: pos,\n\t\t\tattributes: {\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t},\n\t\t\tchildren: [textNode]\n\t\t};\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[ext[`\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[ext[\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Look ahead for the terminating `]]`\n\tvar closePos = source.indexOf(\"]]\",pos);\n\tif(closePos === -1) {\n\t\treturn null;\n\t}\n\t// Look for a `|` separating the tooltip\n\tvar splitPos = source.indexOf(\"|\",pos);\n\tif(splitPos === -1 || splitPos > closePos) {\n\t\tsplitPos = null;\n\t}\n\t// Pull out the tooltip and URL\n\tvar tooltip, URL;\n\tif(splitPos) {\n\t\tURL = source.substring(splitPos + 1,closePos).trim();\n\t\ttextNode.text = source.substring(pos,splitPos).trim();\n\t} else {\n\t\tURL = source.substring(pos,closePos).trim();\n\t\ttextNode.text = URL;\n\t}\n\tnode.attributes.href = {type: \"string\", value: URL};\n\tnode.attributes.target = {type: \"string\", value: \"_blank\"};\n\tnode.attributes.rel = {type: \"string\", value: \"noopener noreferrer\"};\n\t// Update the end position\n\tnode.end = closePos + 2;\n\treturn node;\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/prettyextlink.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/prettylink.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/prettylink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for pretty links. For example:\n\n```\n[[Introduction]]\n\n[[Link description|TiddlerTitle]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"prettylink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\[\\[(.*?)(?:\\|(.*?))?\\]\\]/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Process the link\n\tvar text = this.match[1],\n\t\tlink = this.match[2] || text;\n\tif($tw.utils.isLinkExternal(link)) {\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tattributes: {\n\t\t\t\thref: {type: \"string\", value: link},\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t\ttarget: {type: \"string\", value: \"_blank\"},\n\t\t\t\trel: {type: \"string\", value: \"noopener noreferrer\"}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: text\n\t\t\t}]\n\t\t}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"link\",\n\t\t\tattributes: {\n\t\t\t\tto: {type: \"string\", value: link}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: text\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/prettylink.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/quoteblock.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/quoteblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for quote blocks. For example:\n\n```\n\t<<<.optionalClass(es) optional cited from\n\ta quote\n\t<<<\n\t\n\t<<<.optionalClass(es)\n\ta quote\n\t<<< optional cited from\n```\n\nQuotes can be quoted by putting more <s\n\n```\n\t<<<\n\tQuote Level 1\n\t\n\t<<<<\n\tQuoteLevel 2\n\t<<<<\n\t\n\t<<<\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"quoteblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(<<<+)/mg;\n};\n\nexports.parse = function() {\n\tvar classes = [\"tc-quote\"];\n\t// Get all the details of the match\n\tvar reEndString = \"^\" + this.match[1] + \"(?!<)\";\n\t// Move past the <s\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t\n\t// Parse any classes, whitespace and then the optional cite itself\n\tclasses.push.apply(classes, this.parser.parseClasses());\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tvar cite = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// before handling the cite, parse the body of the quote\n\tvar tree= this.parser.parseBlocks(reEndString);\n\t// If we got a cite, put it before the text\n\tif(cite.length > 0) {\n\t\ttree.unshift({\n\t\t\ttype: \"element\",\n\t\t\ttag: \"cite\",\n\t\t\tchildren: cite\n\t\t});\n\t}\n\t// Parse any optional cite\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tcite = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// If we got a cite, push it\n\tif(cite.length > 0) {\n\t\ttree.push({\n\t\t\ttype: \"element\",\n\t\t\ttag: \"cite\",\n\t\t\tchildren: cite\n\t\t});\n\t}\n\t// Return the blockquote element\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"blockquote\",\n\t\tattributes: {\n\t\t\tclass: { type: \"string\", value: classes.join(\" \") },\n\t\t},\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/quoteblock.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/rules.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/rules.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for rules specifications\n\n```\n\\rules except ruleone ruletwo rulethree\n\\rules only ruleone ruletwo rulethree\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"rules\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\rules[^\\S\\n]/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Move past the pragma invocation\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse whitespace delimited tokens terminated by a line break\n\tvar reMatch = /[^\\S\\n]*(\\S+)|(\\r?\\n)/mg,\n\t\ttokens = [];\n\treMatch.lastIndex = this.parser.pos;\n\tvar match = reMatch.exec(this.parser.source);\n\twhile(match && match.index === this.parser.pos) {\n\t\tthis.parser.pos = reMatch.lastIndex;\n\t\t// Exit if we've got the line break\n\t\tif(match[2]) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the token\n\t\tif(match[1]) {\n\t\t\ttokens.push(match[1]);\n\t\t}\n\t\t// Match the next token\n\t\tmatch = reMatch.exec(this.parser.source);\n\t}\n\t// Process the tokens\n\tif(tokens.length > 0) {\n\t\tthis.parser.amendRules(tokens[0],tokens.slice(1));\n\t}\n\t// No parse tree nodes to return\n\treturn [];\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/rules.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/styleblock.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/styleblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for assigning styles and classes to paragraphs and other blocks. For example:\n\n```\n@@.myClass\n@@background-color:red;\nThis paragraph will have the CSS class `myClass`.\n\n* The `<ul>` around this list will also have the class `myClass`\n* List item 2\n\n@@\n```\n\nNote that classes and styles can be mixed subject to the rule that styles must precede classes. For example\n\n```\n@@.myFirstClass.mySecondClass\n@@width:100px;.myThirdClass\nThis is a paragraph\n@@\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"styleblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /@@((?:[^\\.\\r\\n\\s:]+:[^\\r\\n;]+;)+)?(?:\\.([^\\r\\n\\s]+))?\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEndString = \"^@@(?:\\\\r?\\\\n)?\";\n\tvar classes = [], styles = [];\n\tdo {\n\t\t// Get the class and style\n\t\tif(this.match[1]) {\n\t\t\tstyles.push(this.match[1]);\n\t\t}\n\t\tif(this.match[2]) {\n\t\t\tclasses.push(this.match[2].split(\".\").join(\" \"));\n\t\t}\n\t\t// Move past the match\n\t\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t\t// Look for another line of classes and styles\n\t\tthis.match = this.matchRegExp.exec(this.parser.source);\n\t} while(this.match && this.match.index === this.parser.pos);\n\t// Parse the body\n\tvar tree = this.parser.parseBlocks(reEndString);\n\tfor(var t=0; t<tree.length; t++) {\n\t\tif(classes.length > 0) {\n\t\t\t$tw.utils.addClassToParseTreeNode(tree[t],classes.join(\" \"));\n\t\t}\n\t\tif(styles.length > 0) {\n\t\t\t$tw.utils.addAttributeToParseTreeNode(tree[t],\"style\",styles.join(\"\"));\n\t\t}\n\t}\n\treturn tree;\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/styleblock.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/styleinline.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/styleinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for assigning styles and classes to inline runs. For example:\n\n```\n@@.myClass This is some text with a class@@\n@@background-color:red;This is some text with a background colour@@\n@@width:100px;.myClass This is some text with a class and a width@@\n```\n\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"styleinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /@@((?:[^\\.\\r\\n\\s:]+:[^\\r\\n;]+;)+)?(\\.(?:[^\\r\\n\\s]+)\\s+)?/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /@@/g;\n\t// Get the styles and class\n\tvar stylesString = this.match[1],\n\t\tclassString = this.match[2] ? this.match[2].split(\".\").join(\" \") : undefined;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the run up to the terminator\n\tvar tree = this.parser.parseInlineRun(reEnd,{eatTerminator: true});\n\t// Return the classed span\n\tvar node = {\n\t\ttype: \"element\",\n\t\ttag: \"span\",\n\t\tattributes: {\n\t\t\t\"class\": {type: \"string\", value: \"tc-inline-style\"}\n\t\t},\n\t\tchildren: tree\n\t};\n\tif(classString) {\n\t\t$tw.utils.addClassToParseTreeNode(node,classString);\n\t}\n\tif(stylesString) {\n\t\t$tw.utils.addAttributeToParseTreeNode(node,\"style\",stylesString);\n\t}\n\treturn [node];\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/styleinline.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/syslink.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/syslink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for system tiddler links.\nCan be suppressed preceding them with `~`.\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"syslink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = new RegExp(\n\t\t\"~?\\\\$:\\\\/[\" +\n\t\t$tw.config.textPrimitives.anyLetter.substr(1,$tw.config.textPrimitives.anyLetter.length - 2) +\n\t\t\"\\/._-]+\",\n\t\t\"mg\"\n\t);\n};\n\nexports.parse = function() {\n\tvar match = this.match[0];\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Create the link unless it is suppressed\n\tif(match.substr(0,1) === \"~\") {\n\t\treturn [{type: \"text\", text: match.substr(1)}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"link\",\n\t\t\tattributes: {\n\t\t\t\tto: {type: \"string\", value: match}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: match\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();",
            "title": "$:/core/modules/parsers/wikiparser/rules/syslink.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/table.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/table.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for tables.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"table\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\|(?:[^\\n]*)\\|(?:[fhck]?)\\r?(?:\\n|$)/mg;\n};\n\nvar processRow = function(prevColumns) {\n\tvar cellRegExp = /(?:\\|([^\\n\\|]*)\\|)|(\\|[fhck]?\\r?(?:\\n|$))/mg,\n\t\tcellTermRegExp = /((?:\\x20*)\\|)/mg,\n\t\ttree = [],\n\t\tcol = 0,\n\t\tcolSpanCount = 1,\n\t\tprevCell,\n\t\tvAlign;\n\t// Match a single cell\n\tcellRegExp.lastIndex = this.parser.pos;\n\tvar cellMatch = cellRegExp.exec(this.parser.source);\n\twhile(cellMatch && cellMatch.index === this.parser.pos) {\n\t\tif(cellMatch[1] === \"~\") {\n\t\t\t// Rowspan\n\t\t\tvar last = prevColumns[col];\n\t\t\tif(last) {\n\t\t\t\tlast.rowSpanCount++;\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"rowspan\",last.rowSpanCount);\n\t\t\t\tvAlign = $tw.utils.getAttributeValueFromParseTreeNode(last.element,\"valign\",\"center\");\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"valign\",vAlign);\n\t\t\t\tif(colSpanCount > 1) {\n\t\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"colspan\",colSpanCount);\n\t\t\t\t\tcolSpanCount = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[1] === \">\") {\n\t\t\t// Colspan\n\t\t\tcolSpanCount++;\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[1] === \"<\" && prevCell) {\n\t\t\tcolSpanCount = 1 + $tw.utils.getAttributeValueFromParseTreeNode(prevCell,\"colspan\",1);\n\t\t\t$tw.utils.addAttributeToParseTreeNode(prevCell,\"colspan\",colSpanCount);\n\t\t\tcolSpanCount = 1;\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[2]) {\n\t\t\t// End of row\n\t\t\tif(prevCell && colSpanCount > 1) {\n\t\t\t\tif(prevCell.attributes && prevCell.attributes && prevCell.attributes.colspan) {\n\t\t\t\t\t\tcolSpanCount += prevCell.attributes.colspan.value;\n\t\t\t\t} else {\n\t\t\t\t\tcolSpanCount -= 1;\n\t\t\t\t}\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(prevCell,\"colspan\",colSpanCount);\n\t\t\t}\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t\tbreak;\n\t\t} else {\n\t\t\t// For ordinary cells, step beyond the opening `|`\n\t\t\tthis.parser.pos++;\n\t\t\t// Look for a space at the start of the cell\n\t\t\tvar spaceLeft = false;\n\t\t\tvAlign = null;\n\t\t\tif(this.parser.source.substr(this.parser.pos).search(/^\\^([^\\^]|\\^\\^)/) === 0) {\n\t\t\t\tvAlign = \"top\";\n\t\t\t} else if(this.parser.source.substr(this.parser.pos).search(/^,([^,]|,,)/) === 0) {\n\t\t\t\tvAlign = \"bottom\";\n\t\t\t}\n\t\t\tif(vAlign) {\n\t\t\t\tthis.parser.pos++;\n\t\t\t}\n\t\t\tvar chr = this.parser.source.substr(this.parser.pos,1);\n\t\t\twhile(chr === \" \") {\n\t\t\t\tspaceLeft = true;\n\t\t\t\tthis.parser.pos++;\n\t\t\t\tchr = this.parser.source.substr(this.parser.pos,1);\n\t\t\t}\n\t\t\t// Check whether this is a heading cell\n\t\t\tvar cell;\n\t\t\tif(chr === \"!\") {\n\t\t\t\tthis.parser.pos++;\n\t\t\t\tcell = {type: \"element\", tag: \"th\", children: []};\n\t\t\t} else {\n\t\t\t\tcell = {type: \"element\", tag: \"td\", children: []};\n\t\t\t}\n\t\t\ttree.push(cell);\n\t\t\t// Record information about this cell\n\t\t\tprevCell = cell;\n\t\t\tprevColumns[col] = {rowSpanCount:1,element:cell};\n\t\t\t// Check for a colspan\n\t\t\tif(colSpanCount > 1) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"colspan\",colSpanCount);\n\t\t\t\tcolSpanCount = 1;\n\t\t\t}\n\t\t\t// Parse the cell\n\t\t\tcell.children = this.parser.parseInlineRun(cellTermRegExp,{eatTerminator: true});\n\t\t\t// Set the alignment for the cell\n\t\t\tif(vAlign) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"valign\",vAlign);\n\t\t\t}\n\t\t\tif(this.parser.source.substr(this.parser.pos - 2,1) === \" \") { // spaceRight\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"align\",spaceLeft ? \"center\" : \"left\");\n\t\t\t} else if(spaceLeft) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"align\",\"right\");\n\t\t\t}\n\t\t\t// Move back to the closing `|`\n\t\t\tthis.parser.pos--;\n\t\t}\n\t\tcol++;\n\t\tcellRegExp.lastIndex = this.parser.pos;\n\t\tcellMatch = cellRegExp.exec(this.parser.source);\n\t}\n\treturn tree;\n};\n\nexports.parse = function() {\n\tvar rowContainerTypes = {\"c\":\"caption\", \"h\":\"thead\", \"\":\"tbody\", \"f\":\"tfoot\"},\n\t\ttable = {type: \"element\", tag: \"table\", children: []},\n\t\trowRegExp = /^\\|([^\\n]*)\\|([fhck]?)\\r?(?:\\n|$)/mg,\n\t\trowTermRegExp = /(\\|(?:[fhck]?)\\r?(?:\\n|$))/mg,\n\t\tprevColumns = [],\n\t\tcurrRowType,\n\t\trowContainer,\n\t\trowCount = 0;\n\t// Match the row\n\trowRegExp.lastIndex = this.parser.pos;\n\tvar rowMatch = rowRegExp.exec(this.parser.source);\n\twhile(rowMatch && rowMatch.index === this.parser.pos) {\n\t\tvar rowType = rowMatch[2];\n\t\t// Check if it is a class assignment\n\t\tif(rowType === \"k\") {\n\t\t\t$tw.utils.addClassToParseTreeNode(table,rowMatch[1]);\n\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t} else {\n\t\t\t// Otherwise, create a new row if this one is of a different type\n\t\t\tif(rowType !== currRowType) {\n\t\t\t\trowContainer = {type: \"element\", tag: rowContainerTypes[rowType], children: []};\n\t\t\t\ttable.children.push(rowContainer);\n\t\t\t\tcurrRowType = rowType;\n\t\t\t}\n\t\t\t// Is this a caption row?\n\t\t\tif(currRowType === \"c\") {\n\t\t\t\t// If so, move past the opening `|` of the row\n\t\t\t\tthis.parser.pos++;\n\t\t\t\t// Move the caption to the first row if it isn't already\n\t\t\t\tif(table.children.length !== 1) {\n\t\t\t\t\ttable.children.pop(); // Take rowContainer out of the children array\n\t\t\t\t\ttable.children.splice(0,0,rowContainer); // Insert it at the bottom\t\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t// Set the alignment - TODO: figure out why TW did this\n//\t\t\t\trowContainer.attributes.align = rowCount === 0 ? \"top\" : \"bottom\";\n\t\t\t\t// Parse the caption\n\t\t\t\trowContainer.children = this.parser.parseInlineRun(rowTermRegExp,{eatTerminator: true});\n\t\t\t} else {\n\t\t\t\t// Create the row\n\t\t\t\tvar theRow = {type: \"element\", tag: \"tr\", children: []};\n\t\t\t\t$tw.utils.addClassToParseTreeNode(theRow,rowCount%2 ? \"oddRow\" : \"evenRow\");\n\t\t\t\trowContainer.children.push(theRow);\n\t\t\t\t// Process the row\n\t\t\t\ttheRow.children = processRow.call(this,prevColumns);\n\t\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t\t\t// Increment the row count\n\t\t\t\trowCount++;\n\t\t\t}\n\t\t}\n\t\trowMatch = rowRegExp.exec(this.parser.source);\n\t}\n\treturn [table];\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/table.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/transcludeblock.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/transcludeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for block-level transclusion. For example:\n\n```\n{{MyTiddler}}\n{{MyTiddler||TemplateTitle}}\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"transcludeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{([^\\{\\}\\|]*)(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}(?:\\r?\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar template = $tw.utils.trim(this.match[2]),\n\t\ttextRef = $tw.utils.trim(this.match[1]);\n\t// Prepare the transclude widget\n\tvar transcludeNode = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {},\n\t\t\tisBlock: true\n\t\t};\n\t// Prepare the tiddler widget\n\tvar tr, targetTitle, targetField, targetIndex, tiddlerNode;\n\tif(textRef) {\n\t\ttr = $tw.utils.parseTextReference(textRef);\n\t\ttargetTitle = tr.title;\n\t\ttargetField = tr.field;\n\t\ttargetIndex = tr.index;\n\t\ttiddlerNode = {\n\t\t\ttype: \"tiddler\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: targetTitle}\n\t\t\t},\n\t\t\tisBlock: true,\n\t\t\tchildren: [transcludeNode]\n\t\t};\n\t}\n\tif(template) {\n\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: template};\n\t\tif(textRef) {\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t} else {\n\t\tif(textRef) {\n\t\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: targetTitle};\n\t\t\tif(targetField) {\n\t\t\t\ttranscludeNode.attributes.field = {type: \"string\", value: targetField};\n\t\t\t}\n\t\t\tif(targetIndex) {\n\t\t\t\ttranscludeNode.attributes.index = {type: \"string\", value: targetIndex};\n\t\t\t}\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t}\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/transcludeblock.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/transcludeinline.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/transcludeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for inline-level transclusion. For example:\n\n```\n{{MyTiddler}}\n{{MyTiddler||TemplateTitle}}\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"transcludeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{([^\\{\\}\\|]*)(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar template = $tw.utils.trim(this.match[2]),\n\t\ttextRef = $tw.utils.trim(this.match[1]);\n\t// Prepare the transclude widget\n\tvar transcludeNode = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {}\n\t\t};\n\t// Prepare the tiddler widget\n\tvar tr, targetTitle, targetField, targetIndex, tiddlerNode;\n\tif(textRef) {\n\t\ttr = $tw.utils.parseTextReference(textRef);\n\t\ttargetTitle = tr.title;\n\t\ttargetField = tr.field;\n\t\ttargetIndex = tr.index;\n\t\ttiddlerNode = {\n\t\t\ttype: \"tiddler\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: targetTitle}\n\t\t\t},\n\t\t\tchildren: [transcludeNode]\n\t\t};\n\t}\n\tif(template) {\n\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: template};\n\t\tif(textRef) {\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t} else {\n\t\tif(textRef) {\n\t\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: targetTitle};\n\t\t\tif(targetField) {\n\t\t\t\ttranscludeNode.attributes.field = {type: \"string\", value: targetField};\n\t\t\t}\n\t\t\tif(targetIndex) {\n\t\t\t\ttranscludeNode.attributes.index = {type: \"string\", value: targetIndex};\n\t\t\t}\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t}\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/transcludeinline.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/typedblock.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/typedblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for typed blocks. For example:\n\n```\n$$$.js\nThis will be rendered as JavaScript\n$$$\n\n$$$.svg\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"150\" height=\"100\">\n  <circle cx=\"100\" cy=\"50\" r=\"40\" stroke=\"black\" stroke-width=\"2\" fill=\"red\" />\n</svg>\n$$$\n\n$$$text/vnd.tiddlywiki>text/html\nThis will be rendered as an //HTML representation// of WikiText\n$$$\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.name = \"typedblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\$\\$\\$([^ >\\r\\n]*)(?: *> *([^ \\r\\n]+))?\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /\\r?\\n\\$\\$\\$\\r?(?:\\n|$)/mg;\n\t// Save the type\n\tvar parseType = this.match[1],\n\t\trenderType = this.match[2];\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Look for the end of the block\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the block\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\t// Parse the block according to the specified type\n\tvar parser = this.parser.wiki.parseText(parseType,text,{defaultType: \"text/plain\"});\n\t// If there's no render type, just return the parse tree\n\tif(!renderType) {\n\t\treturn parser.tree;\n\t} else {\n\t\t// Otherwise, render to the rendertype and return in a <PRE> tag\n\t\tvar widgetNode = this.parser.wiki.makeWidget(parser),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\ttext = renderType === \"text/html\" ? container.innerHTML : container.textContent;\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"pre\",\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: text\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/typedblock.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/wikilink.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/wikilink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for wiki links. For example:\n\n```\nAWikiLink\nAnotherLink\n~SuppressedLink\n```\n\nPrecede a camel case word with `~` to prevent it from being recognised as a link.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"wikilink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = new RegExp($tw.config.textPrimitives.unWikiLink + \"?\" + $tw.config.textPrimitives.wikiLink,\"mg\");\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get the details of the match\n\tvar linkText = this.match[0];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// If the link starts with the unwikilink character then just output it as plain text\n\tif(linkText.substr(0,1) === $tw.config.textPrimitives.unWikiLink) {\n\t\treturn [{type: \"text\", text: linkText.substr(1)}];\n\t}\n\t// If the link has been preceded with a blocked letter then don't treat it as a link\n\tif(this.match.index > 0) {\n\t\tvar preRegExp = new RegExp($tw.config.textPrimitives.blockPrefixLetters,\"mg\");\n\t\tpreRegExp.lastIndex = this.match.index-1;\n\t\tvar preMatch = preRegExp.exec(this.parser.source);\n\t\tif(preMatch && preMatch.index === this.match.index-1) {\n\t\t\treturn [{type: \"text\", text: linkText}];\n\t\t}\n\t}\n\treturn [{\n\t\ttype: \"link\",\n\t\tattributes: {\n\t\t\tto: {type: \"string\", value: linkText}\n\t\t},\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\ttext: linkText\n\t\t}]\n\t}];\n};\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/wikilink.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/wikiparser.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/wikiparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe wiki text parser processes blocks of source text into a parse tree.\n\nThe parse tree is made up of nested arrays of these JavaScript objects:\n\n\t{type: \"element\", tag: <string>, attributes: {}, children: []} - an HTML element\n\t{type: \"text\", text: <string>} - a text node\n\t{type: \"entity\", value: <string>} - an entity\n\t{type: \"raw\", html: <string>} - raw HTML\n\nAttributes are stored as hashmaps of the following objects:\n\n\t{type: \"string\", value: <string>} - literal string\n\t{type: \"indirect\", textReference: <textReference>} - indirect through a text reference\n\t{type: \"macro\", macro: <TBD>} - indirect through a macro invocation\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar WikiParser = function(type,text,options) {\n\tthis.wiki = options.wiki;\n\tvar self = this;\n\t// Check for an externally linked tiddler\n\tif($tw.browser && (text || \"\") === \"\" && options._canonical_uri) {\n\t\tthis.loadRemoteTiddler(options._canonical_uri);\n\t\ttext = $tw.language.getRawString(\"LazyLoadingWarning\");\n\t}\n\t// Initialise the classes if we don't have them already\n\tif(!this.pragmaRuleClasses) {\n\t\tWikiParser.prototype.pragmaRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"pragma\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.pragmaRuleClasses,\"$:/config/WikiParserRules/Pragmas/\");\n\t}\n\tif(!this.blockRuleClasses) {\n\t\tWikiParser.prototype.blockRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"block\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.blockRuleClasses,\"$:/config/WikiParserRules/Block/\");\n\t}\n\tif(!this.inlineRuleClasses) {\n\t\tWikiParser.prototype.inlineRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"inline\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.inlineRuleClasses,\"$:/config/WikiParserRules/Inline/\");\n\t}\n\t// Save the parse text\n\tthis.type = type || \"text/vnd.tiddlywiki\";\n\tthis.source = text || \"\";\n\tthis.sourceLength = this.source.length;\n\t// Set current parse position\n\tthis.pos = 0;\n\t// Instantiate the pragma parse rules\n\tthis.pragmaRules = this.instantiateRules(this.pragmaRuleClasses,\"pragma\",0);\n\t// Instantiate the parser block and inline rules\n\tthis.blockRules = this.instantiateRules(this.blockRuleClasses,\"block\",0);\n\tthis.inlineRules = this.instantiateRules(this.inlineRuleClasses,\"inline\",0);\n\t// Parse any pragmas\n\tthis.tree = [];\n\tvar topBranch = this.parsePragmas();\n\t// Parse the text into inline runs or blocks\n\tif(options.parseAsInline) {\n\t\ttopBranch.push.apply(topBranch,this.parseInlineRun());\n\t} else {\n\t\ttopBranch.push.apply(topBranch,this.parseBlocks());\n\t}\n\t// Return the parse tree\n};\n\n/*\n*/\nWikiParser.prototype.loadRemoteTiddler = function(url) {\n\tvar self = this;\n\t$tw.utils.httpRequest({\n\t\turl: url,\n\t\ttype: \"GET\",\n\t\tcallback: function(err,data) {\n\t\t\tif(!err) {\n\t\t\t\tvar tiddlers = self.wiki.deserializeTiddlers(\".tid\",data,self.wiki.getCreationFields());\n\t\t\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\t\t\ttiddler[\"_canonical_uri\"] = url;\n\t\t\t\t});\n\t\t\t\tif(tiddlers) {\n\t\t\t\t\tself.wiki.addTiddlers(tiddlers);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\n*/\nWikiParser.prototype.setupRules = function(proto,configPrefix) {\n\tvar self = this;\n\tif(!$tw.safemode) {\n\t\t$tw.utils.each(proto,function(object,name) {\n\t\t\tif(self.wiki.getTiddlerText(configPrefix + name,\"enable\") !== \"enable\") {\n\t\t\t\tdelete proto[name];\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nInstantiate an array of parse rules\n*/\nWikiParser.prototype.instantiateRules = function(classes,type,startPos) {\n\tvar rulesInfo = [],\n\t\tself = this;\n\t$tw.utils.each(classes,function(RuleClass) {\n\t\t// Instantiate the rule\n\t\tvar rule = new RuleClass(self);\n\t\trule.is = {};\n\t\trule.is[type] = true;\n\t\trule.init(self);\n\t\tvar matchIndex = rule.findNextMatch(startPos);\n\t\tif(matchIndex !== undefined) {\n\t\t\trulesInfo.push({\n\t\t\t\trule: rule,\n\t\t\t\tmatchIndex: matchIndex\n\t\t\t});\n\t\t}\n\t});\n\treturn rulesInfo;\n};\n\n/*\nSkip any whitespace at the current position. Options are:\n\ttreatNewlinesAsNonWhitespace: true if newlines are NOT to be treated as whitespace\n*/\nWikiParser.prototype.skipWhitespace = function(options) {\n\toptions = options || {};\n\tvar whitespaceRegExp = options.treatNewlinesAsNonWhitespace ? /([^\\S\\n]+)/mg : /(\\s+)/mg;\n\twhitespaceRegExp.lastIndex = this.pos;\n\tvar whitespaceMatch = whitespaceRegExp.exec(this.source);\n\tif(whitespaceMatch && whitespaceMatch.index === this.pos) {\n\t\tthis.pos = whitespaceRegExp.lastIndex;\n\t}\n};\n\n/*\nGet the next match out of an array of parse rule instances\n*/\nWikiParser.prototype.findNextMatch = function(rules,startPos) {\n\t// Find the best matching rule by finding the closest match position\n\tvar matchingRule,\n\t\tmatchingRulePos = this.sourceLength;\n\t// Step through each rule\n\tfor(var t=0; t<rules.length; t++) {\n\t\tvar ruleInfo = rules[t];\n\t\t// Ask the rule to get the next match if we've moved past the current one\n\t\tif(ruleInfo.matchIndex !== undefined  && ruleInfo.matchIndex < startPos) {\n\t\t\truleInfo.matchIndex = ruleInfo.rule.findNextMatch(startPos);\n\t\t}\n\t\t// Adopt this match if it's closer than the current best match\n\t\tif(ruleInfo.matchIndex !== undefined && ruleInfo.matchIndex <= matchingRulePos) {\n\t\t\tmatchingRule = ruleInfo;\n\t\t\tmatchingRulePos = ruleInfo.matchIndex;\n\t\t}\n\t}\n\treturn matchingRule;\n};\n\n/*\nParse any pragmas at the beginning of a block of parse text\n*/\nWikiParser.prototype.parsePragmas = function() {\n\tvar currentTreeBranch = this.tree;\n\twhile(true) {\n\t\t// Skip whitespace\n\t\tthis.skipWhitespace();\n\t\t// Check for the end of the text\n\t\tif(this.pos >= this.sourceLength) {\n\t\t\tbreak;\n\t\t}\n\t\t// Check if we've arrived at a pragma rule match\n\t\tvar nextMatch = this.findNextMatch(this.pragmaRules,this.pos);\n\t\t// If not, just exit\n\t\tif(!nextMatch || nextMatch.matchIndex !== this.pos) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the pragma rule\n\t\tvar subTree = nextMatch.rule.parse();\n\t\tif(subTree.length > 0) {\n\t\t\t// Quick hack; we only cope with a single parse tree node being returned, which is true at the moment\n\t\t\tcurrentTreeBranch.push.apply(currentTreeBranch,subTree);\n\t\t\tsubTree[0].children = [];\n\t\t\tcurrentTreeBranch = subTree[0].children;\n\t\t}\n\t}\n\treturn currentTreeBranch;\n};\n\n/*\nParse a block from the current position\n\tterminatorRegExpString: optional regular expression string that identifies the end of plain paragraphs. Must not include capturing parenthesis\n*/\nWikiParser.prototype.parseBlock = function(terminatorRegExpString) {\n\tvar terminatorRegExp = terminatorRegExpString ? new RegExp(\"(\" + terminatorRegExpString + \"|\\\\r?\\\\n\\\\r?\\\\n)\",\"mg\") : /(\\r?\\n\\r?\\n)/mg;\n\tthis.skipWhitespace();\n\tif(this.pos >= this.sourceLength) {\n\t\treturn [];\n\t}\n\t// Look for a block rule that applies at the current position\n\tvar nextMatch = this.findNextMatch(this.blockRules,this.pos);\n\tif(nextMatch && nextMatch.matchIndex === this.pos) {\n\t\treturn nextMatch.rule.parse();\n\t}\n\t// Treat it as a paragraph if we didn't find a block rule\n\treturn [{type: \"element\", tag: \"p\", children: this.parseInlineRun(terminatorRegExp)}];\n};\n\n/*\nParse a series of blocks of text until a terminating regexp is encountered or the end of the text\n\tterminatorRegExpString: terminating regular expression\n*/\nWikiParser.prototype.parseBlocks = function(terminatorRegExpString) {\n\tif(terminatorRegExpString) {\n\t\treturn this.parseBlocksTerminated(terminatorRegExpString);\n\t} else {\n\t\treturn this.parseBlocksUnterminated();\n\t}\n};\n\n/*\nParse a block from the current position to the end of the text\n*/\nWikiParser.prototype.parseBlocksUnterminated = function() {\n\tvar tree = [];\n\twhile(this.pos < this.sourceLength) {\n\t\ttree.push.apply(tree,this.parseBlock());\n\t}\n\treturn tree;\n};\n\n/*\nParse blocks of text until a terminating regexp is encountered\n*/\nWikiParser.prototype.parseBlocksTerminated = function(terminatorRegExpString) {\n\tvar terminatorRegExp = new RegExp(\"(\" + terminatorRegExpString + \")\",\"mg\"),\n\t\ttree = [];\n\t// Skip any whitespace\n\tthis.skipWhitespace();\n\t//  Check if we've got the end marker\n\tterminatorRegExp.lastIndex = this.pos;\n\tvar match = terminatorRegExp.exec(this.source);\n\t// Parse the text into blocks\n\twhile(this.pos < this.sourceLength && !(match && match.index === this.pos)) {\n\t\tvar blocks = this.parseBlock(terminatorRegExpString);\n\t\ttree.push.apply(tree,blocks);\n\t\t// Skip any whitespace\n\t\tthis.skipWhitespace();\n\t\t//  Check if we've got the end marker\n\t\tterminatorRegExp.lastIndex = this.pos;\n\t\tmatch = terminatorRegExp.exec(this.source);\n\t}\n\tif(match && match.index === this.pos) {\n\t\tthis.pos = match.index + match[0].length;\n\t}\n\treturn tree;\n};\n\n/*\nParse a run of text at the current position\n\tterminatorRegExp: a regexp at which to stop the run\n\toptions: see below\nOptions available:\n\teatTerminator: move the parse position past any encountered terminator (default false)\n*/\nWikiParser.prototype.parseInlineRun = function(terminatorRegExp,options) {\n\tif(terminatorRegExp) {\n\t\treturn this.parseInlineRunTerminated(terminatorRegExp,options);\n\t} else {\n\t\treturn this.parseInlineRunUnterminated(options);\n\t}\n};\n\nWikiParser.prototype.parseInlineRunUnterminated = function(options) {\n\tvar tree = [];\n\t// Find the next occurrence of an inline rule\n\tvar nextMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t// Loop around the matches until we've reached the end of the text\n\twhile(this.pos < this.sourceLength && nextMatch) {\n\t\t// Process the text preceding the run rule\n\t\tif(nextMatch.matchIndex > this.pos) {\n\t\t\ttree.push({type: \"text\", text: this.source.substring(this.pos,nextMatch.matchIndex)});\n\t\t\tthis.pos = nextMatch.matchIndex;\n\t\t}\n\t\t// Process the run rule\n\t\ttree.push.apply(tree,nextMatch.rule.parse());\n\t\t// Look for the next run rule\n\t\tnextMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t}\n\t// Process the remaining text\n\tif(this.pos < this.sourceLength) {\n\t\ttree.push({type: \"text\", text: this.source.substr(this.pos)});\n\t}\n\tthis.pos = this.sourceLength;\n\treturn tree;\n};\n\nWikiParser.prototype.parseInlineRunTerminated = function(terminatorRegExp,options) {\n\toptions = options || {};\n\tvar tree = [];\n\t// Find the next occurrence of the terminator\n\tterminatorRegExp.lastIndex = this.pos;\n\tvar terminatorMatch = terminatorRegExp.exec(this.source);\n\t// Find the next occurrence of a inlinerule\n\tvar inlineRuleMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t// Loop around until we've reached the end of the text\n\twhile(this.pos < this.sourceLength && (terminatorMatch || inlineRuleMatch)) {\n\t\t// Return if we've found the terminator, and it precedes any inline rule match\n\t\tif(terminatorMatch) {\n\t\t\tif(!inlineRuleMatch || inlineRuleMatch.matchIndex >= terminatorMatch.index) {\n\t\t\t\tif(terminatorMatch.index > this.pos) {\n\t\t\t\t\ttree.push({type: \"text\", text: this.source.substring(this.pos,terminatorMatch.index)});\n\t\t\t\t}\n\t\t\t\tthis.pos = terminatorMatch.index;\n\t\t\t\tif(options.eatTerminator) {\n\t\t\t\t\tthis.pos += terminatorMatch[0].length;\n\t\t\t\t}\n\t\t\t\treturn tree;\n\t\t\t}\n\t\t}\n\t\t// Process any inline rule, along with the text preceding it\n\t\tif(inlineRuleMatch) {\n\t\t\t// Preceding text\n\t\t\tif(inlineRuleMatch.matchIndex > this.pos) {\n\t\t\t\ttree.push({type: \"text\", text: this.source.substring(this.pos,inlineRuleMatch.matchIndex)});\n\t\t\t\tthis.pos = inlineRuleMatch.matchIndex;\n\t\t\t}\n\t\t\t// Process the inline rule\n\t\t\ttree.push.apply(tree,inlineRuleMatch.rule.parse());\n\t\t\t// Look for the next inline rule\n\t\t\tinlineRuleMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t\t\t// Look for the next terminator match\n\t\t\tterminatorRegExp.lastIndex = this.pos;\n\t\t\tterminatorMatch = terminatorRegExp.exec(this.source);\n\t\t}\n\t}\n\t// Process the remaining text\n\tif(this.pos < this.sourceLength) {\n\t\ttree.push({type: \"text\", text: this.source.substr(this.pos)});\n\t}\n\tthis.pos = this.sourceLength;\n\treturn tree;\n};\n\n/*\nParse zero or more class specifiers `.classname`\n*/\nWikiParser.prototype.parseClasses = function() {\n\tvar classRegExp = /\\.([^\\s\\.]+)/mg,\n\t\tclassNames = [];\n\tclassRegExp.lastIndex = this.pos;\n\tvar match = classRegExp.exec(this.source);\n\twhile(match && match.index === this.pos) {\n\t\tthis.pos = match.index + match[0].length;\n\t\tclassNames.push(match[1]);\n\t\tmatch = classRegExp.exec(this.source);\n\t}\n\treturn classNames;\n};\n\n/*\nAmend the rules used by this instance of the parser\n\ttype: `only` keeps just the named rules, `except` keeps all but the named rules\n\tnames: array of rule names\n*/\nWikiParser.prototype.amendRules = function(type,names) {\n\tnames = names || [];\n\t// Define the filter function\n\tvar keepFilter;\n\tif(type === \"only\") {\n\t\tkeepFilter = function(name) {\n\t\t\treturn names.indexOf(name) !== -1;\n\t\t};\n\t} else if(type === \"except\") {\n\t\tkeepFilter = function(name) {\n\t\t\treturn names.indexOf(name) === -1;\n\t\t};\n\t} else {\n\t\treturn;\n\t}\n\t// Define a function to process each of our rule arrays\n\tvar processRuleArray = function(ruleArray) {\n\t\tfor(var t=ruleArray.length-1; t>=0; t--) {\n\t\t\tif(!keepFilter(ruleArray[t].rule.name)) {\n\t\t\t\truleArray.splice(t,1);\n\t\t\t}\n\t\t}\n\t};\n\t// Process each rule array\n\tprocessRuleArray(this.pragmaRules);\n\tprocessRuleArray(this.blockRules);\n\tprocessRuleArray(this.inlineRules);\n};\n\nexports[\"text/vnd.tiddlywiki\"] = WikiParser;\n\n})();\n\n",
            "title": "$:/core/modules/parsers/wikiparser/wikiparser.js",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/wikiparser/rules/wikirulebase.js": {
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/wikirulebase.js\ntype: application/javascript\nmodule-type: global\n\nBase class for wiki parser rules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nThis constructor is always overridden with a blank constructor, and so shouldn't be used\n*/\nvar WikiRuleBase = function() {\n};\n\n/*\nTo be overridden by individual rules\n*/\nWikiRuleBase.prototype.init = function(parser) {\n\tthis.parser = parser;\n};\n\n/*\nDefault implementation of findNextMatch uses RegExp matching\n*/\nWikiRuleBase.prototype.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\treturn this.match ? this.match.index : undefined;\n};\n\nexports.WikiRuleBase = WikiRuleBase;\n\n})();\n",
            "title": "$:/core/modules/parsers/wikiparser/rules/wikirulebase.js",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/pluginswitcher.js": {
            "text": "/*\\\ntitle: $:/core/modules/pluginswitcher.js\ntype: application/javascript\nmodule-type: global\n\nManages switching plugins for themes and languages.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\noptions:\nwiki: wiki store to be used\npluginType: type of plugin to be switched\ncontrollerTitle: title of tiddler used to control switching of this resource\ndefaultPlugins: array of default plugins to be used if nominated plugin isn't found\nonSwitch: callback when plugin is switched (single parameter is array of plugin titles)\n*/\nfunction PluginSwitcher(options) {\n\tthis.wiki = options.wiki;\n\tthis.pluginType = options.pluginType;\n\tthis.controllerTitle = options.controllerTitle;\n\tthis.defaultPlugins = options.defaultPlugins || [];\n\tthis.onSwitch = options.onSwitch;\n\t// Switch to the current plugin\n\tthis.switchPlugins();\n\t// Listen for changes to the selected plugin\n\tvar self = this;\n\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,self.controllerTitle)) {\n\t\t\tself.switchPlugins();\n\t\t}\n\t});\n}\n\nPluginSwitcher.prototype.switchPlugins = function() {\n\t// Get the name of the current theme\n\tvar selectedPluginTitle = this.wiki.getTiddlerText(this.controllerTitle);\n\t// If it doesn't exist, then fallback to one of the default themes\n\tvar index = 0;\n\twhile(!this.wiki.getTiddler(selectedPluginTitle) && index < this.defaultPlugins.length) {\n\t\tselectedPluginTitle = this.defaultPlugins[index++];\n\t}\n\t// Accumulate the titles of the plugins that we need to load\n\tvar plugins = [],\n\t\tself = this,\n\t\taccumulatePlugin = function(title) {\n\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\tif(tiddler && tiddler.isPlugin() && plugins.indexOf(title) === -1) {\n\t\t\t\tplugins.push(title);\n\t\t\t\tvar pluginInfo = JSON.parse(self.wiki.getTiddlerText(title)),\n\t\t\t\t\tdependents = $tw.utils.parseStringArray(tiddler.fields.dependents || \"\");\n\t\t\t\t$tw.utils.each(dependents,function(title) {\n\t\t\t\t\taccumulatePlugin(title);\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\taccumulatePlugin(selectedPluginTitle);\n\t// Unregister any existing theme tiddlers\n\tvar unregisteredTiddlers = $tw.wiki.unregisterPluginTiddlers(this.pluginType);\n\t// Register any new theme tiddlers\n\tvar registeredTiddlers = $tw.wiki.registerPluginTiddlers(this.pluginType,plugins);\n\t// Unpack the current theme tiddlers\n\t$tw.wiki.unpackPluginTiddlers();\n\t// Call the switch handler\n\tif(this.onSwitch) {\n\t\tthis.onSwitch(plugins);\n\t}\n};\n\nexports.PluginSwitcher = PluginSwitcher;\n\n})();\n",
            "title": "$:/core/modules/pluginswitcher.js",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/saver-handler.js": {
            "text": "/*\\\ntitle: $:/core/modules/saver-handler.js\ntype: application/javascript\nmodule-type: global\n\nThe saver handler tracks changes to the store and handles saving the entire wiki via saver modules.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInstantiate the saver handler with the following options:\nwiki: wiki to be synced\ndirtyTracking: true if dirty tracking should be performed\n*/\nfunction SaverHandler(options) {\n\tvar self = this;\n\tthis.wiki = options.wiki;\n\tthis.dirtyTracking = options.dirtyTracking;\n\tthis.pendingAutoSave = false;\n\t// Make a logger\n\tthis.logger = new $tw.utils.Logger(\"saver-handler\");\n\t// Initialise our savers\n\tif($tw.browser) {\n\t\tthis.initSavers();\n\t}\n\t// Only do dirty tracking if required\n\tif($tw.browser && this.dirtyTracking) {\n\t\t// Compile the dirty tiddler filter\n\t\tthis.filterFn = this.wiki.compileFilter(this.wiki.getTiddlerText(this.titleSyncFilter));\n\t\t// Count of changes that have not yet been saved\n\t\tthis.numChanges = 0;\n\t\t// Listen out for changes to tiddlers\n\t\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\t\t// Filter the changes so that we only count changes to tiddlers that we care about\n\t\t\tvar filteredChanges = self.filterFn.call(self.wiki,function(iterator) {\n\t\t\t\t$tw.utils.each(changes,function(change,title) {\n\t\t\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\t\t\titerator(tiddler,title);\n\t\t\t\t});\n\t\t\t});\n\t\t\t// Adjust the number of changes\n\t\t\tself.numChanges += filteredChanges.length;\n\t\t\tself.updateDirtyStatus();\n\t\t\t// Do any autosave if one is pending and there's no more change events\n\t\t\tif(self.pendingAutoSave && self.wiki.getSizeOfTiddlerEventQueue() === 0) {\n\t\t\t\t// Check if we're dirty\n\t\t\t\tif(self.numChanges > 0) {\n\t\t\t\t\tself.saveWiki({\n\t\t\t\t\t\tmethod: \"autosave\",\n\t\t\t\t\t\tdownloadType: \"text/plain\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tself.pendingAutoSave = false;\n\t\t\t}\n\t\t});\n\t\t// Listen for the autosave event\n\t\t$tw.rootWidget.addEventListener(\"tm-auto-save-wiki\",function(event) {\n\t\t\t// Do the autosave unless there are outstanding tiddler change events\n\t\t\tif(self.wiki.getSizeOfTiddlerEventQueue() === 0) {\n\t\t\t\t// Check if we're dirty\n\t\t\t\tif(self.numChanges > 0) {\n\t\t\t\t\tself.saveWiki({\n\t\t\t\t\t\tmethod: \"autosave\",\n\t\t\t\t\t\tdownloadType: \"text/plain\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Otherwise put ourselves in the \"pending autosave\" state and wait for the change event before we do the autosave\n\t\t\t\tself.pendingAutoSave = true;\n\t\t\t}\n\t\t});\n\t\t// Set up our beforeunload handler\n\t\t$tw.addUnloadTask(function(event) {\n\t\t\tvar confirmationMessage;\n\t\t\tif(self.isDirty()) {\n\t\t\t\tconfirmationMessage = $tw.language.getString(\"UnsavedChangesWarning\");\n\t\t\t\tevent.returnValue = confirmationMessage; // Gecko\n\t\t\t}\n\t\t\treturn confirmationMessage;\n\t\t});\n\t}\n\t// Install the save action handlers\n\tif($tw.browser) {\n\t\t$tw.rootWidget.addEventListener(\"tm-save-wiki\",function(event) {\n\t\t\tself.saveWiki({\n\t\t\t\ttemplate: event.param,\n\t\t\t\tdownloadType: \"text/plain\",\n\t\t\t\tvariables: event.paramObject\n\t\t\t});\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-download-file\",function(event) {\n\t\t\tself.saveWiki({\n\t\t\t\tmethod: \"download\",\n\t\t\t\ttemplate: event.param,\n\t\t\t\tdownloadType: \"text/plain\",\n\t\t\t\tvariables: event.paramObject\n\t\t\t});\n\t\t});\n\t}\n}\n\nSaverHandler.prototype.titleSyncFilter = \"$:/config/SaverFilter\";\nSaverHandler.prototype.titleAutoSave = \"$:/config/AutoSave\";\nSaverHandler.prototype.titleSavedNotification = \"$:/language/Notifications/Save/Done\";\n\n/*\nSelect the appropriate saver modules and set them up\n*/\nSaverHandler.prototype.initSavers = function(moduleType) {\n\tmoduleType = moduleType || \"saver\";\n\t// Instantiate the available savers\n\tthis.savers = [];\n\tvar self = this;\n\t$tw.modules.forEachModuleOfType(moduleType,function(title,module) {\n\t\tif(module.canSave(self)) {\n\t\t\tself.savers.push(module.create(self.wiki));\n\t\t}\n\t});\n\t// Sort the savers into priority order\n\tthis.savers.sort(function(a,b) {\n\t\tif(a.info.priority < b.info.priority) {\n\t\t\treturn -1;\n\t\t} else {\n\t\t\tif(a.info.priority > b.info.priority) {\n\t\t\t\treturn +1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nSave the wiki contents. Options are:\n\tmethod: \"save\", \"autosave\" or \"download\"\n\ttemplate: the tiddler containing the template to save\n\tdownloadType: the content type for the saved file\n*/\nSaverHandler.prototype.saveWiki = function(options) {\n\toptions = options || {};\n\tvar self = this,\n\t\tmethod = options.method || \"save\",\n\t\tvariables = options.variables || {},\n\t\ttemplate = options.template || \"$:/core/save/all\",\n\t\tdownloadType = options.downloadType || \"text/plain\",\n\t\ttext = this.wiki.renderTiddler(downloadType,template,options),\n\t\tcallback = function(err) {\n\t\t\tif(err) {\n\t\t\t\talert($tw.language.getString(\"Error/WhileSaving\") + \":\\n\\n\" + err);\n\t\t\t} else {\n\t\t\t\t// Clear the task queue if we're saving (rather than downloading)\n\t\t\t\tif(method !== \"download\") {\n\t\t\t\t\tself.numChanges = 0;\n\t\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t}\n\t\t\t\t$tw.notifier.display(self.titleSavedNotification);\n\t\t\t\tif(options.callback) {\n\t\t\t\t\toptions.callback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t// Ignore autosave if disabled\n\tif(method === \"autosave\" && this.wiki.getTiddlerText(this.titleAutoSave,\"yes\") !== \"yes\") {\n\t\treturn false;\n\t}\n\t// Call the highest priority saver that supports this method\n\tfor(var t=this.savers.length-1; t>=0; t--) {\n\t\tvar saver = this.savers[t];\n\t\tif(saver.info.capabilities.indexOf(method) !== -1 && saver.save(text,method,callback,{variables: {filename: variables.filename}})) {\n\t\t\tthis.logger.log(\"Saving wiki with method\",method,\"through saver\",saver.info.name);\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/*\nChecks whether the wiki is dirty (ie the window shouldn't be closed)\n*/\nSaverHandler.prototype.isDirty = function() {\n\treturn this.numChanges > 0;\n};\n\n/*\nUpdate the document body with the class \"tc-dirty\" if the wiki has unsaved/unsynced changes\n*/\nSaverHandler.prototype.updateDirtyStatus = function() {\n\tif($tw.browser) {\n\t\t$tw.utils.toggleClass(document.body,\"tc-dirty\",this.isDirty());\n\t}\n};\n\nexports.SaverHandler = SaverHandler;\n\n})();\n",
            "title": "$:/core/modules/saver-handler.js",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/savers/andtidwiki.js": {
            "text": "/*\\\ntitle: $:/core/modules/savers/andtidwiki.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the AndTidWiki Android app\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar AndTidWiki = function(wiki) {\n};\n\nAndTidWiki.prototype.save = function(text,method,callback) {\n\t// Get the pathname of this document\n\tvar pathname = decodeURIComponent(document.location.toString().split(\"#\")[0]);\n\t// Strip the file://\n\tif(pathname.indexOf(\"file://\") === 0) {\n\t\tpathname = pathname.substr(7);\n\t}\n\t// Strip any query or location part\n\tvar p = pathname.indexOf(\"?\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\tp = pathname.indexOf(\"#\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\t// Save the file\n\twindow.twi.saveFile(pathname,text);\n\t// Call the callback\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nAndTidWiki.prototype.info = {\n\tname: \"andtidwiki\",\n\tpriority: 1600,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.twi && !!window.twi.saveFile;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new AndTidWiki(wiki);\n};\n\n})();\n",
            "title": "$:/core/modules/savers/andtidwiki.js",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/beaker.js": {
            "text": "/*\\\ntitle: $:/core/modules/savers/beaker.js\ntype: application/javascript\nmodule-type: saver\n\nSaves files using the Beaker browser's (https://beakerbrowser.com) Dat protocol (https://datproject.org/)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSet up the saver\n*/\nvar BeakerSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nBeakerSaver.prototype.save = function(text,method,callback) {\n\tvar url = (location.toString()).split(\"#\")[0];\n\tdat.stat(url).then(function(value) {\n\t\tif(value.type === \"directory\") {\n\t\t\turl = url + \"/index.html\";\n\t\t}\n\t\tdat.writeFile(url,text,\"utf8\").then(function(value) {\n\t\t\tcallback(null);\n\t\t},function(reason) {\n\t\t\tcallback(\"Beaker Saver Write Error: \" + reason);\n\t\t});\t\t\n\t},function(reason) {\n\t\tcallback(\"Beaker Saver Stat Error: \" + reason);\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nBeakerSaver.prototype.info = {\n\tname: \"beaker\",\n\tpriority: 3000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.dat;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new BeakerSaver(wiki);\n};\n\n})();\n",
            "title": "$:/core/modules/savers/beaker.js",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/download.js": {
            "text": "/*\\\ntitle: $:/core/modules/savers/download.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via HTML5's download APIs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar DownloadSaver = function(wiki) {\n};\n\nDownloadSaver.prototype.save = function(text,method,callback,options) {\n\toptions = options || {};\n\t// Get the current filename\n\tvar filename = options.variables.filename;\n\tif(!filename) {\n\t\tvar p = document.location.pathname.lastIndexOf(\"/\");\n\t\tif(p !== -1) {\n\t\t\tfilename = document.location.pathname.substr(p+1);\n\t\t}\n\t}\n\tif(!filename) {\n\t\tfilename = \"tiddlywiki.html\";\n\t}\n\t// Set up the link\n\tvar link = document.createElement(\"a\");\n\tif(Blob !== undefined) {\n\t\tvar blob = new Blob([text], {type: \"text/html\"});\n\t\tlink.setAttribute(\"href\", URL.createObjectURL(blob));\n\t} else {\n\t\tlink.setAttribute(\"href\",\"data:text/html,\" + encodeURIComponent(text));\n\t}\n\tlink.setAttribute(\"download\",filename);\n\tdocument.body.appendChild(link);\n\tlink.click();\n\tdocument.body.removeChild(link);\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nDownloadSaver.prototype.info = {\n\tname: \"download\",\n\tpriority: 100\n};\n\nObject.defineProperty(DownloadSaver.prototype.info, \"capabilities\", {\n\tget: function() {\n\t\tvar capabilities = [\"save\", \"download\"];\n\t\tif(($tw.wiki.getTextReference(\"$:/config/DownloadSaver/AutoSave\") || \"\").toLowerCase() === \"yes\") {\n\t\t\tcapabilities.push(\"autosave\");\n\t\t}\n\t\treturn capabilities;\n\t}\n});\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn document.createElement(\"a\").download !== undefined;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new DownloadSaver(wiki);\n};\n\n})();\n",
            "title": "$:/core/modules/savers/download.js",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/fsosaver.js": {
            "text": "/*\\\ntitle: $:/core/modules/savers/fsosaver.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via MS FileSystemObject ActiveXObject\n\nNote: Since TiddlyWiki's markup contains the MOTW, the FileSystemObject normally won't be available. \nHowever, if the wiki is loaded as an .HTA file (Windows HTML Applications) then the FSO can be used.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar FSOSaver = function(wiki) {\n};\n\nFSOSaver.prototype.save = function(text,method,callback) {\n\t// Get the pathname of this document\n\tvar pathname = unescape(document.location.pathname);\n\t// Test for a Windows path of the form /x:\\blah...\n\tif(/^\\/[A-Z]\\:\\\\[^\\\\]+/i.test(pathname)) {\t// ie: ^/[a-z]:/[^/]+\n\t\t// Remove the leading slash\n\t\tpathname = pathname.substr(1);\n\t} else if(document.location.hostname !== \"\" && /^\\/\\\\[^\\\\]+\\\\[^\\\\]+/i.test(pathname)) {\t// test for \\\\server\\share\\blah... - ^/[^/]+/[^/]+\n\t\t// Remove the leading slash\n\t\tpathname = pathname.substr(1);\n\t\t// reconstruct UNC path\n\t\tpathname = \"\\\\\\\\\" + document.location.hostname + pathname;\n\t} else {\n\t\treturn false;\n\t}\n\t// Save the file (as UTF-16)\n\tvar fso = new ActiveXObject(\"Scripting.FileSystemObject\");\n\tvar file = fso.OpenTextFile(pathname,2,-1,-1);\n\tfile.Write(text);\n\tfile.Close();\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nFSOSaver.prototype.info = {\n\tname: \"FSOSaver\",\n\tpriority: 120,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\ttry {\n\t\treturn (window.location.protocol === \"file:\") && !!(new ActiveXObject(\"Scripting.FileSystemObject\"));\n\t} catch(e) { return false; }\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new FSOSaver(wiki);\n};\n\n})();\n",
            "title": "$:/core/modules/savers/fsosaver.js",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/manualdownload.js": {
            "text": "/*\\\ntitle: $:/core/modules/savers/manualdownload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via HTML5's download APIs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Title of the tiddler containing the download message\nvar downloadInstructionsTitle = \"$:/language/Modals/Download\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar ManualDownloadSaver = function(wiki) {\n};\n\nManualDownloadSaver.prototype.save = function(text,method,callback) {\n\t$tw.modal.display(downloadInstructionsTitle,{\n\t\tdownloadLink: \"data:text/html,\" + encodeURIComponent(text)\n\t});\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nManualDownloadSaver.prototype.info = {\n\tname: \"manualdownload\",\n\tpriority: 0,\n\tcapabilities: [\"save\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new ManualDownloadSaver(wiki);\n};\n\n})();\n",
            "title": "$:/core/modules/savers/manualdownload.js",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/msdownload.js": {
            "text": "/*\\\ntitle: $:/core/modules/savers/msdownload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via window.navigator.msSaveBlob()\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar MsDownloadSaver = function(wiki) {\n};\n\nMsDownloadSaver.prototype.save = function(text,method,callback) {\n\t// Get the current filename\n\tvar filename = \"tiddlywiki.html\",\n\t\tp = document.location.pathname.lastIndexOf(\"/\");\n\tif(p !== -1) {\n\t\tfilename = document.location.pathname.substr(p+1);\n\t}\n\t// Set up the link\n\tvar blob = new Blob([text], {type: \"text/html\"});\n\twindow.navigator.msSaveBlob(blob,filename);\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nMsDownloadSaver.prototype.info = {\n\tname: \"msdownload\",\n\tpriority: 110,\n\tcapabilities: [\"save\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.navigator.msSaveBlob;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new MsDownloadSaver(wiki);\n};\n\n})();\n",
            "title": "$:/core/modules/savers/msdownload.js",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/put.js": {
            "text": "/*\\\ntitle: $:/core/modules/savers/put.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by performing a PUT request to the server\n\nWorks with any server which accepts a PUT request\nto the current URL, such as a WebDAV server.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar PutSaver = function(wiki) {\n\tthis.wiki = wiki;\n\tvar self = this;\n\tvar uri = this.uri();\n\t// Async server probe. Until probe finishes, save will fail fast\n\t// See also https://github.com/Jermolene/TiddlyWiki5/issues/2276\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"OPTIONS\",\n\t\tcallback: function(err, data, xhr) {\n\t\t\t// Check DAV header http://www.webdav.org/specs/rfc2518.html#rfc.section.9.1\n\t\t\tif(!err) {\n\t\t\t\tself.serverAcceptsPuts = xhr.status === 200 && !!xhr.getResponseHeader(\"dav\");\n\t\t\t}\n\t\t}\n\t});\n\t// Retrieve ETag if available\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"HEAD\",\n\t\tcallback: function(err, data, xhr) {\n\t\t\tif(!err) {\n\t\t\t\tself.etag = xhr.getResponseHeader(\"ETag\");\n\t\t\t}\n\t\t}\n\t});\n};\n\nPutSaver.prototype.uri = function() {\n\treturn encodeURI(document.location.toString().split(\"#\")[0]);\n};\n\n// TODO: in case of edit conflict\n// Prompt: Do you want to save over this? Y/N\n// Merging would be ideal, and may be possible using future generic merge flow\nPutSaver.prototype.save = function(text, method, callback) {\n\tif(!this.serverAcceptsPuts) {\n\t\treturn false;\n\t}\n\tvar self = this;\n\tvar headers = { \"Content-Type\": \"text/html;charset=UTF-8\" };\n\tif(this.etag) {\n\t\theaders[\"If-Match\"] = this.etag;\n\t}\n\t$tw.utils.httpRequest({\n\t\turl: this.uri(),\n\t\ttype: \"PUT\",\n\t\theaders: headers,\n\t\tdata: text,\n\t\tcallback: function(err, data, xhr) {\n\t\t\tif(err) {\n\t\t\t\tcallback(err);\n\t\t\t} if(xhr.status === 200 || xhr.status === 201) {\n\t\t\t\tself.etag = xhr.getResponseHeader(\"ETag\");\n\t\t\t\tcallback(null); // success\n\t\t\t} else if(xhr.status === 412) { // edit conflict\n\t\t\t\tvar message = $tw.language.getString(\"Error/EditConflict\");\n\t\t\t\tcallback(message);\n\t\t\t} else {\n\t\t\t\tcallback(xhr.responseText); // fail\n\t\t\t}\n\t\t}\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nPutSaver.prototype.info = {\n\tname: \"put\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn /^https?:/.test(location.protocol);\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new PutSaver(wiki);\n};\n\n})();\n",
            "title": "$:/core/modules/savers/put.js",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/tiddlyfox.js": {
            "text": "/*\\\ntitle: $:/core/modules/savers/tiddlyfox.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the TiddlyFox file extension\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar TiddlyFoxSaver = function(wiki) {\n};\n\nTiddlyFoxSaver.prototype.save = function(text,method,callback) {\n\tvar messageBox = document.getElementById(\"tiddlyfox-message-box\");\n\tif(messageBox) {\n\t\t// Get the pathname of this document\n\t\tvar pathname = document.location.toString().split(\"#\")[0];\n\t\t// Replace file://localhost/ with file:///\n\t\tif(pathname.indexOf(\"file://localhost/\") === 0) {\n\t\t\tpathname = \"file://\" + pathname.substr(16);\n\t\t}\n\t\t// Windows path file:///x:/blah/blah --> x:\\blah\\blah\n\t\tif(/^file\\:\\/\\/\\/[A-Z]\\:\\//i.test(pathname)) {\n\t\t\t// Remove the leading slash and convert slashes to backslashes\n\t\t\tpathname = pathname.substr(8).replace(/\\//g,\"\\\\\");\n\t\t// Firefox Windows network path file://///server/share/blah/blah --> //server/share/blah/blah\n\t\t} else if(pathname.indexOf(\"file://///\") === 0) {\n\t\t\tpathname = \"\\\\\\\\\" + unescape(pathname.substr(10)).replace(/\\//g,\"\\\\\");\n\t\t// Mac/Unix local path file:///path/path --> /path/path\n\t\t} else if(pathname.indexOf(\"file:///\") === 0) {\n\t\t\tpathname = unescape(pathname.substr(7));\n\t\t// Mac/Unix local path file:/path/path --> /path/path\n\t\t} else if(pathname.indexOf(\"file:/\") === 0) {\n\t\t\tpathname = unescape(pathname.substr(5));\n\t\t// Otherwise Windows networth path file://server/share/path/path --> \\\\server\\share\\path\\path\n\t\t} else {\n\t\t\tpathname = \"\\\\\\\\\" + unescape(pathname.substr(7)).replace(new RegExp(\"/\",\"g\"),\"\\\\\");\n\t\t}\n\t\t// Create the message element and put it in the message box\n\t\tvar message = document.createElement(\"div\");\n\t\tmessage.setAttribute(\"data-tiddlyfox-path\",decodeURIComponent(pathname));\n\t\tmessage.setAttribute(\"data-tiddlyfox-content\",text);\n\t\tmessageBox.appendChild(message);\n\t\t// Add an event handler for when the file has been saved\n\t\tmessage.addEventListener(\"tiddlyfox-have-saved-file\",function(event) {\n\t\t\tcallback(null);\n\t\t}, false);\n\t\t// Create and dispatch the custom event to the extension\n\t\tvar event = document.createEvent(\"Events\");\n\t\tevent.initEvent(\"tiddlyfox-save-file\",true,false);\n\t\tmessage.dispatchEvent(event);\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nInformation about this saver\n*/\nTiddlyFoxSaver.prototype.info = {\n\tname: \"tiddlyfox\",\n\tpriority: 1500,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TiddlyFoxSaver(wiki);\n};\n\n})();\n",
            "title": "$:/core/modules/savers/tiddlyfox.js",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/tiddlyie.js": {
            "text": "/*\\\ntitle: $:/core/modules/savers/tiddlyie.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via Internet Explorer BHO extenion (TiddlyIE)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar TiddlyIESaver = function(wiki) {\n};\n\nTiddlyIESaver.prototype.save = function(text,method,callback) {\n\t// Check existence of TiddlyIE BHO extension (note: only works after document is complete)\n\tif(typeof(window.TiddlyIE) != \"undefined\") {\n\t\t// Get the pathname of this document\n\t\tvar pathname = unescape(document.location.pathname);\n\t\t// Test for a Windows path of the form /x:/blah...\n\t\tif(/^\\/[A-Z]\\:\\/[^\\/]+/i.test(pathname)) {\t// ie: ^/[a-z]:/[^/]+ (is this better?: ^/[a-z]:/[^/]+(/[^/]+)*\\.[^/]+ )\n\t\t\t// Remove the leading slash\n\t\t\tpathname = pathname.substr(1);\n\t\t\t// Convert slashes to backslashes\n\t\t\tpathname = pathname.replace(/\\//g,\"\\\\\");\n\t\t} else if(document.hostname !== \"\" && /^\\/[^\\/]+\\/[^\\/]+/i.test(pathname)) {\t// test for \\\\server\\share\\blah... - ^/[^/]+/[^/]+\n\t\t\t// Convert slashes to backslashes\n\t\t\tpathname = pathname.replace(/\\//g,\"\\\\\");\n\t\t\t// reconstruct UNC path\n\t\t\tpathname = \"\\\\\\\\\" + document.location.hostname + pathname;\n\t\t} else return false;\n\t\t// Prompt the user to save the file\n\t\twindow.TiddlyIE.save(pathname, text);\n\t\t// Callback that we succeeded\n\t\tcallback(null);\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nInformation about this saver\n*/\nTiddlyIESaver.prototype.info = {\n\tname: \"tiddlyiesaver\",\n\tpriority: 1500,\n\tcapabilities: [\"save\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn (window.location.protocol === \"file:\");\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TiddlyIESaver(wiki);\n};\n\n})();\n",
            "title": "$:/core/modules/savers/tiddlyie.js",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/twedit.js": {
            "text": "/*\\\ntitle: $:/core/modules/savers/twedit.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the TWEdit iOS app\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar TWEditSaver = function(wiki) {\n};\n\nTWEditSaver.prototype.save = function(text,method,callback) {\n\t// Bail if we're not running under TWEdit\n\tif(typeof DeviceInfo !== \"object\") {\n\t\treturn false;\n\t}\n\t// Get the pathname of this document\n\tvar pathname = decodeURIComponent(document.location.pathname);\n\t// Strip any query or location part\n\tvar p = pathname.indexOf(\"?\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\tp = pathname.indexOf(\"#\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\t// Remove the leading \"/Documents\" from path\n\tvar prefix = \"/Documents\";\n\tif(pathname.indexOf(prefix) === 0) {\n\t\tpathname = pathname.substr(prefix.length);\n\t}\n\t// Error handler\n\tvar errorHandler = function(event) {\n\t\t// Error\n\t\tcallback($tw.language.getString(\"Error/SavingToTWEdit\") + \": \" + event.target.error.code);\n\t};\n\t// Get the file system\n\twindow.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(fileSystem) {\n\t\t// Now we've got the filesystem, get the fileEntry\n\t\tfileSystem.root.getFile(pathname, {create: true}, function(fileEntry) {\n\t\t\t// Now we've got the fileEntry, create the writer\n\t\t\tfileEntry.createWriter(function(writer) {\n\t\t\t\twriter.onerror = errorHandler;\n\t\t\t\twriter.onwrite = function() {\n\t\t\t\t\tcallback(null);\n\t\t\t\t};\n\t\t\t\twriter.position = 0;\n\t\t\t\twriter.write(text);\n\t\t\t},errorHandler);\n\t\t}, errorHandler);\n\t}, errorHandler);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nTWEditSaver.prototype.info = {\n\tname: \"twedit\",\n\tpriority: 1600,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TWEditSaver(wiki);\n};\n\n/////////////////////////// Hack\n// HACK: This ensures that TWEdit recognises us as a TiddlyWiki document\nif($tw.browser) {\n\twindow.version = {title: \"TiddlyWiki\"};\n}\n\n})();\n",
            "title": "$:/core/modules/savers/twedit.js",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/upload.js": {
            "text": "/*\\\ntitle: $:/core/modules/savers/upload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via upload to a server.\n\nDesigned to be compatible with BidiX's UploadPlugin at http://tiddlywiki.bidix.info/#UploadPlugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar UploadSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nUploadSaver.prototype.save = function(text,method,callback) {\n\t// Get the various parameters we need\n\tvar backupDir = this.wiki.getTextReference(\"$:/UploadBackupDir\") || \".\",\n\t\tusername = this.wiki.getTextReference(\"$:/UploadName\"),\n\t\tpassword = $tw.utils.getPassword(\"upload\"),\n\t\tuploadDir = this.wiki.getTextReference(\"$:/UploadDir\") || \".\",\n\t\tuploadFilename = this.wiki.getTextReference(\"$:/UploadFilename\") || \"index.html\",\n\t\turl = this.wiki.getTextReference(\"$:/UploadURL\");\n\t// Bail out if we don't have the bits we need\n\tif(!username || username.toString().trim() === \"\" || !password || password.toString().trim() === \"\") {\n\t\treturn false;\n\t}\n\t// Construct the url if not provided\n\tif(!url) {\n\t\turl = \"http://\" + username + \".tiddlyspot.com/store.cgi\";\n\t}\n\t// Assemble the header\n\tvar boundary = \"---------------------------\" + \"AaB03x\";\t\n\tvar uploadFormName = \"UploadPlugin\";\n\tvar head = [];\n\thead.push(\"--\" + boundary + \"\\r\\nContent-disposition: form-data; name=\\\"UploadPlugin\\\"\\r\\n\");\n\thead.push(\"backupDir=\" + backupDir + \";user=\" + username + \";password=\" + password + \";uploaddir=\" + uploadDir + \";;\"); \n\thead.push(\"\\r\\n\" + \"--\" + boundary);\n\thead.push(\"Content-disposition: form-data; name=\\\"userfile\\\"; filename=\\\"\" + uploadFilename + \"\\\"\");\n\thead.push(\"Content-Type: text/html;charset=UTF-8\");\n\thead.push(\"Content-Length: \" + text.length + \"\\r\\n\");\n\thead.push(\"\");\n\t// Assemble the tail and the data itself\n\tvar tail = \"\\r\\n--\" + boundary + \"--\\r\\n\",\n\t\tdata = head.join(\"\\r\\n\") + text + tail;\n\t// Do the HTTP post\n\tvar http = new XMLHttpRequest();\n\thttp.open(\"POST\",url,true,username,password);\n\thttp.setRequestHeader(\"Content-Type\",\"multipart/form-data; charset=UTF-8; boundary=\" + boundary);\n\thttp.onreadystatechange = function() {\n\t\tif(http.readyState == 4 && http.status == 200) {\n\t\t\tif(http.responseText.substr(0,4) === \"0 - \") {\n\t\t\t\tcallback(null);\n\t\t\t} else {\n\t\t\t\tcallback(http.responseText);\n\t\t\t}\n\t\t}\n\t};\n\ttry {\n\t\thttp.send(data);\n\t} catch(ex) {\n\t\treturn callback($tw.language.getString(\"Error/Caption\") + \":\" + ex);\n\t}\n\t$tw.notifier.display(\"$:/language/Notifications/Save/Starting\");\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nUploadSaver.prototype.info = {\n\tname: \"upload\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new UploadSaver(wiki);\n};\n\n})();\n",
            "title": "$:/core/modules/savers/upload.js",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/browser-messaging.js": {
            "text": "/*\\\ntitle: $:/core/modules/browser-messaging.js\ntype: application/javascript\nmodule-type: startup\n\nBrowser message handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"browser-messaging\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n/*\nLoad a specified url as an iframe and call the callback when it is loaded. If the url is already loaded then the existing iframe instance is used\n*/\nfunction loadIFrame(url,callback) {\n\t// Check if iframe already exists\n\tvar iframeInfo = $tw.browserMessaging.iframeInfoMap[url];\n\tif(iframeInfo) {\n\t\t// We've already got the iframe\n\t\tcallback(null,iframeInfo);\n\t} else {\n\t\t// Create the iframe and save it in the list\n\t\tvar iframe = document.createElement(\"iframe\");\n\t\tiframeInfo = {\n\t\t\turl: url,\n\t\t\tstatus: \"loading\",\n\t\t\tdomNode: iframe\n\t\t};\n\t\t$tw.browserMessaging.iframeInfoMap[url] = iframeInfo;\n\t\tsaveIFrameInfoTiddler(iframeInfo);\n\t\t// Add the iframe to the DOM and hide it\n\t\tiframe.style.display = \"none\";\n\t\tiframe.setAttribute(\"library\",\"true\");\n\t\tdocument.body.appendChild(iframe);\n\t\t// Set up onload\n\t\tiframe.onload = function() {\n\t\t\tiframeInfo.status = \"loaded\";\n\t\t\tsaveIFrameInfoTiddler(iframeInfo);\n\t\t\tcallback(null,iframeInfo);\n\t\t};\n\t\tiframe.onerror = function() {\n\t\t\tcallback(\"Cannot load iframe\");\n\t\t};\n\t\ttry {\n\t\t\tiframe.src = url;\n\t\t} catch(ex) {\n\t\t\tcallback(ex);\n\t\t}\n\t}\n}\n\n/*\nUnload library iframe for given url\n*/\nfunction unloadIFrame(url){\n\t$tw.utils.each(document.getElementsByTagName('iframe'), function(iframe) {\n\t\tif(iframe.getAttribute(\"library\") === \"true\" &&\n\t\t  iframe.getAttribute(\"src\") === url) {\n\t\t\tiframe.parentNode.removeChild(iframe);\n\t\t}\n\t});\n}\n\nfunction saveIFrameInfoTiddler(iframeInfo) {\n\t$tw.wiki.addTiddler(new $tw.Tiddler($tw.wiki.getCreationFields(),{\n\t\ttitle: \"$:/temp/ServerConnection/\" + iframeInfo.url,\n\t\ttext: iframeInfo.status,\n\t\ttags: [\"$:/tags/ServerConnection\"],\n\t\turl: iframeInfo.url\n\t},$tw.wiki.getModificationFields()));\n}\n\nexports.startup = function() {\n\t// Initialise the store of iframes we've created\n\t$tw.browserMessaging = {\n\t\tiframeInfoMap: {} // Hashmap by URL of {url:,status:\"loading/loaded\",domNode:}\n\t};\n\t// Listen for widget messages to control loading the plugin library\n\t$tw.rootWidget.addEventListener(\"tm-load-plugin-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url;\n\t\tif(url) {\n\t\t\tloadIFrame(url,function(err,iframeInfo) {\n\t\t\t\tif(err) {\n\t\t\t\t\talert($tw.language.getString(\"Error/LoadingPluginLibrary\") + \": \" + url);\n\t\t\t\t} else {\n\t\t\t\t\tiframeInfo.domNode.contentWindow.postMessage({\n\t\t\t\t\t\tverb: \"GET\",\n\t\t\t\t\t\turl: \"recipes/library/tiddlers.json\",\n\t\t\t\t\t\tcookies: {\n\t\t\t\t\t\t\ttype: \"save-info\",\n\t\t\t\t\t\t\tinfoTitlePrefix: paramObject.infoTitlePrefix || \"$:/temp/RemoteAssetInfo/\",\n\t\t\t\t\t\t\turl: url\n\t\t\t\t\t\t}\n\t\t\t\t\t},\"*\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\t// Listen for widget messages to control unloading the plugin library\n\t$tw.rootWidget.addEventListener(\"tm-unload-plugin-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url;\n\t\t$tw.browserMessaging.iframeInfoMap[url] = undefined;\n\t\tif(url) {\n\t\t\tunloadIFrame(url);\n\t\t\t$tw.utils.each(\n\t\t\t\t$tw.wiki.filterTiddlers(\"[[$:/temp/ServerConnection/\" + url + \"]] [prefix[$:/temp/RemoteAssetInfo/\" + url + \"/]]\"),\n\t\t\t\tfunction(title) {\n\t\t\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-load-plugin-from-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url,\n\t\t\ttitle = paramObject.title;\n\t\tif(url && title) {\n\t\t\tloadIFrame(url,function(err,iframeInfo) {\n\t\t\t\tif(err) {\n\t\t\t\t\talert($tw.language.getString(\"Error/LoadingPluginLibrary\") + \": \" + url);\n\t\t\t\t} else {\n\t\t\t\t\tiframeInfo.domNode.contentWindow.postMessage({\n\t\t\t\t\t\tverb: \"GET\",\n\t\t\t\t\t\turl: \"recipes/library/tiddlers/\" + encodeURIComponent(title) + \".json\",\n\t\t\t\t\t\tcookies: {\n\t\t\t\t\t\t\ttype: \"save-tiddler\",\n\t\t\t\t\t\t\turl: url\n\t\t\t\t\t\t}\n\t\t\t\t\t},\"*\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\t// Listen for window messages from other windows\n\twindow.addEventListener(\"message\",function listener(event){\n\t\tconsole.log(\"browser-messaging: \",document.location.toString())\n\t\tconsole.log(\"browser-messaging: Received message from\",event.origin);\n\t\tconsole.log(\"browser-messaging: Message content\",event.data);\n\t\tswitch(event.data.verb) {\n\t\t\tcase \"GET-RESPONSE\":\n\t\t\t\tif(event.data.status.charAt(0) === \"2\") {\n\t\t\t\t\tif(event.data.cookies) {\n\t\t\t\t\t\tif(event.data.cookies.type === \"save-info\") {\n\t\t\t\t\t\t\tvar tiddlers = JSON.parse(event.data.body);\n\t\t\t\t\t\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\t\t\t\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler($tw.wiki.getCreationFields(),tiddler,{\n\t\t\t\t\t\t\t\t\ttitle: event.data.cookies.infoTitlePrefix + event.data.cookies.url + \"/\" + tiddler.title,\n\t\t\t\t\t\t\t\t\t\"original-title\": tiddler.title,\n\t\t\t\t\t\t\t\t\ttext: \"\",\n\t\t\t\t\t\t\t\t\ttype: \"text/vnd.tiddlywiki\",\n\t\t\t\t\t\t\t\t\t\"original-type\": tiddler.type,\n\t\t\t\t\t\t\t\t\t\"plugin-type\": undefined,\n\t\t\t\t\t\t\t\t\t\"original-plugin-type\": tiddler[\"plugin-type\"],\n\t\t\t\t\t\t\t\t\t\"module-type\": undefined,\n\t\t\t\t\t\t\t\t\t\"original-module-type\": tiddler[\"module-type\"],\n\t\t\t\t\t\t\t\t\ttags: [\"$:/tags/RemoteAssetInfo\"],\n\t\t\t\t\t\t\t\t\t\"original-tags\": $tw.utils.stringifyList(tiddler.tags || []),\n\t\t\t\t\t\t\t\t\t\"server-url\": event.data.cookies.url\n\t\t\t\t\t\t\t\t},$tw.wiki.getModificationFields()));\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else if(event.data.cookies.type === \"save-tiddler\") {\n\t\t\t\t\t\t\tvar tiddler = JSON.parse(event.data.body);\n\t\t\t\t\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler(tiddler));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t},false);\n};\n\n})();\n",
            "title": "$:/core/modules/browser-messaging.js",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/commands.js": {
            "text": "/*\\\ntitle: $:/core/modules/startup/commands.js\ntype: application/javascript\nmodule-type: startup\n\nCommand processing\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"commands\";\nexports.platforms = [\"node\"];\nexports.after = [\"story\"];\nexports.synchronous = false;\n\nexports.startup = function(callback) {\n\t// On the server, start a commander with the command line arguments\n\tvar commander = new $tw.Commander(\n\t\t$tw.boot.argv,\n\t\tfunction(err) {\n\t\t\tif(err) {\n\t\t\t\treturn $tw.utils.error(\"Error: \" + err);\n\t\t\t}\n\t\t\tcallback();\n\t\t},\n\t\t$tw.wiki,\n\t\t{output: process.stdout, error: process.stderr}\n\t);\n\tcommander.execute();\n};\n\n})();\n",
            "title": "$:/core/modules/startup/commands.js",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/favicon.js": {
            "text": "/*\\\ntitle: $:/core/modules/startup/favicon.js\ntype: application/javascript\nmodule-type: startup\n\nFavicon handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"favicon\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\t\t\n// Favicon tiddler\nvar FAVICON_TITLE = \"$:/favicon.ico\";\n\nexports.startup = function() {\n\t// Set up the favicon\n\tsetFavicon();\n\t// Reset the favicon when the tiddler changes\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,FAVICON_TITLE)) {\n\t\t\tsetFavicon();\n\t\t}\n\t});\n};\n\nfunction setFavicon() {\n\tvar tiddler = $tw.wiki.getTiddler(FAVICON_TITLE);\n\tif(tiddler) {\n\t\tvar faviconLink = document.getElementById(\"faviconLink\");\n\t\tfaviconLink.setAttribute(\"href\",\"data:\" + tiddler.fields.type + \";base64,\" + tiddler.fields.text);\n\t}\n}\n\n})();\n",
            "title": "$:/core/modules/startup/favicon.js",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/info.js": {
            "text": "/*\\\ntitle: $:/core/modules/startup/info.js\ntype: application/javascript\nmodule-type: startup\n\nInitialise $:/info tiddlers via $:/temp/info-plugin pseudo-plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"info\";\nexports.before = [\"startup\"];\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\t// Collect up the info tiddlers\n\tvar infoTiddlerFields = {};\n\t// Give each info module a chance to fill in as many info tiddlers as they want\n\t$tw.modules.forEachModuleOfType(\"info\",function(title,moduleExports) {\n\t\tif(moduleExports && moduleExports.getInfoTiddlerFields) {\n\t\t\tvar tiddlerFieldsArray = moduleExports.getInfoTiddlerFields(infoTiddlerFields);\n\t\t\t$tw.utils.each(tiddlerFieldsArray,function(fields) {\n\t\t\t\tif(fields) {\n\t\t\t\t\tinfoTiddlerFields[fields.title] = fields;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\t// Bake the info tiddlers into a plugin\n\tvar fields = {\n\t\ttitle: \"$:/temp/info-plugin\",\n\t\ttype: \"application/json\",\n\t\t\"plugin-type\": \"info\",\n\t\ttext: JSON.stringify({tiddlers: infoTiddlerFields},null,$tw.config.preferences.jsonSpaces)\n\t};\n\t$tw.wiki.addTiddler(new $tw.Tiddler(fields));\n\t$tw.wiki.readPluginInfo();\n\t$tw.wiki.registerPluginTiddlers(\"info\");\n\t$tw.wiki.unpackPluginTiddlers();\n};\n\n})();\n",
            "title": "$:/core/modules/startup/info.js",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/load-modules.js": {
            "text": "/*\\\ntitle: $:/core/modules/startup/load-modules.js\ntype: application/javascript\nmodule-type: startup\n\nLoad core modules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"load-modules\";\nexports.synchronous = true;\n\nexports.startup = function() {\n\t// Load modules\n\t$tw.modules.applyMethods(\"utils\",$tw.utils);\n\tif($tw.node) {\n\t\t$tw.modules.applyMethods(\"utils-node\",$tw.utils);\n\t}\n\t$tw.modules.applyMethods(\"global\",$tw);\n\t$tw.modules.applyMethods(\"config\",$tw.config);\n\t$tw.Tiddler.fieldModules = $tw.modules.getModulesByTypeAsHashmap(\"tiddlerfield\");\n\t$tw.modules.applyMethods(\"tiddlermethod\",$tw.Tiddler.prototype);\n\t$tw.modules.applyMethods(\"wikimethod\",$tw.Wiki.prototype);\n\t$tw.modules.applyMethods(\"tiddlerdeserializer\",$tw.Wiki.tiddlerDeserializerModules);\n\t$tw.macros = $tw.modules.getModulesByTypeAsHashmap(\"macro\");\n\t$tw.wiki.initParsers();\n\t$tw.Commander.initCommands();\n};\n\n})();\n",
            "title": "$:/core/modules/startup/load-modules.js",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/password.js": {
            "text": "/*\\\ntitle: $:/core/modules/startup/password.js\ntype: application/javascript\nmodule-type: startup\n\nPassword handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"password\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\t$tw.rootWidget.addEventListener(\"tm-set-password\",function(event) {\n\t\t$tw.passwordPrompt.createPrompt({\n\t\t\tserviceName: $tw.language.getString(\"Encryption/PromptSetPassword\"),\n\t\t\tnoUserName: true,\n\t\t\tsubmitText: $tw.language.getString(\"Encryption/SetPassword\"),\n\t\t\tcanCancel: true,\n\t\t\trepeatPassword: true,\n\t\t\tcallback: function(data) {\n\t\t\t\tif(data) {\n\t\t\t\t\t$tw.crypto.setPassword(data.password);\n\t\t\t\t}\n\t\t\t\treturn true; // Get rid of the password prompt\n\t\t\t}\n\t\t});\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-clear-password\",function(event) {\n\t\tif($tw.browser) {\n\t\t\tif(!confirm($tw.language.getString(\"Encryption/ConfirmClearPassword\"))) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t$tw.crypto.setPassword(null);\n\t});\n\t// Ensure that $:/isEncrypted is maintained properly\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,\"$:/isEncrypted\")) {\n\t\t\t$tw.crypto.updateCryptoStateTiddler();\n\t\t}\n\t});\n};\n\n})();\n",
            "title": "$:/core/modules/startup/password.js",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/render.js": {
            "text": "/*\\\ntitle: $:/core/modules/startup/render.js\ntype: application/javascript\nmodule-type: startup\n\nTitle, stylesheet and page rendering\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"render\";\nexports.platforms = [\"browser\"];\nexports.after = [\"story\"];\nexports.synchronous = true;\n\n// Default story and history lists\nvar PAGE_TITLE_TITLE = \"$:/core/wiki/title\";\nvar PAGE_STYLESHEET_TITLE = \"$:/core/ui/PageStylesheet\";\nvar PAGE_TEMPLATE_TITLE = \"$:/core/ui/PageTemplate\";\n\n// Time (in ms) that we defer refreshing changes to draft tiddlers\nvar DRAFT_TIDDLER_TIMEOUT_TITLE = \"$:/config/Drafts/TypingTimeout\";\nvar DRAFT_TIDDLER_TIMEOUT = 400;\n\nexports.startup = function() {\n\t// Set up the title\n\t$tw.titleWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_TITLE_TITLE,{document: $tw.fakeDocument, parseAsInline: true});\n\t$tw.titleContainer = $tw.fakeDocument.createElement(\"div\");\n\t$tw.titleWidgetNode.render($tw.titleContainer,null);\n\tdocument.title = $tw.titleContainer.textContent;\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.titleWidgetNode.refresh(changes,$tw.titleContainer,null)) {\n\t\t\tdocument.title = $tw.titleContainer.textContent;\n\t\t}\n\t});\n\t// Set up the styles\n\t$tw.styleWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_STYLESHEET_TITLE,{document: $tw.fakeDocument});\n\t$tw.styleContainer = $tw.fakeDocument.createElement(\"style\");\n\t$tw.styleWidgetNode.render($tw.styleContainer,null);\n\t$tw.styleElement = document.createElement(\"style\");\n\t$tw.styleElement.innerHTML = $tw.styleContainer.textContent;\n\tdocument.head.insertBefore($tw.styleElement,document.head.firstChild);\n\t$tw.wiki.addEventListener(\"change\",$tw.perf.report(\"styleRefresh\",function(changes) {\n\t\tif($tw.styleWidgetNode.refresh(changes,$tw.styleContainer,null)) {\n\t\t\t$tw.styleElement.innerHTML = $tw.styleContainer.textContent;\n\t\t}\n\t}));\n\t// Display the $:/core/ui/PageTemplate tiddler to kick off the display\n\t$tw.perf.report(\"mainRender\",function() {\n\t\t$tw.pageWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_TEMPLATE_TITLE,{document: document, parentWidget: $tw.rootWidget});\n\t\t$tw.pageContainer = document.createElement(\"div\");\n\t\t$tw.utils.addClass($tw.pageContainer,\"tc-page-container-wrapper\");\n\t\tdocument.body.insertBefore($tw.pageContainer,document.body.firstChild);\n\t\t$tw.pageWidgetNode.render($tw.pageContainer,null);\n\t})();\n\t// Prepare refresh mechanism\n\tvar deferredChanges = Object.create(null),\n\t\ttimerId;\n\tfunction refresh() {\n\t\t// Process the refresh\n\t\t$tw.pageWidgetNode.refresh(deferredChanges);\n\t\tdeferredChanges = Object.create(null);\n\t}\n\t// Add the change event handler\n\t$tw.wiki.addEventListener(\"change\",$tw.perf.report(\"mainRefresh\",function(changes) {\n\t\t// Check if only drafts have changed\n\t\tvar onlyDraftsHaveChanged = true;\n\t\tfor(var title in changes) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\tif(!tiddler || !tiddler.hasField(\"draft.of\")) {\n\t\t\t\tonlyDraftsHaveChanged = false;\n\t\t\t}\n\t\t}\n\t\t// Defer the change if only drafts have changed\n\t\tif(timerId) {\n\t\t\tclearTimeout(timerId);\n\t\t}\n\t\ttimerId = null;\n\t\tif(onlyDraftsHaveChanged) {\n\t\t\tvar timeout = parseInt($tw.wiki.getTiddlerText(DRAFT_TIDDLER_TIMEOUT_TITLE,\"\"),10);\n\t\t\tif(isNaN(timeout)) {\n\t\t\t\ttimeout = DRAFT_TIDDLER_TIMEOUT;\n\t\t\t}\n\t\t\ttimerId = setTimeout(refresh,timeout);\n\t\t\t$tw.utils.extend(deferredChanges,changes);\n\t\t} else {\n\t\t\t$tw.utils.extend(deferredChanges,changes);\n\t\t\trefresh();\n\t\t}\n\t}));\n\t// Fix up the link between the root widget and the page container\n\t$tw.rootWidget.domNodes = [$tw.pageContainer];\n\t$tw.rootWidget.children = [$tw.pageWidgetNode];\n};\n\n})();\n",
            "title": "$:/core/modules/startup/render.js",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/rootwidget.js": {
            "text": "/*\\\ntitle: $:/core/modules/startup/rootwidget.js\ntype: application/javascript\nmodule-type: startup\n\nSetup the root widget and the core root widget handlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"rootwidget\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.before = [\"story\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\t// Install the modal message mechanism\n\t$tw.modal = new $tw.utils.Modal($tw.wiki);\n\t$tw.rootWidget.addEventListener(\"tm-modal\",function(event) {\n\t\t$tw.modal.display(event.param,{variables: event.paramObject});\n\t});\n\t// Install the notification  mechanism\n\t$tw.notifier = new $tw.utils.Notifier($tw.wiki);\n\t$tw.rootWidget.addEventListener(\"tm-notify\",function(event) {\n\t\t$tw.notifier.display(event.param,{variables: event.paramObject});\n\t});\n\t// Install the scroller\n\t$tw.pageScroller = new $tw.utils.PageScroller();\n\t$tw.rootWidget.addEventListener(\"tm-scroll\",function(event) {\n\t\t$tw.pageScroller.handleEvent(event);\n\t});\n\tvar fullscreen = $tw.utils.getFullScreenApis();\n\tif(fullscreen) {\n\t\t$tw.rootWidget.addEventListener(\"tm-full-screen\",function(event) {\n\t\t\tif(document[fullscreen._fullscreenElement]) {\n\t\t\t\tdocument[fullscreen._exitFullscreen]();\n\t\t\t} else {\n\t\t\t\tdocument.documentElement[fullscreen._requestFullscreen](Element.ALLOW_KEYBOARD_INPUT);\n\t\t\t}\n\t\t});\n\t}\n\t// If we're being viewed on a data: URI then give instructions for how to save\n\tif(document.location.protocol === \"data:\") {\n\t\t$tw.rootWidget.dispatchEvent({\n\t\t\ttype: \"tm-modal\",\n\t\t\tparam: \"$:/language/Modals/SaveInstructions\"\n\t\t});\n\t}\n};\n\n})();\n",
            "title": "$:/core/modules/startup/rootwidget.js",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup.js": {
            "text": "/*\\\ntitle: $:/core/modules/startup.js\ntype: application/javascript\nmodule-type: startup\n\nMiscellaneous startup logic for both the client and server.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"startup\";\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\n// Set to `true` to enable performance instrumentation\nvar PERFORMANCE_INSTRUMENTATION_CONFIG_TITLE = \"$:/config/Performance/Instrumentation\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.startup = function() {\n\tvar modules,n,m,f;\n\t// Minimal browser detection\n\tif($tw.browser) {\n\t\t$tw.browser.isIE = (/msie|trident/i.test(navigator.userAgent));\n\t\t$tw.browser.isFirefox = !!document.mozFullScreenEnabled;\n\t}\n\t// Platform detection\n\t$tw.platform = {};\n\tif($tw.browser) {\n\t\t$tw.platform.isMac = /Mac/.test(navigator.platform);\n\t\t$tw.platform.isWindows = /win/i.test(navigator.platform);\n\t\t$tw.platform.isLinux = /Linux/i.test(navigator.appVersion);\n\t} else {\n\t\tswitch(require(\"os\").platform()) {\n\t\t\tcase \"darwin\":\n\t\t\t\t$tw.platform.isMac = true;\n\t\t\t\tbreak;\n\t\t\tcase \"win32\":\n\t\t\t\t$tw.platform.isWindows = true;\n\t\t\t\tbreak;\n\t\t\tcase \"freebsd\":\n\t\t\t\t$tw.platform.isLinux = true;\n\t\t\t\tbreak;\n\t\t\tcase \"linux\":\n\t\t\t\t$tw.platform.isLinux = true;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\t// Initialise version\n\t$tw.version = $tw.utils.extractVersionInfo();\n\t// Set up the performance framework\n\t$tw.perf = new $tw.Performance($tw.wiki.getTiddlerText(PERFORMANCE_INSTRUMENTATION_CONFIG_TITLE,\"no\") === \"yes\");\n\t// Kick off the language manager and switcher\n\t$tw.language = new $tw.Language();\n\t$tw.languageSwitcher = new $tw.PluginSwitcher({\n\t\twiki: $tw.wiki,\n\t\tpluginType: \"language\",\n\t\tcontrollerTitle: \"$:/language\",\n\t\tdefaultPlugins: [\n\t\t\t\"$:/languages/en-US\"\n\t\t],\n\t\tonSwitch: function(plugins) {\n\t\t\tif($tw.browser) {\n\t\t\t\tvar pluginTiddler = $tw.wiki.getTiddler(plugins[0]);\n\t\t\t\tif(pluginTiddler) {\n\t\t\t\t\tdocument.documentElement.setAttribute(\"dir\",pluginTiddler.getFieldString(\"text-direction\") || \"auto\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.documentElement.removeAttribute(\"dir\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\t// Kick off the theme manager\n\t$tw.themeManager = new $tw.PluginSwitcher({\n\t\twiki: $tw.wiki,\n\t\tpluginType: \"theme\",\n\t\tcontrollerTitle: \"$:/theme\",\n\t\tdefaultPlugins: [\n\t\t\t\"$:/themes/tiddlywiki/snowwhite\",\n\t\t\t\"$:/themes/tiddlywiki/vanilla\"\n\t\t]\n\t});\n\t// Kick off the keyboard manager\n\t$tw.keyboardManager = new $tw.KeyboardManager();\n\t// Clear outstanding tiddler store change events to avoid an unnecessary refresh cycle at startup\n\t$tw.wiki.clearTiddlerEventQueue();\n\t// Create a root widget for attaching event handlers. By using it as the parentWidget for another widget tree, one can reuse the event handlers\n\tif($tw.browser) {\n\t\t$tw.rootWidget = new widget.widget({\n\t\t\ttype: \"widget\",\n\t\t\tchildren: []\n\t\t},{\n\t\t\twiki: $tw.wiki,\n\t\t\tdocument: document\n\t\t});\n\t}\n\t// Find a working syncadaptor\n\t$tw.syncadaptor = undefined;\n\t$tw.modules.forEachModuleOfType(\"syncadaptor\",function(title,module) {\n\t\tif(!$tw.syncadaptor && module.adaptorClass) {\n\t\t\t$tw.syncadaptor = new module.adaptorClass({wiki: $tw.wiki});\n\t\t}\n\t});\n\t// Set up the syncer object if we've got a syncadaptor\n\tif($tw.syncadaptor) {\n\t\t$tw.syncer = new $tw.Syncer({wiki: $tw.wiki, syncadaptor: $tw.syncadaptor});\n\t} \n\t// Setup the saver handler\n\t$tw.saverHandler = new $tw.SaverHandler({wiki: $tw.wiki, dirtyTracking: !$tw.syncadaptor});\n\t// Host-specific startup\n\tif($tw.browser) {\n\t\t// Install the popup manager\n\t\t$tw.popup = new $tw.utils.Popup();\n\t\t// Install the animator\n\t\t$tw.anim = new $tw.utils.Animator();\n\t}\n};\n\n})();\n",
            "title": "$:/core/modules/startup.js",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/story.js": {
            "text": "/*\\\ntitle: $:/core/modules/startup/story.js\ntype: application/javascript\nmodule-type: startup\n\nLoad core modules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"story\";\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n// Default story and history lists\nvar DEFAULT_STORY_TITLE = \"$:/StoryList\";\nvar DEFAULT_HISTORY_TITLE = \"$:/HistoryList\";\n\n// Default tiddlers\nvar DEFAULT_TIDDLERS_TITLE = \"$:/DefaultTiddlers\";\n\n// Config\nvar CONFIG_UPDATE_ADDRESS_BAR = \"$:/config/Navigation/UpdateAddressBar\"; // Can be \"no\", \"permalink\", \"permaview\"\nvar CONFIG_UPDATE_HISTORY = \"$:/config/Navigation/UpdateHistory\"; // Can be \"yes\" or \"no\"\n\nexports.startup = function() {\n\t// Open startup tiddlers\n\topenStartupTiddlers();\n\tif($tw.browser) {\n\t\t// Set up location hash update\n\t\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\t\tif($tw.utils.hop(changes,DEFAULT_STORY_TITLE) || $tw.utils.hop(changes,DEFAULT_HISTORY_TITLE)) {\n\t\t\t\tupdateLocationHash({\n\t\t\t\t\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_UPDATE_ADDRESS_BAR,\"permaview\").trim(),\n\t\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim()\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\t// Listen for changes to the browser location hash\n\t\twindow.addEventListener(\"hashchange\",function() {\n\t\t\tvar hash = $tw.utils.getLocationHash();\n\t\t\tif(hash !== $tw.locationHash) {\n\t\t\t\t$tw.locationHash = hash;\n\t\t\t\topenStartupTiddlers({defaultToCurrentStory: true});\n\t\t\t}\n\t\t},false);\n\t\t// Listen for the tm-browser-refresh message\n\t\t$tw.rootWidget.addEventListener(\"tm-browser-refresh\",function(event) {\n\t\t\twindow.location.reload(true);\n\t\t});\n\t\t// Listen for the tm-print message\n\t\t$tw.rootWidget.addEventListener(\"tm-print\",function(event) {\n\t\t\t(event.event.view || window).print();\n\t\t});\n\t\t// Listen for the tm-home message\n\t\t$tw.rootWidget.addEventListener(\"tm-home\",function(event) {\n\t\t\twindow.location.hash = \"\";\n\t\t\tvar storyFilter = $tw.wiki.getTiddlerText(DEFAULT_TIDDLERS_TITLE),\n\t\t\t\tstoryList = $tw.wiki.filterTiddlers(storyFilter);\n\t\t\t//invoke any hooks that might change the default story list\n\t\t\tstoryList = $tw.hooks.invokeHook(\"th-opening-default-tiddlers-list\",storyList);\n\t\t\t$tw.wiki.addTiddler({title: DEFAULT_STORY_TITLE, text: \"\", list: storyList},$tw.wiki.getModificationFields());\n\t\t\tif(storyList[0]) {\n\t\t\t\t$tw.wiki.addToHistory(storyList[0]);\t\t\t\t\n\t\t\t}\n\t\t});\n\t\t// Listen for the tm-permalink message\n\t\t$tw.rootWidget.addEventListener(\"tm-permalink\",function(event) {\n\t\t\tupdateLocationHash({\n\t\t\t\tupdateAddressBar: \"permalink\",\n\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim(),\n\t\t\t\ttargetTiddler: event.param || event.tiddlerTitle\n\t\t\t});\n\t\t});\n\t\t// Listen for the tm-permaview message\n\t\t$tw.rootWidget.addEventListener(\"tm-permaview\",function(event) {\n\t\t\tupdateLocationHash({\n\t\t\t\tupdateAddressBar: \"permaview\",\n\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim(),\n\t\t\t\ttargetTiddler: event.param || event.tiddlerTitle\n\t\t\t});\n\t\t});\n\t}\n};\n\n/*\nProcess the location hash to open the specified tiddlers. Options:\ndefaultToCurrentStory: If true, the current story is retained as the default, instead of opening the default tiddlers\n*/\nfunction openStartupTiddlers(options) {\n\toptions = options || {};\n\t// Work out the target tiddler and the story filter. \"null\" means \"unspecified\"\n\tvar target = null,\n\t\tstoryFilter = null;\n\tif($tw.locationHash.length > 1) {\n\t\tvar hash = $tw.locationHash.substr(1),\n\t\t\tsplit = hash.indexOf(\":\");\n\t\tif(split === -1) {\n\t\t\ttarget = decodeURIComponent(hash.trim());\n\t\t} else {\n\t\t\ttarget = decodeURIComponent(hash.substr(0,split).trim());\n\t\t\tstoryFilter = decodeURIComponent(hash.substr(split + 1).trim());\n\t\t}\n\t}\n\t// If the story wasn't specified use the current tiddlers or a blank story\n\tif(storyFilter === null) {\n\t\tif(options.defaultToCurrentStory) {\n\t\t\tvar currStoryList = $tw.wiki.getTiddlerList(DEFAULT_STORY_TITLE);\n\t\t\tstoryFilter = $tw.utils.stringifyList(currStoryList);\n\t\t} else {\n\t\t\tif(target && target !== \"\") {\n\t\t\t\tstoryFilter = \"\";\n\t\t\t} else {\n\t\t\t\tstoryFilter = $tw.wiki.getTiddlerText(DEFAULT_TIDDLERS_TITLE);\n\t\t\t}\n\t\t}\n\t}\n\t// Process the story filter to get the story list\n\tvar storyList = $tw.wiki.filterTiddlers(storyFilter);\n\t// Invoke any hooks that want to change the default story list\n\tstoryList = $tw.hooks.invokeHook(\"th-opening-default-tiddlers-list\",storyList);\n\t// If the target tiddler isn't included then splice it in at the top\n\tif(target && storyList.indexOf(target) === -1) {\n\t\tstoryList.unshift(target);\n\t}\n\t// Save the story list\n\t$tw.wiki.addTiddler({title: DEFAULT_STORY_TITLE, text: \"\", list: storyList},$tw.wiki.getModificationFields());\n\t// If a target tiddler was specified add it to the history stack\n\tif(target && target !== \"\") {\n\t\t// The target tiddler doesn't need double square brackets, but we'll silently remove them if they're present\n\t\tif(target.indexOf(\"[[\") === 0 && target.substr(-2) === \"]]\") {\n\t\t\ttarget = target.substr(2,target.length - 4);\n\t\t}\n\t\t$tw.wiki.addToHistory(target);\n\t} else if(storyList.length > 0) {\n\t\t$tw.wiki.addToHistory(storyList[0]);\n\t}\n}\n\n/*\noptions: See below\noptions.updateAddressBar: \"permalink\", \"permaview\" or \"no\" (defaults to \"permaview\")\noptions.updateHistory: \"yes\" or \"no\" (defaults to \"no\")\noptions.targetTiddler: optional title of target tiddler for permalink\n*/\nfunction updateLocationHash(options) {\n\tif(options.updateAddressBar !== \"no\") {\n\t\t// Get the story and the history stack\n\t\tvar storyList = $tw.wiki.getTiddlerList(DEFAULT_STORY_TITLE),\n\t\t\thistoryList = $tw.wiki.getTiddlerData(DEFAULT_HISTORY_TITLE,[]),\n\t\t\ttargetTiddler = \"\";\n\t\tif(options.targetTiddler) {\n\t\t\ttargetTiddler = options.targetTiddler;\n\t\t} else {\n\t\t\t// The target tiddler is the one at the top of the stack\n\t\t\tif(historyList.length > 0) {\n\t\t\t\ttargetTiddler = historyList[historyList.length-1].title;\n\t\t\t}\n\t\t\t// Blank the target tiddler if it isn't present in the story\n\t\t\tif(storyList.indexOf(targetTiddler) === -1) {\n\t\t\t\ttargetTiddler = \"\";\n\t\t\t}\n\t\t}\n\t\t// Assemble the location hash\n\t\tif(options.updateAddressBar === \"permalink\") {\n\t\t\t$tw.locationHash = \"#\" + encodeURIComponent(targetTiddler);\n\t\t} else {\n\t\t\t$tw.locationHash = \"#\" + encodeURIComponent(targetTiddler) + \":\" + encodeURIComponent($tw.utils.stringifyList(storyList));\n\t\t}\n\t\t// Only change the location hash if we must, thus avoiding unnecessary onhashchange events\n\t\tif($tw.utils.getLocationHash() !== $tw.locationHash) {\n\t\t\tif(options.updateHistory === \"yes\") {\n\t\t\t\t// Assign the location hash so that history is updated\n\t\t\t\twindow.location.hash = $tw.locationHash;\n\t\t\t} else {\n\t\t\t\t// We use replace so that browser history isn't affected\n\t\t\t\twindow.location.replace(window.location.toString().split(\"#\")[0] + $tw.locationHash);\n\t\t\t}\n\t\t}\n\t}\n}\n\n})();\n",
            "title": "$:/core/modules/startup/story.js",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/windows.js": {
            "text": "/*\\\ntitle: $:/core/modules/startup/windows.js\ntype: application/javascript\nmodule-type: startup\n\nSetup root widget handlers for the messages concerned with opening external browser windows\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"windows\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n// Global to keep track of open windows (hashmap by title)\nvar windows = {};\n\nexports.startup = function() {\n\t// Handle open window message\n\t$tw.rootWidget.addEventListener(\"tm-open-window\",function(event) {\n\t\t// Get the parameters\n\t\tvar refreshHandler,\n\t\t\ttitle = event.param || event.tiddlerTitle,\n\t\t\tparamObject = event.paramObject || {},\n\t\t\ttemplate = paramObject.template || \"$:/core/templates/single.tiddler.window\",\n\t\t\twidth = paramObject.width || \"700\",\n\t\t\theight = paramObject.height || \"600\",\n\t\t\tvariables = $tw.utils.extend({},paramObject,{currentTiddler: title});\n\t\t// Open the window\n\t\tvar srcWindow = window.open(\"\",\"external-\" + title,\"scrollbars,width=\" + width + \",height=\" + height),\n\t\t\tsrcDocument = srcWindow.document;\n\t\twindows[title] = srcWindow;\n\t\t// Check for reopening the same window\n\t\tif(srcWindow.haveInitialisedWindow) {\n\t\t\treturn;\n\t\t}\n\t\t// Initialise the document\n\t\tsrcDocument.write(\"<html><head></head><body class='tc-body tc-single-tiddler-window'></body></html>\");\n\t\tsrcDocument.close();\n\t\tsrcDocument.title = title;\n\t\tsrcWindow.addEventListener(\"beforeunload\",function(event) {\n\t\t\tdelete windows[title];\n\t\t\t$tw.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t},false);\n\t\t// Set up the styles\n\t\tvar styleWidgetNode = $tw.wiki.makeTranscludeWidget(\"$:/core/ui/PageStylesheet\",{\n\t\t\t\tdocument: $tw.fakeDocument,\n\t\t\t\tvariables: variables,\n\t\t\t\timportPageMacros: true}),\n\t\t\tstyleContainer = $tw.fakeDocument.createElement(\"style\");\n\t\tstyleWidgetNode.render(styleContainer,null);\n\t\tvar styleElement = srcDocument.createElement(\"style\");\n\t\tstyleElement.innerHTML = styleContainer.textContent;\n\t\tsrcDocument.head.insertBefore(styleElement,srcDocument.head.firstChild);\n\t\t// Render the text of the tiddler\n\t\tvar parser = $tw.wiki.parseTiddler(template),\n\t\t\twidgetNode = $tw.wiki.makeWidget(parser,{document: srcDocument, parentWidget: $tw.rootWidget, variables: variables});\n\t\twidgetNode.render(srcDocument.body,srcDocument.body.firstChild);\n\t\t// Function to handle refreshes\n\t\trefreshHandler = function(changes) {\n\t\t\tif(styleWidgetNode.refresh(changes,styleContainer,null)) {\n\t\t\t\tstyleElement.innerHTML = styleContainer.textContent;\n\t\t\t}\n\t\t\twidgetNode.refresh(changes);\n\t\t};\n\t\t$tw.wiki.addEventListener(\"change\",refreshHandler);\n\t\tsrcWindow.haveInitialisedWindow = true;\n\t});\n\t// Close open windows when unloading main window\n\t$tw.addUnloadTask(function() {\n\t\t$tw.utils.each(windows,function(win) {\n\t\t\twin.close();\n\t\t});\n\t});\n\n};\n\n})();\n",
            "title": "$:/core/modules/startup/windows.js",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/story.js": {
            "text": "/*\\\ntitle: $:/core/modules/story.js\ntype: application/javascript\nmodule-type: global\n\nLightweight object for managing interactions with the story and history lists.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nConstruct Story object with options:\nwiki: reference to wiki object to use to resolve tiddler titles\nstoryTitle: title of story list tiddler\nhistoryTitle: title of history list tiddler\n*/\nfunction Story(options) {\n\toptions = options || {};\n\tthis.wiki = options.wiki || $tw.wiki;\n\tthis.storyTitle = options.storyTitle || \"$:/StoryList\";\n\tthis.historyTitle = options.historyTitle || \"$:/HistoryList\";\n};\n\nStory.prototype.navigateTiddler = function(navigateTo,navigateFromTitle,navigateFromClientRect) {\n\tthis.addToStory(navigateTo,navigateFromTitle);\n\tthis.addToHistory(navigateTo,navigateFromClientRect);\n};\n\nStory.prototype.getStoryList = function() {\n\treturn this.wiki.getTiddlerList(this.storyTitle) || [];\n};\n\nStory.prototype.addToStory = function(navigateTo,navigateFromTitle,options) {\n\toptions = options || {};\n\tvar storyList = this.getStoryList();\n\t// See if the tiddler is already there\n\tvar slot = storyList.indexOf(navigateTo);\n\t// Quit if it already exists in the story river\n\tif(slot >= 0) {\n\t\treturn;\n\t}\n\t// First we try to find the position of the story element we navigated from\n\tvar fromIndex = storyList.indexOf(navigateFromTitle);\n\tif(fromIndex >= 0) {\n\t\t// The tiddler is added from inside the river\n\t\t// Determine where to insert the tiddler; Fallback is \"below\"\n\t\tswitch(options.openLinkFromInsideRiver) {\n\t\t\tcase \"top\":\n\t\t\t\tslot = 0;\n\t\t\t\tbreak;\n\t\t\tcase \"bottom\":\n\t\t\t\tslot = storyList.length;\n\t\t\t\tbreak;\n\t\t\tcase \"above\":\n\t\t\t\tslot = fromIndex;\n\t\t\t\tbreak;\n\t\t\tcase \"below\": // Intentional fall-through\n\t\t\tdefault:\n\t\t\t\tslot = fromIndex + 1;\n\t\t\t\tbreak;\n\t\t}\n\t} else {\n\t\t// The tiddler is opened from outside the river. Determine where to insert the tiddler; default is \"top\"\n\t\tif(options.openLinkFromOutsideRiver === \"bottom\") {\n\t\t\t// Insert at bottom\n\t\t\tslot = storyList.length;\n\t\t} else {\n\t\t\t// Insert at top\n\t\t\tslot = 0;\n\t\t}\n\t}\n\t// Add the tiddler\n\tstoryList.splice(slot,0,navigateTo);\n\t// Save the story\n\tthis.saveStoryList(storyList);\n};\n\nStory.prototype.saveStoryList = function(storyList) {\n\tvar storyTiddler = this.wiki.getTiddler(this.storyTitle);\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\tthis.wiki.getCreationFields(),\n\t\t{title: this.storyTitle},\n\t\tstoryTiddler,\n\t\t{list: storyList},\n\t\tthis.wiki.getModificationFields()\n\t));\n};\n\nStory.prototype.addToHistory = function(navigateTo,navigateFromClientRect) {\n\tvar titles = $tw.utils.isArray(navigateTo) ? navigateTo : [navigateTo];\n\t// Add a new record to the top of the history stack\n\tvar historyList = this.wiki.getTiddlerData(this.historyTitle,[]);\n\t$tw.utils.each(titles,function(title) {\n\t\thistoryList.push({title: title, fromPageRect: navigateFromClientRect});\n\t});\n\tthis.wiki.setTiddlerData(this.historyTitle,historyList,{\"current-tiddler\": titles[titles.length-1]});\n};\n\nStory.prototype.storyCloseTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyCloseAllTiddlers = function() {\n// TBD\n};\n\nStory.prototype.storyCloseOtherTiddlers = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyEditTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyDeleteTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storySaveTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyCancelTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyNewTiddler = function(targetTitle) {\n// TBD\n};\n\nexports.Story = Story;\n\n\n})();\n",
            "title": "$:/core/modules/story.js",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/storyviews/classic.js": {
            "text": "/*\\\ntitle: $:/core/modules/storyviews/classic.js\ntype: application/javascript\nmodule-type: storyview\n\nViews the story as a linear sequence\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar easing = \"cubic-bezier(0.645, 0.045, 0.355, 1)\"; // From http://easings.net/#easeInOutCubic\n\nvar ClassicStoryView = function(listWidget) {\n\tthis.listWidget = listWidget;\n};\n\nClassicStoryView.prototype.navigateTo = function(historyInfo) {\n\tvar listElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Scroll the node into view\n\tthis.listWidget.dispatchEvent({type: \"tm-scroll\", target: targetElement});\n};\n\nClassicStoryView.prototype.insert = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Get the current height of the tiddler\n\tvar computedStyle = window.getComputedStyle(targetElement),\n\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\tcurrHeight = targetElement.offsetHeight + currMarginTop;\n\t// Reset the margin once the transition is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: \"\"}\n\t\t]);\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{marginBottom: (-currHeight) + \"px\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t// Transition to the final position\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"opacity \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms \" + easing},\n\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n};\n\nClassicStoryView.prototype.remove = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\tremoveElement = function() {\n\t\t\twidget.removeChildDomNodes();\n\t\t};\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Get the current height of the tiddler\n\tvar currWidth = targetElement.offsetWidth,\n\t\tcomputedStyle = window.getComputedStyle(targetElement),\n\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\tcurrHeight = targetElement.offsetHeight + currMarginTop;\n\t// Remove the dom nodes of the widget at the end of the transition\n\tsetTimeout(removeElement,duration);\n\t// Animate the closure\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{transform: \"translateX(0px)\"},\n\t\t{marginBottom:  currMarginBottom + \"px\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms \" + easing},\n\t\t{transform: \"translateX(-\" + currWidth + \"px)\"},\n\t\t{marginBottom: (-currHeight) + \"px\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n};\n\nexports.classic = ClassicStoryView;\n\n})();",
            "title": "$:/core/modules/storyviews/classic.js",
            "type": "application/javascript",
            "module-type": "storyview"
        },
        "$:/core/modules/storyviews/pop.js": {
            "text": "/*\\\ntitle: $:/core/modules/storyviews/pop.js\ntype: application/javascript\nmodule-type: storyview\n\nAnimates list insertions and removals\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar PopStoryView = function(listWidget) {\n\tthis.listWidget = listWidget;\n};\n\nPopStoryView.prototype.navigateTo = function(historyInfo) {\n\tvar listElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Scroll the node into view\n\tthis.listWidget.dispatchEvent({type: \"tm-scroll\", target: targetElement});\n};\n\nPopStoryView.prototype.insert = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Reset once the transition is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{transform: \"none\"}\n\t\t]);\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{transform: \"scale(2)\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t// Transition to the final position\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{transform: \"scale(1)\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n};\n\nPopStoryView.prototype.remove = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\tremoveElement = function() {\n\t\t\tif(targetElement.parentNode) {\n\t\t\t\twidget.removeChildDomNodes();\n\t\t\t}\n\t\t};\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Remove the element at the end of the transition\n\tsetTimeout(removeElement,duration);\n\t// Animate the closure\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{transform: \"scale(1)\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{transform: \"scale(0.1)\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n};\n\nexports.pop = PopStoryView;\n\n})();\n",
            "title": "$:/core/modules/storyviews/pop.js",
            "type": "application/javascript",
            "module-type": "storyview"
        },
        "$:/core/modules/storyviews/zoomin.js": {
            "text": "/*\\\ntitle: $:/core/modules/storyviews/zoomin.js\ntype: application/javascript\nmodule-type: storyview\n\nZooms between individual tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar easing = \"cubic-bezier(0.645, 0.045, 0.355, 1)\"; // From http://easings.net/#easeInOutCubic\n\nvar ZoominListView = function(listWidget) {\n\tvar self = this;\n\tthis.listWidget = listWidget;\n\t// Get the index of the tiddler that is at the top of the history\n\tvar history = this.listWidget.wiki.getTiddlerDataCached(this.listWidget.historyTitle,[]),\n\t\ttargetTiddler;\n\tif(history.length > 0) {\n\t\ttargetTiddler = history[history.length-1].title;\n\t}\n\t// Make all the tiddlers position absolute, and hide all but the top (or first) one\n\t$tw.utils.each(this.listWidget.children,function(itemWidget,index) {\n\t\tvar domNode = itemWidget.findFirstDomNode();\n\t\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\t\tif(!(domNode instanceof Element)) {\n\t\t\treturn;\n\t\t}\n\t\tif((targetTiddler && targetTiddler !== itemWidget.parseTreeNode.itemTitle) || (!targetTiddler && index)) {\n\t\t\tdomNode.style.display = \"none\";\n\t\t} else {\n\t\t\tself.currentTiddlerDomNode = domNode;\n\t\t}\n\t\t$tw.utils.addClass(domNode,\"tc-storyview-zoomin-tiddler\");\n\t});\n};\n\nZoominListView.prototype.navigateTo = function(historyInfo) {\n\tvar duration = $tw.utils.getAnimationDuration(),\n\t\tlistElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Make the new tiddler be position absolute and visible so that we can measure it\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"block\"},\n\t\t{transformOrigin: \"0 0\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{transition: \"none\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n\t// Get the position of the source node, or use the centre of the window as the source position\n\tvar sourceBounds = historyInfo.fromPageRect || {\n\t\t\tleft: window.innerWidth/2 - 2,\n\t\t\ttop: window.innerHeight/2 - 2,\n\t\t\twidth: window.innerWidth/8,\n\t\t\theight: window.innerHeight/8\n\t\t};\n\t// Try to find the title node in the target tiddler\n\tvar titleDomNode = findTitleDomNode(listItemWidget) || listItemWidget.findFirstDomNode(),\n\t\tzoomBounds = titleDomNode.getBoundingClientRect();\n\t// Compute the transform for the target tiddler to make the title lie over the source rectange\n\tvar targetBounds = targetElement.getBoundingClientRect(),\n\t\tscale = sourceBounds.width / zoomBounds.width,\n\t\tx = sourceBounds.left - targetBounds.left - (zoomBounds.left - targetBounds.left) * scale,\n\t\ty = sourceBounds.top - targetBounds.top - (zoomBounds.top - targetBounds.top) * scale;\n\t// Transform the target tiddler to its starting position\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transform: \"translateX(\" + x + \"px) translateY(\" + y + \"px) scale(\" + scale + \")\"}\n\t]);\n\t// Force layout\n\t$tw.utils.forceLayout(targetElement);\n\t// Apply the ending transitions with a timeout to ensure that the previously applied transformations are applied first\n\tvar self = this,\n\t\tprevCurrentTiddler = this.currentTiddlerDomNode;\n\tthis.currentTiddlerDomNode = targetElement;\n\t// Transform the target tiddler to its natural size\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t{opacity: \"1.0\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{zIndex: \"500\"},\n\t]);\n\t// Transform the previous tiddler out of the way and then hide it\n\tif(prevCurrentTiddler && prevCurrentTiddler !== targetElement) {\n\t\tscale = zoomBounds.width / sourceBounds.width;\n\t\tx =  zoomBounds.left - targetBounds.left - (sourceBounds.left - targetBounds.left) * scale;\n\t\ty =  zoomBounds.top - targetBounds.top - (sourceBounds.top - targetBounds.top) * scale;\n\t\t$tw.utils.setStyle(prevCurrentTiddler,[\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t\t{opacity: \"0.0\"},\n\t\t\t{transformOrigin: \"0 0\"},\n\t\t\t{transform: \"translateX(\" + x + \"px) translateY(\" + y + \"px) scale(\" + scale + \")\"},\n\t\t\t{zIndex: \"0\"}\n\t\t]);\n\t\t// Hide the tiddler when the transition has finished\n\t\tsetTimeout(function() {\n\t\t\tif(self.currentTiddlerDomNode !== prevCurrentTiddler) {\n\t\t\t\tprevCurrentTiddler.style.display = \"none\";\n\t\t\t}\n\t\t},duration);\n\t}\n\t// Scroll the target into view\n//\t$tw.pageScroller.scrollIntoView(targetElement);\n};\n\n/*\nFind the first child DOM node of a widget that has the class \"tc-title\"\n*/\nfunction findTitleDomNode(widget,targetClass) {\n\ttargetClass = targetClass || \"tc-title\";\n\tvar domNode = widget.findFirstDomNode();\n\tif(domNode && domNode.querySelector) {\n\t\treturn domNode.querySelector(\".\" + targetClass);\n\t}\n\treturn null;\n}\n\nZoominListView.prototype.insert = function(widget) {\n\tvar targetElement = widget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Make the newly inserted node position absolute and hidden\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"none\"}\n\t]);\n};\n\nZoominListView.prototype.remove = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\tremoveElement = function() {\n\t\t\twidget.removeChildDomNodes();\n\t\t};\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Abandon if hidden\n\tif(targetElement.style.display != \"block\" ) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Set up the tiddler that is being closed\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"block\"},\n\t\t{transformOrigin: \"50% 50%\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{transition: \"none\"},\n\t\t{zIndex: \"0\"}\n\t]);\n\t// We'll move back to the previous or next element in the story\n\tvar toWidget = widget.previousSibling();\n\tif(!toWidget) {\n\t\ttoWidget = widget.nextSibling();\n\t}\n\tvar toWidgetDomNode = toWidget && toWidget.findFirstDomNode();\n\t// Set up the tiddler we're moving back in\n\tif(toWidgetDomNode) {\n\t\t$tw.utils.addClass(toWidgetDomNode,\"tc-storyview-zoomin-tiddler\");\n\t\t$tw.utils.setStyle(toWidgetDomNode,[\n\t\t\t{display: \"block\"},\n\t\t\t{transformOrigin: \"50% 50%\"},\n\t\t\t{transform: \"translateX(0px) translateY(0px) scale(10)\"},\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t\t{opacity: \"0\"},\n\t\t\t{zIndex: \"500\"}\n\t\t]);\n\t\tthis.currentTiddlerDomNode = toWidgetDomNode;\n\t}\n\t// Animate them both\n\t// Force layout\n\t$tw.utils.forceLayout(this.listWidget.parentDomNode);\n\t// First, the tiddler we're closing\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transformOrigin: \"50% 50%\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(0.1)\"},\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t{opacity: \"0\"},\n\t\t{zIndex: \"0\"}\n\t]);\n\tsetTimeout(removeElement,duration);\n\t// Now the tiddler we're going back to\n\tif(toWidgetDomNode) {\n\t\t$tw.utils.setStyle(toWidgetDomNode,[\n\t\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t\t{opacity: \"1\"}\n\t\t]);\n\t}\n\treturn true; // Indicate that we'll delete the DOM node\n};\n\nexports.zoomin = ZoominListView;\n\n})();\n",
            "title": "$:/core/modules/storyviews/zoomin.js",
            "type": "application/javascript",
            "module-type": "storyview"
        },
        "$:/core/modules/syncer.js": {
            "text": "/*\\\ntitle: $:/core/modules/syncer.js\ntype: application/javascript\nmodule-type: global\n\nThe syncer tracks changes to the store. If a syncadaptor is used then individual tiddlers are synchronised through it. If there is no syncadaptor then the entire wiki is saved via saver modules.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nDefaults\n*/\nSyncer.prototype.titleIsLoggedIn = \"$:/status/IsLoggedIn\";\nSyncer.prototype.titleUserName = \"$:/status/UserName\";\nSyncer.prototype.titleSyncFilter = \"$:/config/SyncFilter\";\nSyncer.prototype.titleSavedNotification = \"$:/language/Notifications/Save/Done\";\nSyncer.prototype.taskTimerInterval = 1 * 1000; // Interval for sync timer\nSyncer.prototype.throttleInterval = 1 * 1000; // Defer saving tiddlers if they've changed in the last 1s...\nSyncer.prototype.fallbackInterval = 10 * 1000; // Unless the task is older than 10s\nSyncer.prototype.pollTimerInterval = 60 * 1000; // Interval for polling for changes from the adaptor\n\n/*\nInstantiate the syncer with the following options:\nsyncadaptor: reference to syncadaptor to be used\nwiki: wiki to be synced\n*/\nfunction Syncer(options) {\n\tvar self = this;\n\tthis.wiki = options.wiki;\n\tthis.syncadaptor = options.syncadaptor;\n\tthis.titleIsLoggedIn = options.titleIsLoggedIn || this.titleIsLoggedIn;\n\tthis.titleUserName = options.titleUserName || this.titleUserName;\n\tthis.titleSyncFilter = options.titleSyncFilter || this.titleSyncFilter;\n\tthis.titleSavedNotification = options.titleSavedNotification || this.titleSavedNotification;\n\tthis.taskTimerInterval = options.taskTimerInterval || this.taskTimerInterval;\n\tthis.throttleInterval = options.throttleInterval || this.throttleInterval;\n\tthis.fallbackInterval = options.fallbackInterval || this.fallbackInterval;\n\tthis.pollTimerInterval = options.pollTimerInterval || this.pollTimerInterval;\n\t// Make a logger\n\tthis.logger = new $tw.utils.Logger(\"syncer\" + ($tw.browser ? \"-browser\" : \"\") + ($tw.node ? \"-server\" : \"\")  + (this.syncadaptor.name ? (\"-\" + this.syncadaptor.name) : \"\"));\n\t// Compile the dirty tiddler filter\n\tthis.filterFn = this.wiki.compileFilter(this.wiki.getTiddlerText(this.titleSyncFilter));\n\t// Record information for known tiddlers\n\tthis.readTiddlerInfo();\n\t// Tasks are {type: \"load\"/\"save\"/\"delete\", title:, queueTime:, lastModificationTime:}\n\tthis.taskQueue = {}; // Hashmap of tasks yet to be performed\n\tthis.taskInProgress = {}; // Hash of tasks in progress\n\tthis.taskTimerId = null; // Timer for task dispatch\n\tthis.pollTimerId = null; // Timer for polling server\n\t// Listen out for changes to tiddlers\n\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\tself.syncToServer(changes);\n\t});\n\t// Browser event handlers\n\tif($tw.browser) {\n\t\t// Set up our beforeunload handler\n\t\t$tw.addUnloadTask(function(event) {\n\t\t\tvar confirmationMessage;\n\t\t\tif(self.isDirty()) {\n\t\t\t\tconfirmationMessage = $tw.language.getString(\"UnsavedChangesWarning\");\n\t\t\t\tevent.returnValue = confirmationMessage; // Gecko\n\t\t\t}\n\t\t\treturn confirmationMessage;\n\t\t});\n\t\t// Listen out for login/logout/refresh events in the browser\n\t\t$tw.rootWidget.addEventListener(\"tm-login\",function() {\n\t\t\tself.handleLoginEvent();\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-logout\",function() {\n\t\t\tself.handleLogoutEvent();\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-server-refresh\",function() {\n\t\t\tself.handleRefreshEvent();\n\t\t});\n\t}\n\t// Listen out for lazyLoad events\n\tthis.wiki.addEventListener(\"lazyLoad\",function(title) {\n\t\tself.handleLazyLoadEvent(title);\n\t});\n\t// Get the login status\n\tthis.getStatus(function(err,isLoggedIn) {\n\t\t// Do a sync from the server\n\t\tself.syncFromServer();\n\t});\n}\n\n/*\nRead (or re-read) the latest tiddler info from the store\n*/\nSyncer.prototype.readTiddlerInfo = function() {\n\t// Hashmap by title of {revision:,changeCount:,adaptorInfo:}\n\tthis.tiddlerInfo = {};\n\t// Record information for known tiddlers\n\tvar self = this,\n\t\ttiddlers = this.filterFn.call(this.wiki);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\tself.tiddlerInfo[title] = {\n\t\t\trevision: tiddler.fields.revision,\n\t\t\tadaptorInfo: self.syncadaptor && self.syncadaptor.getTiddlerInfo(tiddler),\n\t\t\tchangeCount: self.wiki.getChangeCount(title),\n\t\t\thasBeenLazyLoaded: false\n\t\t};\n\t});\n};\n\n/*\nCreate an tiddlerInfo structure if it doesn't already exist\n*/\nSyncer.prototype.createTiddlerInfo = function(title) {\n\tif(!$tw.utils.hop(this.tiddlerInfo,title)) {\n\t\tthis.tiddlerInfo[title] = {\n\t\t\trevision: null,\n\t\t\tadaptorInfo: {},\n\t\t\tchangeCount: -1,\n\t\t\thasBeenLazyLoaded: false\n\t\t};\n\t}\n};\n\n/*\nChecks whether the wiki is dirty (ie the window shouldn't be closed)\n*/\nSyncer.prototype.isDirty = function() {\n\treturn (this.numTasksInQueue() > 0) || (this.numTasksInProgress() > 0);\n};\n\n/*\nUpdate the document body with the class \"tc-dirty\" if the wiki has unsaved/unsynced changes\n*/\nSyncer.prototype.updateDirtyStatus = function() {\n\tif($tw.browser) {\n\t\t$tw.utils.toggleClass(document.body,\"tc-dirty\",this.isDirty());\n\t}\n};\n\n/*\nSave an incoming tiddler in the store, and updates the associated tiddlerInfo\n*/\nSyncer.prototype.storeTiddler = function(tiddlerFields,hasBeenLazyLoaded) {\n\t// Save the tiddler\n\tvar tiddler = new $tw.Tiddler(this.wiki.getTiddler(tiddlerFields.title),tiddlerFields);\n\tthis.wiki.addTiddler(tiddler);\n\t// Save the tiddler revision and changeCount details\n\tthis.tiddlerInfo[tiddlerFields.title] = {\n\t\trevision: tiddlerFields.revision,\n\t\tadaptorInfo: this.syncadaptor.getTiddlerInfo(tiddler),\n\t\tchangeCount: this.wiki.getChangeCount(tiddlerFields.title),\n\t\thasBeenLazyLoaded: hasBeenLazyLoaded !== undefined ? hasBeenLazyLoaded : true\n\t};\n};\n\nSyncer.prototype.getStatus = function(callback) {\n\tvar self = this;\n\t// Check if the adaptor supports getStatus()\n\tif(this.syncadaptor && this.syncadaptor.getStatus) {\n\t\t// Mark us as not logged in\n\t\tthis.wiki.addTiddler({title: this.titleIsLoggedIn,text: \"no\"});\n\t\t// Get login status\n\t\tthis.syncadaptor.getStatus(function(err,isLoggedIn,username) {\n\t\t\tif(err) {\n\t\t\t\tself.logger.alert(err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Set the various status tiddlers\n\t\t\tself.wiki.addTiddler({title: self.titleIsLoggedIn,text: isLoggedIn ? \"yes\" : \"no\"});\n\t\t\tif(isLoggedIn) {\n\t\t\t\tself.wiki.addTiddler({title: self.titleUserName,text: username || \"\"});\n\t\t\t} else {\n\t\t\t\tself.wiki.deleteTiddler(self.titleUserName);\n\t\t\t}\n\t\t\t// Invoke the callback\n\t\t\tif(callback) {\n\t\t\t\tcallback(err,isLoggedIn,username);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tcallback(null,true,\"UNAUTHENTICATED\");\n\t}\n};\n\n/*\nSynchronise from the server by reading the skinny tiddler list and queuing up loads for any tiddlers that we don't already have up to date\n*/\nSyncer.prototype.syncFromServer = function() {\n\tif(this.syncadaptor && this.syncadaptor.getSkinnyTiddlers) {\n\t\tthis.logger.log(\"Retrieving skinny tiddler list\");\n\t\tvar self = this;\n\t\tif(this.pollTimerId) {\n\t\t\tclearTimeout(this.pollTimerId);\n\t\t\tthis.pollTimerId = null;\n\t\t}\n\t\tthis.syncadaptor.getSkinnyTiddlers(function(err,tiddlers) {\n\t\t\t// Trigger the next sync\n\t\t\tself.pollTimerId = setTimeout(function() {\n\t\t\t\tself.pollTimerId = null;\n\t\t\t\tself.syncFromServer.call(self);\n\t\t\t},self.pollTimerInterval);\n\t\t\t// Check for errors\n\t\t\tif(err) {\n\t\t\t\tself.logger.alert($tw.language.getString(\"Error/RetrievingSkinny\") + \":\",err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Process each incoming tiddler\n\t\t\tfor(var t=0; t<tiddlers.length; t++) {\n\t\t\t\t// Get the incoming tiddler fields, and the existing tiddler\n\t\t\t\tvar tiddlerFields = tiddlers[t],\n\t\t\t\t\tincomingRevision = tiddlerFields.revision + \"\",\n\t\t\t\t\ttiddler = self.wiki.getTiddler(tiddlerFields.title),\n\t\t\t\t\ttiddlerInfo = self.tiddlerInfo[tiddlerFields.title],\n\t\t\t\t\tcurrRevision = tiddlerInfo ? tiddlerInfo.revision : null;\n\t\t\t\t// Ignore the incoming tiddler if it's the same as the revision we've already got\n\t\t\t\tif(currRevision !== incomingRevision) {\n\t\t\t\t\t// Do a full load if we've already got a fat version of the tiddler\n\t\t\t\t\tif(tiddler && tiddler.fields.text !== undefined) {\n\t\t\t\t\t\t// Do a full load of this tiddler\n\t\t\t\t\t\tself.enqueueSyncTask({\n\t\t\t\t\t\t\ttype: \"load\",\n\t\t\t\t\t\t\ttitle: tiddlerFields.title\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Load the skinny version of the tiddler\n\t\t\t\t\t\tself.storeTiddler(tiddlerFields,false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nSynchronise a set of changes to the server\n*/\nSyncer.prototype.syncToServer = function(changes) {\n\tvar self = this,\n\t\tnow = Date.now(),\n\t\tfilteredChanges = this.filterFn.call(this.wiki,function(callback) {\n\t\t\t$tw.utils.each(changes,function(change,title) {\n\t\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\t\tcallback(tiddler,title);\n\t\t\t});\n\t\t});\n\t$tw.utils.each(changes,function(change,title,object) {\n\t\t// Process the change if it is a deletion of a tiddler we're already syncing, or is on the filtered change list\n\t\tif((change.deleted && $tw.utils.hop(self.tiddlerInfo,title)) || filteredChanges.indexOf(title) !== -1) {\n\t\t\t// Queue a task to sync this tiddler\n\t\t\tself.enqueueSyncTask({\n\t\t\t\ttype: change.deleted ? \"delete\" : \"save\",\n\t\t\t\ttitle: title\n\t\t\t});\n\t\t}\n\t});\n};\n\n/*\nLazily load a skinny tiddler if we can\n*/\nSyncer.prototype.handleLazyLoadEvent = function(title) {\n\t// Don't lazy load the same tiddler twice\n\tvar info = this.tiddlerInfo[title];\n\tif(!info || !info.hasBeenLazyLoaded) {\n\t\tthis.createTiddlerInfo(title);\n\t\tthis.tiddlerInfo[title].hasBeenLazyLoaded = true;\n\t\t// Queue up a sync task to load this tiddler\n\t\tthis.enqueueSyncTask({\n\t\t\ttype: \"load\",\n\t\t\ttitle: title\n\t\t});\t\t\n\t}\n};\n\n/*\nDispay a password prompt and allow the user to login\n*/\nSyncer.prototype.handleLoginEvent = function() {\n\tvar self = this;\n\tthis.getStatus(function(err,isLoggedIn,username) {\n\t\tif(!isLoggedIn) {\n\t\t\t$tw.passwordPrompt.createPrompt({\n\t\t\t\tserviceName: $tw.language.getString(\"LoginToTiddlySpace\"),\n\t\t\t\tcallback: function(data) {\n\t\t\t\t\tself.login(data.username,data.password,function(err,isLoggedIn) {\n\t\t\t\t\t\tself.syncFromServer();\n\t\t\t\t\t});\n\t\t\t\t\treturn true; // Get rid of the password prompt\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n};\n\n/*\nAttempt to login to TiddlyWeb.\n\tusername: username\n\tpassword: password\n\tcallback: invoked with arguments (err,isLoggedIn)\n*/\nSyncer.prototype.login = function(username,password,callback) {\n\tthis.logger.log(\"Attempting to login as\",username);\n\tvar self = this;\n\tif(this.syncadaptor.login) {\n\t\tthis.syncadaptor.login(username,password,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tself.getStatus(function(err,isLoggedIn,username) {\n\t\t\t\tif(callback) {\n\t\t\t\t\tcallback(null,isLoggedIn);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t} else {\n\t\tcallback(null,true);\n\t}\n};\n\n/*\nAttempt to log out of TiddlyWeb\n*/\nSyncer.prototype.handleLogoutEvent = function() {\n\tthis.logger.log(\"Attempting to logout\");\n\tvar self = this;\n\tif(this.syncadaptor.logout) {\n\t\tthis.syncadaptor.logout(function(err) {\n\t\t\tif(err) {\n\t\t\t\tself.logger.alert(err);\n\t\t\t} else {\n\t\t\t\tself.getStatus();\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nImmediately refresh from the server\n*/\nSyncer.prototype.handleRefreshEvent = function() {\n\tthis.syncFromServer();\n};\n\n/*\nQueue up a sync task. If there is already a pending task for the tiddler, just update the last modification time\n*/\nSyncer.prototype.enqueueSyncTask = function(task) {\n\tvar self = this,\n\t\tnow = Date.now();\n\t// Set the timestamps on this task\n\ttask.queueTime = now;\n\ttask.lastModificationTime = now;\n\t// Fill in some tiddlerInfo if the tiddler is one we haven't seen before\n\tthis.createTiddlerInfo(task.title);\n\t// Bail if this is a save and the tiddler is already at the changeCount that the server has\n\tif(task.type === \"save\" && this.wiki.getChangeCount(task.title) <= this.tiddlerInfo[task.title].changeCount) {\n\t\treturn;\n\t}\n\t// Check if this tiddler is already in the queue\n\tif($tw.utils.hop(this.taskQueue,task.title)) {\n\t\t// this.logger.log(\"Re-queueing up sync task with type:\",task.type,\"title:\",task.title);\n\t\tvar existingTask = this.taskQueue[task.title];\n\t\t// If so, just update the last modification time\n\t\texistingTask.lastModificationTime = task.lastModificationTime;\n\t\t// If the new task is a save then we upgrade the existing task to a save. Thus a pending load is turned into a save if the tiddler changes locally in the meantime. But a pending save is not modified to become a load\n\t\tif(task.type === \"save\" || task.type === \"delete\") {\n\t\t\texistingTask.type = task.type;\n\t\t}\n\t} else {\n\t\t// this.logger.log(\"Queuing up sync task with type:\",task.type,\"title:\",task.title);\n\t\t// If it is not in the queue, insert it\n\t\tthis.taskQueue[task.title] = task;\n\t\tthis.updateDirtyStatus();\n\t}\n\t// Process the queue\n\t$tw.utils.nextTick(function() {self.processTaskQueue.call(self);});\n};\n\n/*\nReturn the number of tasks in progress\n*/\nSyncer.prototype.numTasksInProgress = function() {\n\treturn $tw.utils.count(this.taskInProgress);\n};\n\n/*\nReturn the number of tasks in the queue\n*/\nSyncer.prototype.numTasksInQueue = function() {\n\treturn $tw.utils.count(this.taskQueue);\n};\n\n/*\nTrigger a timeout if one isn't already outstanding\n*/\nSyncer.prototype.triggerTimeout = function() {\n\tvar self = this;\n\tif(!this.taskTimerId) {\n\t\tthis.taskTimerId = setTimeout(function() {\n\t\t\tself.taskTimerId = null;\n\t\t\tself.processTaskQueue.call(self);\n\t\t},self.taskTimerInterval);\n\t}\n};\n\n/*\nProcess the task queue, performing the next task if appropriate\n*/\nSyncer.prototype.processTaskQueue = function() {\n\tvar self = this;\n\t// Only process a task if the sync adaptor is fully initialised and we're not already performing a task. If we are already performing a task then we'll dispatch the next one when it completes\n\tif((!this.syncadaptor.isReady || this.syncadaptor.isReady()) && this.numTasksInProgress() === 0) {\n\t\t// Choose the next task to perform\n\t\tvar task = this.chooseNextTask();\n\t\t// Perform the task if we had one\n\t\tif(task) {\n\t\t\t// Remove the task from the queue and add it to the in progress list\n\t\t\tdelete this.taskQueue[task.title];\n\t\t\tthis.taskInProgress[task.title] = task;\n\t\t\tthis.updateDirtyStatus();\n\t\t\t// Dispatch the task\n\t\t\tthis.dispatchTask(task,function(err) {\n\t\t\t\tif(err) {\n\t\t\t\t\tself.logger.alert(\"Sync error while processing '\" + task.title + \"':\\n\" + err);\n\t\t\t\t}\n\t\t\t\t// Mark that this task is no longer in progress\n\t\t\t\tdelete self.taskInProgress[task.title];\n\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t// Process the next task\n\t\t\t\tself.processTaskQueue.call(self);\n\t\t\t});\n\t\t} else {\n\t\t\t// Make sure we've set a time if there wasn't a task to perform, but we've still got tasks in the queue\n\t\t\tif(this.numTasksInQueue() > 0) {\n\t\t\t\tthis.triggerTimeout();\n\t\t\t}\n\t\t}\n\t}\n};\n\n/*\nChoose the next applicable task\n*/\nSyncer.prototype.chooseNextTask = function() {\n\tvar self = this,\n\t\tcandidateTask = null,\n\t\tnow = Date.now();\n\t// Select the best candidate task\n\t$tw.utils.each(this.taskQueue,function(task,title) {\n\t\t// Exclude the task if there's one of the same name in progress\n\t\tif($tw.utils.hop(self.taskInProgress,title)) {\n\t\t\treturn;\n\t\t}\n\t\t// Exclude the task if it is a save and the tiddler has been modified recently, but not hit the fallback time\n\t\tif(task.type === \"save\" && (now - task.lastModificationTime) < self.throttleInterval &&\n\t\t\t(now - task.queueTime) < self.fallbackInterval) {\n\t\t\treturn;\n\t\t}\n\t\t// Exclude the task if it is newer than the current best candidate\n\t\tif(candidateTask && candidateTask.queueTime < task.queueTime) {\n\t\t\treturn;\n\t\t}\n\t\t// Now this is our best candidate\n\t\tcandidateTask = task;\n\t});\n\treturn candidateTask;\n};\n\n/*\nDispatch a task and invoke the callback\n*/\nSyncer.prototype.dispatchTask = function(task,callback) {\n\tvar self = this;\n\tif(task.type === \"save\") {\n\t\tvar changeCount = this.wiki.getChangeCount(task.title),\n\t\t\ttiddler = this.wiki.getTiddler(task.title);\n\t\tthis.logger.log(\"Dispatching 'save' task:\",task.title);\n\t\tif(tiddler) {\n\t\t\tthis.syncadaptor.saveTiddler(tiddler,function(err,adaptorInfo,revision) {\n\t\t\t\tif(err) {\n\t\t\t\t\treturn callback(err);\n\t\t\t\t}\n\t\t\t\t// Adjust the info stored about this tiddler\n\t\t\t\tself.tiddlerInfo[task.title] = {\n\t\t\t\t\tchangeCount: changeCount,\n\t\t\t\t\tadaptorInfo: adaptorInfo,\n\t\t\t\t\trevision: revision\n\t\t\t\t};\n\t\t\t\t// Invoke the callback\n\t\t\t\tcallback(null);\n\t\t\t},{\n\t\t\t\ttiddlerInfo: self.tiddlerInfo[task.title]\n\t\t\t});\n\t\t} else {\n\t\t\tthis.logger.log(\" Not Dispatching 'save' task:\",task.title,\"tiddler does not exist\");\n\t\t\treturn callback(null);\n\t\t}\n\t} else if(task.type === \"load\") {\n\t\t// Load the tiddler\n\t\tthis.logger.log(\"Dispatching 'load' task:\",task.title);\n\t\tthis.syncadaptor.loadTiddler(task.title,function(err,tiddlerFields) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\t// Store the tiddler\n\t\t\tif(tiddlerFields) {\n\t\t\t\tself.storeTiddler(tiddlerFields,true);\n\t\t\t}\n\t\t\t// Invoke the callback\n\t\t\tcallback(null);\n\t\t});\n\t} else if(task.type === \"delete\") {\n\t\t// Delete the tiddler\n\t\tthis.logger.log(\"Dispatching 'delete' task:\",task.title);\n\t\tthis.syncadaptor.deleteTiddler(task.title,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tdelete self.tiddlerInfo[task.title];\n\t\t\t// Invoke the callback\n\t\t\tcallback(null);\n\t\t},{\n\t\t\ttiddlerInfo: self.tiddlerInfo[task.title]\n\t\t});\n\t}\n};\n\nexports.Syncer = Syncer;\n\n})();\n",
            "title": "$:/core/modules/syncer.js",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/tiddler.js": {
            "text": "/*\\\ntitle: $:/core/modules/tiddler.js\ntype: application/javascript\nmodule-type: tiddlermethod\n\nExtension methods for the $tw.Tiddler object (constructor and methods required at boot time are in boot/boot.js)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.hasTag = function(tag) {\n\treturn this.fields.tags && this.fields.tags.indexOf(tag) !== -1;\n};\n\nexports.isPlugin = function() {\n\treturn this.fields.type === \"application/json\" && this.hasField(\"plugin-type\");\n};\n\nexports.isDraft = function() {\n\treturn this.hasField(\"draft.of\");\n};\n\nexports.getFieldString = function(field) {\n\tvar value = this.fields[field];\n\t// Check for a missing field\n\tif(value === undefined || value === null) {\n\t\treturn \"\";\n\t}\n\t// Parse the field with the associated module (if any)\n\tvar fieldModule = $tw.Tiddler.fieldModules[field];\n\tif(fieldModule && fieldModule.stringify) {\n\t\treturn fieldModule.stringify.call(this,value);\n\t} else {\n\t\treturn value.toString();\n\t}\n};\n\n/*\nGet all the fields as a hashmap of strings. Options:\n\texclude: an array of field names to exclude\n*/\nexports.getFieldStrings = function(options) {\n\toptions = options || {};\n\tvar exclude = options.exclude || [];\n\tvar fields = {};\n\tfor(var field in this.fields) {\n\t\tif($tw.utils.hop(this.fields,field)) {\n\t\t\tif(exclude.indexOf(field) === -1) {\n\t\t\t\tfields[field] = this.getFieldString(field);\n\t\t\t}\n\t\t}\n\t}\n\treturn fields;\n};\n\n/*\nGet all the fields as a name:value block. Options:\n\texclude: an array of field names to exclude\n*/\nexports.getFieldStringBlock = function(options) {\n\toptions = options || {};\n\tvar exclude = options.exclude || [];\n\tvar fields = [];\n\tfor(var field in this.fields) {\n\t\tif($tw.utils.hop(this.fields,field)) {\n\t\t\tif(exclude.indexOf(field) === -1) {\n\t\t\t\tfields.push(field + \": \" + this.getFieldString(field));\n\t\t\t}\n\t\t}\n\t}\n\treturn fields.join(\"\\n\");\n};\n\n/*\nCompare two tiddlers for equality\ntiddler: the tiddler to compare\nexcludeFields: array of field names to exclude from the comparison\n*/\nexports.isEqual = function(tiddler,excludeFields) {\n\tif(!(tiddler instanceof $tw.Tiddler)) {\n\t\treturn false;\n\t}\n\texcludeFields = excludeFields || [];\n\tvar self = this,\n\t\tdifferences = []; // Fields that have differences\n\t// Add to the differences array\n\tfunction addDifference(fieldName) {\n\t\t// Check for this field being excluded\n\t\tif(excludeFields.indexOf(fieldName) === -1) {\n\t\t\t// Save the field as a difference\n\t\t\t$tw.utils.pushTop(differences,fieldName);\n\t\t}\n\t}\n\t// Returns true if the two values of this field are equal\n\tfunction isFieldValueEqual(fieldName) {\n\t\tvar valueA = self.fields[fieldName],\n\t\t\tvalueB = tiddler.fields[fieldName];\n\t\t// Check for identical string values\n\t\tif(typeof(valueA) === \"string\" && typeof(valueB) === \"string\" && valueA === valueB) {\n\t\t\treturn true;\n\t\t}\n\t\t// Check for identical array values\n\t\tif($tw.utils.isArray(valueA) && $tw.utils.isArray(valueB) && $tw.utils.isArrayEqual(valueA,valueB)) {\n\t\t\treturn true;\n\t\t}\n\t\t// Otherwise the fields must be different\n\t\treturn false;\n\t}\n\t// Compare our fields\n\tfor(var fieldName in this.fields) {\n\t\tif(!isFieldValueEqual(fieldName)) {\n\t\t\taddDifference(fieldName);\n\t\t}\n\t}\n\t// There's a difference for every field in the other tiddler that we don't have\n\tfor(fieldName in tiddler.fields) {\n\t\tif(!(fieldName in this.fields)) {\n\t\t\taddDifference(fieldName);\n\t\t}\n\t}\n\t// Return whether there were any differences\n\treturn differences.length === 0;\n};\n\nexports.getFieldDay = function(field) {\n\tif(this.cache && this.cache.day && $tw.utils.hop(this.cache.day,field) ) {\n\t\treturn this.cache.day[field];\n\t}\n\tvar day = \"\";\n\tif(this.fields[field]) {\n\t\tday = (new Date($tw.utils.parseDate(this.fields[field]))).setHours(0,0,0,0);\n\t}\n\tthis.cache.day = this.cache.day || {};\n\tthis.cache.day[field] = day;\n\treturn day;\n};\n\n})();\n",
            "title": "$:/core/modules/tiddler.js",
            "type": "application/javascript",
            "module-type": "tiddlermethod"
        },
        "$:/core/modules/upgraders/plugins.js": {
            "text": "/*\\\ntitle: $:/core/modules/upgraders/plugins.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that checks that plugins are newer than any already installed version\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar UPGRADE_LIBRARY_TITLE = \"$:/UpgradeLibrary\";\n\nvar BLOCKED_PLUGINS = {\n\t\"$:/themes/tiddlywiki/stickytitles\": {\n\t\tversions: [\"*\"]\n\t},\n\t\"$:/plugins/tiddlywiki/fullscreen\": {\n\t\tversions: [\"*\"]\n\t}\n};\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {},\n\t\tupgradeLibrary,\n\t\tgetLibraryTiddler = function(title) {\n\t\t\tif(!upgradeLibrary) {\n\t\t\t\tupgradeLibrary = wiki.getTiddlerData(UPGRADE_LIBRARY_TITLE,{});\n\t\t\t\tupgradeLibrary.tiddlers = upgradeLibrary.tiddlers || {};\n\t\t\t}\n\t\t\treturn upgradeLibrary.tiddlers[title];\n\t\t};\n\n\t// Go through all the incoming tiddlers\n\t$tw.utils.each(titles,function(title) {\n\t\tvar incomingTiddler = tiddlers[title];\n\t\t// Check if we're dealing with a plugin\n\t\tif(incomingTiddler && incomingTiddler[\"plugin-type\"] && incomingTiddler.version) {\n\t\t\t// Upgrade the incoming plugin if it is in the upgrade library\n\t\t\tvar libraryTiddler = getLibraryTiddler(title);\n\t\t\tif(libraryTiddler && libraryTiddler[\"plugin-type\"] && libraryTiddler.version) {\n\t\t\t\ttiddlers[title] = libraryTiddler;\n\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/Plugins/Upgraded\",{variables: {incoming: incomingTiddler.version, upgraded: libraryTiddler.version}});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Suppress the incoming plugin if it is older than the currently installed one\n\t\t\tvar existingTiddler = wiki.getTiddler(title);\n\t\t\tif(existingTiddler && existingTiddler.hasField(\"plugin-type\") && existingTiddler.hasField(\"version\")) {\n\t\t\t\t// Reject the incoming plugin by blanking all its fields\n\t\t\t\tif($tw.utils.checkVersions(existingTiddler.fields.version,incomingTiddler.version)) {\n\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/Plugins/Suppressed/Version\",{variables: {incoming: incomingTiddler.version, existing: existingTiddler.fields.version}});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif(incomingTiddler && incomingTiddler[\"plugin-type\"]) {\n\t\t\t// Check whether the plugin is on the blocked list\n\t\t\tvar blockInfo = BLOCKED_PLUGINS[title];\n\t\t\tif(blockInfo) {\n\t\t\t\tif(blockInfo.versions.indexOf(\"*\") !== -1 || (incomingTiddler.version && blockInfo.versions.indexOf(incomingTiddler.version) !== -1)) {\n\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/Plugins/Suppressed/Incompatible\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn messages;\n};\n\n})();\n",
            "title": "$:/core/modules/upgraders/plugins.js",
            "type": "application/javascript",
            "module-type": "upgrader"
        },
        "$:/core/modules/upgraders/system.js": {
            "text": "/*\\\ntitle: $:/core/modules/upgraders/system.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that suppresses certain system tiddlers that shouldn't be imported\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DONT_IMPORT_LIST = [\"$:/StoryList\",\"$:/HistoryList\"],\n\tDONT_IMPORT_PREFIX_LIST = [\"$:/temp/\",\"$:/state/\"];\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {};\n\t// Check for tiddlers on our list\n\t$tw.utils.each(titles,function(title) {\n\t\tif(DONT_IMPORT_LIST.indexOf(title) !== -1) {\n\t\t\ttiddlers[title] = Object.create(null);\n\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/System/Suppressed\");\n\t\t} else {\n\t\t\tfor(var t=0; t<DONT_IMPORT_PREFIX_LIST.length; t++) {\n\t\t\t\tvar prefix = DONT_IMPORT_PREFIX_LIST[t];\n\t\t\t\tif(title.substr(0,prefix.length) === prefix) {\n\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/State/Suppressed\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn messages;\n};\n\n})();\n",
            "title": "$:/core/modules/upgraders/system.js",
            "type": "application/javascript",
            "module-type": "upgrader"
        },
        "$:/core/modules/upgraders/themetweaks.js": {
            "text": "/*\\\ntitle: $:/core/modules/upgraders/themetweaks.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that handles the change in theme tweak storage introduced in 5.0.14-beta.\n\nPreviously, theme tweaks were stored in two data tiddlers:\n\n* $:/themes/tiddlywiki/vanilla/metrics\n* $:/themes/tiddlywiki/vanilla/settings\n\nNow, each tweak is stored in its own separate tiddler.\n\nThis upgrader copies any values from the old format to the new. The old data tiddlers are not deleted in case they have been used to store additional indexes.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar MAPPINGS = {\n\t\"$:/themes/tiddlywiki/vanilla/metrics\": {\n\t\t\"fontsize\": \"$:/themes/tiddlywiki/vanilla/metrics/fontsize\",\n\t\t\"lineheight\": \"$:/themes/tiddlywiki/vanilla/metrics/lineheight\",\n\t\t\"storyleft\": \"$:/themes/tiddlywiki/vanilla/metrics/storyleft\",\n\t\t\"storytop\": \"$:/themes/tiddlywiki/vanilla/metrics/storytop\",\n\t\t\"storyright\": \"$:/themes/tiddlywiki/vanilla/metrics/storyright\",\n\t\t\"storywidth\": \"$:/themes/tiddlywiki/vanilla/metrics/storywidth\",\n\t\t\"tiddlerwidth\": \"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\"\n\t},\n\t\"$:/themes/tiddlywiki/vanilla/settings\": {\n\t\t\"fontfamily\": \"$:/themes/tiddlywiki/vanilla/settings/fontfamily\"\n\t}\n};\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {};\n\t// Check for tiddlers on our list\n\t$tw.utils.each(titles,function(title) {\n\t\tvar mapping = MAPPINGS[title];\n\t\tif(mapping) {\n\t\t\tvar tiddler = new $tw.Tiddler(tiddlers[title]),\n\t\t\t\ttiddlerData = wiki.getTiddlerDataCached(tiddler,{});\n\t\t\tfor(var index in mapping) {\n\t\t\t\tvar mappedTitle = mapping[index];\n\t\t\t\tif(!tiddlers[mappedTitle] || tiddlers[mappedTitle].title !== mappedTitle) {\n\t\t\t\t\ttiddlers[mappedTitle] = {\n\t\t\t\t\t\ttitle: mappedTitle,\n\t\t\t\t\t\ttext: tiddlerData[index]\n\t\t\t\t\t};\n\t\t\t\t\tmessages[mappedTitle] = $tw.language.getString(\"Import/Upgrader/ThemeTweaks/Created\",{variables: {\n\t\t\t\t\t\tfrom: title + \"##\" + index\n\t\t\t\t\t}});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn messages;\n};\n\n})();\n",
            "title": "$:/core/modules/upgraders/themetweaks.js",
            "type": "application/javascript",
            "module-type": "upgrader"
        },
        "$:/core/modules/utils/crypto.js": {
            "text": "/*\\\ntitle: $:/core/modules/utils/crypto.js\ntype: application/javascript\nmodule-type: utils\n\nUtility functions related to crypto.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nLook for an encrypted store area in the text of a TiddlyWiki file\n*/\nexports.extractEncryptedStoreArea = function(text) {\n\tvar encryptedStoreAreaStartMarker = \"<pre id=\\\"encryptedStoreArea\\\" type=\\\"text/plain\\\" style=\\\"display:none;\\\">\",\n\t\tencryptedStoreAreaStart = text.indexOf(encryptedStoreAreaStartMarker);\n\tif(encryptedStoreAreaStart !== -1) {\n\t\tvar encryptedStoreAreaEnd = text.indexOf(\"</pre>\",encryptedStoreAreaStart);\n\t\tif(encryptedStoreAreaEnd !== -1) {\n\t\t\treturn $tw.utils.htmlDecode(text.substring(encryptedStoreAreaStart + encryptedStoreAreaStartMarker.length,encryptedStoreAreaEnd-1));\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nAttempt to extract the tiddlers from an encrypted store area using the current password. If the password is not provided then the password in the password store will be used\n*/\nexports.decryptStoreArea = function(encryptedStoreArea,password) {\n\tvar decryptedText = $tw.crypto.decrypt(encryptedStoreArea,password);\n\tif(decryptedText) {\n\t\tvar json = JSON.parse(decryptedText),\n\t\t\ttiddlers = [];\n\t\tfor(var title in json) {\n\t\t\tif(title !== \"$:/isEncrypted\") {\n\t\t\t\ttiddlers.push(json[title]);\n\t\t\t}\n\t\t}\n\t\treturn tiddlers;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n\n/*\nAttempt to extract the tiddlers from an encrypted store area using the current password. If that fails, the user is prompted for a password.\nencryptedStoreArea: text of the TiddlyWiki encrypted store area\ncallback: function(tiddlers) called with the array of decrypted tiddlers\n\nThe following configuration settings are supported:\n\n$tw.config.usePasswordVault: causes any password entered by the user to also be put into the system password vault\n*/\nexports.decryptStoreAreaInteractive = function(encryptedStoreArea,callback,options) {\n\t// Try to decrypt with the current password\n\tvar tiddlers = $tw.utils.decryptStoreArea(encryptedStoreArea);\n\tif(tiddlers) {\n\t\tcallback(tiddlers);\n\t} else {\n\t\t// Prompt for a new password and keep trying\n\t\t$tw.passwordPrompt.createPrompt({\n\t\t\tserviceName: \"Enter a password to decrypt the imported TiddlyWiki\",\n\t\t\tnoUserName: true,\n\t\t\tcanCancel: true,\n\t\t\tsubmitText: \"Decrypt\",\n\t\t\tcallback: function(data) {\n\t\t\t\t// Exit if the user cancelled\n\t\t\t\tif(!data) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t// Attempt to decrypt the tiddlers\n\t\t\t\tvar tiddlers = $tw.utils.decryptStoreArea(encryptedStoreArea,data.password);\n\t\t\t\tif(tiddlers) {\n\t\t\t\t\tif($tw.config.usePasswordVault) {\n\t\t\t\t\t\t$tw.crypto.setPassword(data.password);\n\t\t\t\t\t}\n\t\t\t\t\tcallback(tiddlers);\n\t\t\t\t\t// Exit and remove the password prompt\n\t\t\t\t\treturn true;\n\t\t\t\t} else {\n\t\t\t\t\t// We didn't decrypt everything, so continue to prompt for password\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\n})();\n",
            "title": "$:/core/modules/utils/crypto.js",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/animations/slide.js": {
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/animations/slide.js\ntype: application/javascript\nmodule-type: animation\n\nA simple slide animation that varies the height of the element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction slideOpen(domNode,options) {\n\toptions = options || {};\n\tvar duration = options.duration || $tw.utils.getAnimationDuration();\n\t// Get the current height of the domNode\n\tvar computedStyle = window.getComputedStyle(domNode),\n\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\tcurrPaddingBottom = parseInt(computedStyle.paddingBottom,10),\n\t\tcurrPaddingTop = parseInt(computedStyle.paddingTop,10),\n\t\tcurrHeight = domNode.offsetHeight;\n\t// Reset the margin once the transition is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(domNode,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: \"\"},\n\t\t\t{marginTop: \"\"},\n\t\t\t{paddingBottom: \"\"},\n\t\t\t{paddingTop: \"\"},\n\t\t\t{height: \"auto\"},\n\t\t\t{opacity: \"\"}\n\t\t]);\n\t\tif(options.callback) {\n\t\t\toptions.callback();\n\t\t}\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"none\"},\n\t\t{marginTop: \"0px\"},\n\t\t{marginBottom: \"0px\"},\n\t\t{paddingTop: \"0px\"},\n\t\t{paddingBottom: \"0px\"},\n\t\t{height: \"0px\"},\n\t\t{opacity: \"0\"}\n\t]);\n\t$tw.utils.forceLayout(domNode);\n\t// Transition to the final position\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"margin-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"height \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t{marginTop: currMarginTop + \"px\"},\n\t\t{paddingBottom: currPaddingBottom + \"px\"},\n\t\t{paddingTop: currPaddingTop + \"px\"},\n\t\t{height: currHeight + \"px\"},\n\t\t{opacity: \"1\"}\n\t]);\n}\n\nfunction slideClosed(domNode,options) {\n\toptions = options || {};\n\tvar duration = options.duration || $tw.utils.getAnimationDuration(),\n\t\tcurrHeight = domNode.offsetHeight;\n\t// Clear the properties we've set when the animation is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(domNode,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: \"\"},\n\t\t\t{marginTop: \"\"},\n\t\t\t{paddingBottom: \"\"},\n\t\t\t{paddingTop: \"\"},\n\t\t\t{height: \"auto\"},\n\t\t\t{opacity: \"\"}\n\t\t]);\n\t\tif(options.callback) {\n\t\t\toptions.callback();\n\t\t}\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(domNode,[\n\t\t{height: currHeight + \"px\"},\n\t\t{opacity: \"1\"}\n\t]);\n\t$tw.utils.forceLayout(domNode);\n\t// Transition to the final position\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"margin-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"height \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{marginTop: \"0px\"},\n\t\t{marginBottom: \"0px\"},\n\t\t{paddingTop: \"0px\"},\n\t\t{paddingBottom: \"0px\"},\n\t\t{height: \"0px\"},\n\t\t{opacity: \"0\"}\n\t]);\n}\n\nexports.slide = {\n\topen: slideOpen,\n\tclose: slideClosed\n};\n\n})();\n",
            "title": "$:/core/modules/utils/dom/animations/slide.js",
            "type": "application/javascript",
            "module-type": "animation"
        },
        "$:/core/modules/utils/dom/animator.js": {
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/animator.js\ntype: application/javascript\nmodule-type: utils\n\nOrchestrates animations and transitions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction Animator() {\n\t// Get the registered animation modules\n\tthis.animations = {};\n\t$tw.modules.applyMethods(\"animation\",this.animations);\n}\n\nAnimator.prototype.perform = function(type,domNode,options) {\n\toptions = options || {};\n\t// Find an animation that can handle this type\n\tvar chosenAnimation;\n\t$tw.utils.each(this.animations,function(animation,name) {\n\t\tif($tw.utils.hop(animation,type)) {\n\t\t\tchosenAnimation = animation[type];\n\t\t}\n\t});\n\tif(!chosenAnimation) {\n\t\tchosenAnimation = function(domNode,options) {\n\t\t\tif(options.callback) {\n\t\t\t\toptions.callback();\n\t\t\t}\n\t\t};\n\t}\n\t// Call the animation\n\tchosenAnimation(domNode,options);\n};\n\nexports.Animator = Animator;\n\n})();\n",
            "title": "$:/core/modules/utils/dom/animator.js",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/browser.js": {
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/browser.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser feature detection\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSet style properties of an element\n\telement: dom node\n\tstyles: ordered array of {name: value} pairs\n*/\nexports.setStyle = function(element,styles) {\n\tif(element.nodeType === 1) { // Element.ELEMENT_NODE\n\t\tfor(var t=0; t<styles.length; t++) {\n\t\t\tfor(var styleName in styles[t]) {\n\t\t\t\telement.style[$tw.utils.convertStyleNameToPropertyName(styleName)] = styles[t][styleName];\n\t\t\t}\n\t\t}\n\t}\n};\n\n/*\nConverts a standard CSS property name into the local browser-specific equivalent. For example:\n\t\"background-color\" --> \"backgroundColor\"\n\t\"transition\" --> \"webkitTransition\"\n*/\n\nvar styleNameCache = {}; // We'll cache the style name conversions\n\nexports.convertStyleNameToPropertyName = function(styleName) {\n\t// Return from the cache if we can\n\tif(styleNameCache[styleName]) {\n\t\treturn styleNameCache[styleName];\n\t}\n\t// Convert it by first removing any hyphens\n\tvar propertyName = $tw.utils.unHyphenateCss(styleName);\n\t// Then check if it needs a prefix\n\tif($tw.browser && document.body.style[propertyName] === undefined) {\n\t\tvar prefixes = [\"O\",\"MS\",\"Moz\",\"webkit\"];\n\t\tfor(var t=0; t<prefixes.length; t++) {\n\t\t\tvar prefixedName = prefixes[t] + propertyName.substr(0,1).toUpperCase() + propertyName.substr(1);\n\t\t\tif(document.body.style[prefixedName] !== undefined) {\n\t\t\t\tpropertyName = prefixedName;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\t// Put it in the cache too\n\tstyleNameCache[styleName] = propertyName;\n\treturn propertyName;\n};\n\n/*\nConverts a JS format CSS property name back into the dashed form used in CSS declarations. For example:\n\t\"backgroundColor\" --> \"background-color\"\n\t\"webkitTransform\" --> \"-webkit-transform\"\n*/\nexports.convertPropertyNameToStyleName = function(propertyName) {\n\t// Rehyphenate the name\n\tvar styleName = $tw.utils.hyphenateCss(propertyName);\n\t// If there's a webkit prefix, add a dash (other browsers have uppercase prefixes, and so get the dash automatically)\n\tif(styleName.indexOf(\"webkit\") === 0) {\n\t\tstyleName = \"-\" + styleName;\n\t} else if(styleName.indexOf(\"-m-s\") === 0) {\n\t\tstyleName = \"-ms\" + styleName.substr(4);\n\t}\n\treturn styleName;\n};\n\n/*\nRound trip a stylename to a property name and back again. For example:\n\t\"transform\" --> \"webkitTransform\" --> \"-webkit-transform\"\n*/\nexports.roundTripPropertyName = function(propertyName) {\n\treturn $tw.utils.convertPropertyNameToStyleName($tw.utils.convertStyleNameToPropertyName(propertyName));\n};\n\n/*\nConverts a standard event name into the local browser specific equivalent. For example:\n\t\"animationEnd\" --> \"webkitAnimationEnd\"\n*/\n\nvar eventNameCache = {}; // We'll cache the conversions\n\nvar eventNameMappings = {\n\t\"transitionEnd\": {\n\t\tcorrespondingCssProperty: \"transition\",\n\t\tmappings: {\n\t\t\ttransition: \"transitionend\",\n\t\t\tOTransition: \"oTransitionEnd\",\n\t\t\tMSTransition: \"msTransitionEnd\",\n\t\t\tMozTransition: \"transitionend\",\n\t\t\twebkitTransition: \"webkitTransitionEnd\"\n\t\t}\n\t},\n\t\"animationEnd\": {\n\t\tcorrespondingCssProperty: \"animation\",\n\t\tmappings: {\n\t\t\tanimation: \"animationend\",\n\t\t\tOAnimation: \"oAnimationEnd\",\n\t\t\tMSAnimation: \"msAnimationEnd\",\n\t\t\tMozAnimation: \"animationend\",\n\t\t\twebkitAnimation: \"webkitAnimationEnd\"\n\t\t}\n\t}\n};\n\nexports.convertEventName = function(eventName) {\n\tif(eventNameCache[eventName]) {\n\t\treturn eventNameCache[eventName];\n\t}\n\tvar newEventName = eventName,\n\t\tmappings = eventNameMappings[eventName];\n\tif(mappings) {\n\t\tvar convertedProperty = $tw.utils.convertStyleNameToPropertyName(mappings.correspondingCssProperty);\n\t\tif(mappings.mappings[convertedProperty]) {\n\t\t\tnewEventName = mappings.mappings[convertedProperty];\n\t\t}\n\t}\n\t// Put it in the cache too\n\teventNameCache[eventName] = newEventName;\n\treturn newEventName;\n};\n\n/*\nReturn the names of the fullscreen APIs\n*/\nexports.getFullScreenApis = function() {\n\tvar d = document,\n\t\tdb = d.body,\n\t\tresult = {\n\t\t\"_requestFullscreen\": db.webkitRequestFullscreen !== undefined ? \"webkitRequestFullscreen\" :\n\t\t\t\t\t\t\tdb.mozRequestFullScreen !== undefined ? \"mozRequestFullScreen\" :\n\t\t\t\t\t\t\tdb.msRequestFullscreen !== undefined ? \"msRequestFullscreen\" :\n\t\t\t\t\t\t\tdb.requestFullscreen !== undefined ? \"requestFullscreen\" : \"\",\n\t\t\"_exitFullscreen\": d.webkitExitFullscreen !== undefined ? \"webkitExitFullscreen\" :\n\t\t\t\t\t\t\td.mozCancelFullScreen !== undefined ? \"mozCancelFullScreen\" :\n\t\t\t\t\t\t\td.msExitFullscreen !== undefined ? \"msExitFullscreen\" :\n\t\t\t\t\t\t\td.exitFullscreen !== undefined ? \"exitFullscreen\" : \"\",\n\t\t\"_fullscreenElement\": d.webkitFullscreenElement !== undefined ? \"webkitFullscreenElement\" :\n\t\t\t\t\t\t\td.mozFullScreenElement !== undefined ? \"mozFullScreenElement\" :\n\t\t\t\t\t\t\td.msFullscreenElement !== undefined ? \"msFullscreenElement\" :\n\t\t\t\t\t\t\td.fullscreenElement !== undefined ? \"fullscreenElement\" : \"\",\n\t\t\"_fullscreenChange\": d.webkitFullscreenElement !== undefined ? \"webkitfullscreenchange\" :\n\t\t\t\t\t\t\td.mozFullScreenElement !== undefined ? \"mozfullscreenchange\" :\n\t\t\t\t\t\t\td.msFullscreenElement !== undefined ? \"MSFullscreenChange\" :\n\t\t\t\t\t\t\td.fullscreenElement !== undefined ? \"fullscreenchange\" : \"\"\n\t};\n\tif(!result._requestFullscreen || !result._exitFullscreen || !result._fullscreenElement || !result._fullscreenChange) {\n\t\treturn null;\n\t} else {\n\t\treturn result;\n\t}\n};\n\n})();\n",
            "title": "$:/core/modules/utils/dom/browser.js",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/csscolorparser.js": {
            "text": "// (c) Dean McNamee <dean@gmail.com>, 2012.\n//\n// https://github.com/deanm/css-color-parser-js\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n// IN THE SOFTWARE.\n\n// http://www.w3.org/TR/css3-color/\nvar kCSSColorTable = {\n  \"transparent\": [0,0,0,0], \"aliceblue\": [240,248,255,1],\n  \"antiquewhite\": [250,235,215,1], \"aqua\": [0,255,255,1],\n  \"aquamarine\": [127,255,212,1], \"azure\": [240,255,255,1],\n  \"beige\": [245,245,220,1], \"bisque\": [255,228,196,1],\n  \"black\": [0,0,0,1], \"blanchedalmond\": [255,235,205,1],\n  \"blue\": [0,0,255,1], \"blueviolet\": [138,43,226,1],\n  \"brown\": [165,42,42,1], \"burlywood\": [222,184,135,1],\n  \"cadetblue\": [95,158,160,1], \"chartreuse\": [127,255,0,1],\n  \"chocolate\": [210,105,30,1], \"coral\": [255,127,80,1],\n  \"cornflowerblue\": [100,149,237,1], \"cornsilk\": [255,248,220,1],\n  \"crimson\": [220,20,60,1], \"cyan\": [0,255,255,1],\n  \"darkblue\": [0,0,139,1], \"darkcyan\": [0,139,139,1],\n  \"darkgoldenrod\": [184,134,11,1], \"darkgray\": [169,169,169,1],\n  \"darkgreen\": [0,100,0,1], \"darkgrey\": [169,169,169,1],\n  \"darkkhaki\": [189,183,107,1], \"darkmagenta\": [139,0,139,1],\n  \"darkolivegreen\": [85,107,47,1], \"darkorange\": [255,140,0,1],\n  \"darkorchid\": [153,50,204,1], \"darkred\": [139,0,0,1],\n  \"darksalmon\": [233,150,122,1], \"darkseagreen\": [143,188,143,1],\n  \"darkslateblue\": [72,61,139,1], \"darkslategray\": [47,79,79,1],\n  \"darkslategrey\": [47,79,79,1], \"darkturquoise\": [0,206,209,1],\n  \"darkviolet\": [148,0,211,1], \"deeppink\": [255,20,147,1],\n  \"deepskyblue\": [0,191,255,1], \"dimgray\": [105,105,105,1],\n  \"dimgrey\": [105,105,105,1], \"dodgerblue\": [30,144,255,1],\n  \"firebrick\": [178,34,34,1], \"floralwhite\": [255,250,240,1],\n  \"forestgreen\": [34,139,34,1], \"fuchsia\": [255,0,255,1],\n  \"gainsboro\": [220,220,220,1], \"ghostwhite\": [248,248,255,1],\n  \"gold\": [255,215,0,1], \"goldenrod\": [218,165,32,1],\n  \"gray\": [128,128,128,1], \"green\": [0,128,0,1],\n  \"greenyellow\": [173,255,47,1], \"grey\": [128,128,128,1],\n  \"honeydew\": [240,255,240,1], \"hotpink\": [255,105,180,1],\n  \"indianred\": [205,92,92,1], \"indigo\": [75,0,130,1],\n  \"ivory\": [255,255,240,1], \"khaki\": [240,230,140,1],\n  \"lavender\": [230,230,250,1], \"lavenderblush\": [255,240,245,1],\n  \"lawngreen\": [124,252,0,1], \"lemonchiffon\": [255,250,205,1],\n  \"lightblue\": [173,216,230,1], \"lightcoral\": [240,128,128,1],\n  \"lightcyan\": [224,255,255,1], \"lightgoldenrodyellow\": [250,250,210,1],\n  \"lightgray\": [211,211,211,1], \"lightgreen\": [144,238,144,1],\n  \"lightgrey\": [211,211,211,1], \"lightpink\": [255,182,193,1],\n  \"lightsalmon\": [255,160,122,1], \"lightseagreen\": [32,178,170,1],\n  \"lightskyblue\": [135,206,250,1], \"lightslategray\": [119,136,153,1],\n  \"lightslategrey\": [119,136,153,1], \"lightsteelblue\": [176,196,222,1],\n  \"lightyellow\": [255,255,224,1], \"lime\": [0,255,0,1],\n  \"limegreen\": [50,205,50,1], \"linen\": [250,240,230,1],\n  \"magenta\": [255,0,255,1], \"maroon\": [128,0,0,1],\n  \"mediumaquamarine\": [102,205,170,1], \"mediumblue\": [0,0,205,1],\n  \"mediumorchid\": [186,85,211,1], \"mediumpurple\": [147,112,219,1],\n  \"mediumseagreen\": [60,179,113,1], \"mediumslateblue\": [123,104,238,1],\n  \"mediumspringgreen\": [0,250,154,1], \"mediumturquoise\": [72,209,204,1],\n  \"mediumvioletred\": [199,21,133,1], \"midnightblue\": [25,25,112,1],\n  \"mintcream\": [245,255,250,1], \"mistyrose\": [255,228,225,1],\n  \"moccasin\": [255,228,181,1], \"navajowhite\": [255,222,173,1],\n  \"navy\": [0,0,128,1], \"oldlace\": [253,245,230,1],\n  \"olive\": [128,128,0,1], \"olivedrab\": [107,142,35,1],\n  \"orange\": [255,165,0,1], \"orangered\": [255,69,0,1],\n  \"orchid\": [218,112,214,1], \"palegoldenrod\": [238,232,170,1],\n  \"palegreen\": [152,251,152,1], \"paleturquoise\": [175,238,238,1],\n  \"palevioletred\": [219,112,147,1], \"papayawhip\": [255,239,213,1],\n  \"peachpuff\": [255,218,185,1], \"peru\": [205,133,63,1],\n  \"pink\": [255,192,203,1], \"plum\": [221,160,221,1],\n  \"powderblue\": [176,224,230,1], \"purple\": [128,0,128,1],\n  \"red\": [255,0,0,1], \"rosybrown\": [188,143,143,1],\n  \"royalblue\": [65,105,225,1], \"saddlebrown\": [139,69,19,1],\n  \"salmon\": [250,128,114,1], \"sandybrown\": [244,164,96,1],\n  \"seagreen\": [46,139,87,1], \"seashell\": [255,245,238,1],\n  \"sienna\": [160,82,45,1], \"silver\": [192,192,192,1],\n  \"skyblue\": [135,206,235,1], \"slateblue\": [106,90,205,1],\n  \"slategray\": [112,128,144,1], \"slategrey\": [112,128,144,1],\n  \"snow\": [255,250,250,1], \"springgreen\": [0,255,127,1],\n  \"steelblue\": [70,130,180,1], \"tan\": [210,180,140,1],\n  \"teal\": [0,128,128,1], \"thistle\": [216,191,216,1],\n  \"tomato\": [255,99,71,1], \"turquoise\": [64,224,208,1],\n  \"violet\": [238,130,238,1], \"wheat\": [245,222,179,1],\n  \"white\": [255,255,255,1], \"whitesmoke\": [245,245,245,1],\n  \"yellow\": [255,255,0,1], \"yellowgreen\": [154,205,50,1]}\n\nfunction clamp_css_byte(i) {  // Clamp to integer 0 .. 255.\n  i = Math.round(i);  // Seems to be what Chrome does (vs truncation).\n  return i < 0 ? 0 : i > 255 ? 255 : i;\n}\n\nfunction clamp_css_float(f) {  // Clamp to float 0.0 .. 1.0.\n  return f < 0 ? 0 : f > 1 ? 1 : f;\n}\n\nfunction parse_css_int(str) {  // int or percentage.\n  if (str[str.length - 1] === '%')\n    return clamp_css_byte(parseFloat(str) / 100 * 255);\n  return clamp_css_byte(parseInt(str));\n}\n\nfunction parse_css_float(str) {  // float or percentage.\n  if (str[str.length - 1] === '%')\n    return clamp_css_float(parseFloat(str) / 100);\n  return clamp_css_float(parseFloat(str));\n}\n\nfunction css_hue_to_rgb(m1, m2, h) {\n  if (h < 0) h += 1;\n  else if (h > 1) h -= 1;\n\n  if (h * 6 < 1) return m1 + (m2 - m1) * h * 6;\n  if (h * 2 < 1) return m2;\n  if (h * 3 < 2) return m1 + (m2 - m1) * (2/3 - h) * 6;\n  return m1;\n}\n\nfunction parseCSSColor(css_str) {\n  // Remove all whitespace, not compliant, but should just be more accepting.\n  var str = css_str.replace(/ /g, '').toLowerCase();\n\n  // Color keywords (and transparent) lookup.\n  if (str in kCSSColorTable) return kCSSColorTable[str].slice();  // dup.\n\n  // #abc and #abc123 syntax.\n  if (str[0] === '#') {\n    if (str.length === 4) {\n      var iv = parseInt(str.substr(1), 16);  // TODO(deanm): Stricter parsing.\n      if (!(iv >= 0 && iv <= 0xfff)) return null;  // Covers NaN.\n      return [((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8),\n              (iv & 0xf0) | ((iv & 0xf0) >> 4),\n              (iv & 0xf) | ((iv & 0xf) << 4),\n              1];\n    } else if (str.length === 7) {\n      var iv = parseInt(str.substr(1), 16);  // TODO(deanm): Stricter parsing.\n      if (!(iv >= 0 && iv <= 0xffffff)) return null;  // Covers NaN.\n      return [(iv & 0xff0000) >> 16,\n              (iv & 0xff00) >> 8,\n              iv & 0xff,\n              1];\n    }\n\n    return null;\n  }\n\n  var op = str.indexOf('('), ep = str.indexOf(')');\n  if (op !== -1 && ep + 1 === str.length) {\n    var fname = str.substr(0, op);\n    var params = str.substr(op+1, ep-(op+1)).split(',');\n    var alpha = 1;  // To allow case fallthrough.\n    switch (fname) {\n      case 'rgba':\n        if (params.length !== 4) return null;\n        alpha = parse_css_float(params.pop());\n        // Fall through.\n      case 'rgb':\n        if (params.length !== 3) return null;\n        return [parse_css_int(params[0]),\n                parse_css_int(params[1]),\n                parse_css_int(params[2]),\n                alpha];\n      case 'hsla':\n        if (params.length !== 4) return null;\n        alpha = parse_css_float(params.pop());\n        // Fall through.\n      case 'hsl':\n        if (params.length !== 3) return null;\n        var h = (((parseFloat(params[0]) % 360) + 360) % 360) / 360;  // 0 .. 1\n        // NOTE(deanm): According to the CSS spec s/l should only be\n        // percentages, but we don't bother and let float or percentage.\n        var s = parse_css_float(params[1]);\n        var l = parse_css_float(params[2]);\n        var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n        var m1 = l * 2 - m2;\n        return [clamp_css_byte(css_hue_to_rgb(m1, m2, h+1/3) * 255),\n                clamp_css_byte(css_hue_to_rgb(m1, m2, h) * 255),\n                clamp_css_byte(css_hue_to_rgb(m1, m2, h-1/3) * 255),\n                alpha];\n      default:\n        return null;\n    }\n  }\n\n  return null;\n}\n\ntry { exports.parseCSSColor = parseCSSColor } catch(e) { }\n",
            "title": "$:/core/modules/utils/dom/csscolorparser.js",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom.js": {
            "text": "/*\\\ntitle: $:/core/modules/utils/dom.js\ntype: application/javascript\nmodule-type: utils\n\nVarious static DOM-related utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nDetermines whether element 'a' contains element 'b'\nCode thanks to John Resig, http://ejohn.org/blog/comparing-document-position/\n*/\nexports.domContains = function(a,b) {\n\treturn a.contains ?\n\t\ta !== b && a.contains(b) :\n\t\t!!(a.compareDocumentPosition(b) & 16);\n};\n\nexports.removeChildren = function(node) {\n\twhile(node.hasChildNodes()) {\n\t\tnode.removeChild(node.firstChild);\n\t}\n};\n\nexports.hasClass = function(el,className) {\n\treturn el && el.className && el.className.toString().split(\" \").indexOf(className) !== -1;\n};\n\nexports.addClass = function(el,className) {\n\tvar c = el.className.split(\" \");\n\tif(c.indexOf(className) === -1) {\n\t\tc.push(className);\n\t}\n\tel.className = c.join(\" \");\n};\n\nexports.removeClass = function(el,className) {\n\tvar c = el.className.split(\" \"),\n\t\tp = c.indexOf(className);\n\tif(p !== -1) {\n\t\tc.splice(p,1);\n\t\tel.className = c.join(\" \");\n\t}\n};\n\nexports.toggleClass = function(el,className,status) {\n\tif(status === undefined) {\n\t\tstatus = !exports.hasClass(el,className);\n\t}\n\tif(status) {\n\t\texports.addClass(el,className);\n\t} else {\n\t\texports.removeClass(el,className);\n\t}\n};\n\n/*\nGet the first parent element that has scrollbars or use the body as fallback.\n*/\nexports.getScrollContainer = function(el) {\n\tvar doc = el.ownerDocument;\n\twhile(el.parentNode) {\t\n\t\tel = el.parentNode;\n\t\tif(el.scrollTop) {\n\t\t\treturn el;\n\t\t}\n\t}\n\treturn doc.body;\n};\n\n/*\nGet the scroll position of the viewport\nReturns:\n\t{\n\t\tx: horizontal scroll position in pixels,\n\t\ty: vertical scroll position in pixels\n\t}\n*/\nexports.getScrollPosition = function() {\n\tif(\"scrollX\" in window) {\n\t\treturn {x: window.scrollX, y: window.scrollY};\n\t} else {\n\t\treturn {x: document.documentElement.scrollLeft, y: document.documentElement.scrollTop};\n\t}\n};\n\n/*\nAdjust the height of a textarea to fit its content, preserving scroll position, and return the height\n*/\nexports.resizeTextAreaToFit = function(domNode,minHeight) {\n\t// Get the scroll container and register the current scroll position\n\tvar container = $tw.utils.getScrollContainer(domNode),\n\t\tscrollTop = container.scrollTop;\n    // Measure the specified minimum height\n\tdomNode.style.height = minHeight;\n\tvar measuredHeight = domNode.offsetHeight;\n\t// Set its height to auto so that it snaps to the correct height\n\tdomNode.style.height = \"auto\";\n\t// Calculate the revised height\n\tvar newHeight = Math.max(domNode.scrollHeight + domNode.offsetHeight - domNode.clientHeight,measuredHeight);\n\t// Only try to change the height if it has changed\n\tif(newHeight !== domNode.offsetHeight) {\n\t\tdomNode.style.height = newHeight + \"px\";\n\t\t// Make sure that the dimensions of the textarea are recalculated\n\t\t$tw.utils.forceLayout(domNode);\n\t\t// Set the container to the position we registered at the beginning\n\t\tcontainer.scrollTop = scrollTop;\n\t}\n\treturn newHeight;\n};\n\n/*\nGets the bounding rectangle of an element in absolute page coordinates\n*/\nexports.getBoundingPageRect = function(element) {\n\tvar scrollPos = $tw.utils.getScrollPosition(),\n\t\tclientRect = element.getBoundingClientRect();\n\treturn {\n\t\tleft: clientRect.left + scrollPos.x,\n\t\twidth: clientRect.width,\n\t\tright: clientRect.right + scrollPos.x,\n\t\ttop: clientRect.top + scrollPos.y,\n\t\theight: clientRect.height,\n\t\tbottom: clientRect.bottom + scrollPos.y\n\t};\n};\n\n/*\nSaves a named password in the browser\n*/\nexports.savePassword = function(name,password) {\n\ttry {\n\t\tif(window.localStorage) {\n\t\t\tlocalStorage.setItem(\"tw5-password-\" + name,password);\n\t\t}\n\t} catch(e) {\n\t}\n};\n\n/*\nRetrieve a named password from the browser\n*/\nexports.getPassword = function(name) {\n\ttry {\n\t\treturn window.localStorage ? localStorage.getItem(\"tw5-password-\" + name) : \"\";\n\t} catch(e) {\n\t\treturn \"\";\n\t}\n};\n\n/*\nForce layout of a dom node and its descendents\n*/\nexports.forceLayout = function(element) {\n\tvar dummy = element.offsetWidth;\n};\n\n/*\nPulse an element for debugging purposes\n*/\nexports.pulseElement = function(element) {\n\t// Event handler to remove the class at the end\n\telement.addEventListener($tw.browser.animationEnd,function handler(event) {\n\t\telement.removeEventListener($tw.browser.animationEnd,handler,false);\n\t\t$tw.utils.removeClass(element,\"pulse\");\n\t},false);\n\t// Apply the pulse class\n\t$tw.utils.removeClass(element,\"pulse\");\n\t$tw.utils.forceLayout(element);\n\t$tw.utils.addClass(element,\"pulse\");\n};\n\n/*\nAttach specified event handlers to a DOM node\ndomNode: where to attach the event handlers\nevents: array of event handlers to be added (see below)\nEach entry in the events array is an object with these properties:\nhandlerFunction: optional event handler function\nhandlerObject: optional event handler object\nhandlerMethod: optionally specifies object handler method name (defaults to `handleEvent`)\n*/\nexports.addEventListeners = function(domNode,events) {\n\t$tw.utils.each(events,function(eventInfo) {\n\t\tvar handler;\n\t\tif(eventInfo.handlerFunction) {\n\t\t\thandler = eventInfo.handlerFunction;\n\t\t} else if(eventInfo.handlerObject) {\n\t\t\tif(eventInfo.handlerMethod) {\n\t\t\t\thandler = function(event) {\n\t\t\t\t\teventInfo.handlerObject[eventInfo.handlerMethod].call(eventInfo.handlerObject,event);\n\t\t\t\t};\t\n\t\t\t} else {\n\t\t\t\thandler = eventInfo.handlerObject;\n\t\t\t}\n\t\t}\n\t\tdomNode.addEventListener(eventInfo.name,handler,false);\n\t});\n};\n\n/*\nGet the computed styles applied to an element as an array of strings of individual CSS properties\n*/\nexports.getComputedStyles = function(domNode) {\n\tvar textAreaStyles = window.getComputedStyle(domNode,null),\n\t\tstyleDefs = [],\n\t\tname;\n\tfor(var t=0; t<textAreaStyles.length; t++) {\n\t\tname = textAreaStyles[t];\n\t\tstyleDefs.push(name + \": \" + textAreaStyles.getPropertyValue(name) + \";\");\n\t}\n\treturn styleDefs;\n};\n\n/*\nApply a set of styles passed as an array of strings of individual CSS properties\n*/\nexports.setStyles = function(domNode,styleDefs) {\n\tdomNode.style.cssText = styleDefs.join(\"\");\n};\n\n/*\nCopy the computed styles from a source element to a destination element\n*/\nexports.copyStyles = function(srcDomNode,dstDomNode) {\n\t$tw.utils.setStyles(dstDomNode,$tw.utils.getComputedStyles(srcDomNode));\n};\n\n})();\n",
            "title": "$:/core/modules/utils/dom.js",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/dragndrop.js": {
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/dragndrop.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser data transfer utilities, used with the clipboard and drag and drop\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOptions:\n\ndomNode: dom node to make draggable\ndragImageType: \"pill\" or \"dom\"\ndragTiddlerFn: optional function to retrieve the title of tiddler to drag\ndragFilterFn: optional function to retreive the filter defining a list of tiddlers to drag\nwidget: widget to use as the contect for the filter\n*/\nexports.makeDraggable = function(options) {\n\tvar dragImageType = options.dragImageType || \"dom\",\n\t\tdragImage,\n\t\tdomNode = options.domNode;\n\t// Make the dom node draggable (not necessary for anchor tags)\n\tif((domNode.tagName || \"\").toLowerCase() !== \"a\") {\n\t\tdomNode.setAttribute(\"draggable\",\"true\");\t\t\n\t}\n\t// Add event handlers\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"dragstart\", handlerFunction: function(event) {\n\t\t\t// Collect the tiddlers being dragged\n\t\t\tvar dragTiddler = options.dragTiddlerFn && options.dragTiddlerFn(),\n\t\t\t\tdragFilter = options.dragFilterFn && options.dragFilterFn(),\n\t\t\t\ttitles = dragTiddler ? [dragTiddler] : [];\n\t\t\tif(dragFilter) {\n\t\t\t\ttitles.push.apply(titles,options.widget.wiki.filterTiddlers(dragFilter,options.widget));\n\t\t\t}\n\t\t\tvar titleString = $tw.utils.stringifyList(titles);\n\t\t\t// Check that we've something to drag\n\t\t\tif(titles.length > 0 && event.target === domNode) {\n\t\t\t\t// Mark the drag in progress\n\t\t\t\t$tw.dragInProgress = domNode;\n\t\t\t\t// Set the dragging class on the element being dragged\n\t\t\t\t$tw.utils.addClass(event.target,\"tc-dragging\");\n\t\t\t\t// Create the drag image elements\n\t\t\t\tdragImage = options.widget.document.createElement(\"div\");\n\t\t\t\tdragImage.className = \"tc-tiddler-dragger\";\n\t\t\t\tvar inner = options.widget.document.createElement(\"div\");\n\t\t\t\tinner.className = \"tc-tiddler-dragger-inner\";\n\t\t\t\tinner.appendChild(options.widget.document.createTextNode(\n\t\t\t\t\ttitles.length === 1 ? \n\t\t\t\t\t\ttitles[0] :\n\t\t\t\t\t\ttitles.length + \" tiddlers\"\n\t\t\t\t));\n\t\t\t\tdragImage.appendChild(inner);\n\t\t\t\toptions.widget.document.body.appendChild(dragImage);\n\t\t\t\t// Set the data transfer properties\n\t\t\t\tvar dataTransfer = event.dataTransfer;\n\t\t\t\t// Set up the image\n\t\t\t\tdataTransfer.effectAllowed = \"all\";\n\t\t\t\tif(dataTransfer.setDragImage) {\n\t\t\t\t\tif(dragImageType === \"pill\") {\n\t\t\t\t\t\tdataTransfer.setDragImage(dragImage.firstChild,-16,-16);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar r = domNode.getBoundingClientRect();\n\t\t\t\t\t\tdataTransfer.setDragImage(domNode,event.clientX-r.left,event.clientY-r.top);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Set up the data transfer\n\t\t\t\tif(dataTransfer.clearData) {\n\t\t\t\t\tdataTransfer.clearData();\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\tvar jsonData = [];\n\t\t\t\tif(titles.length > 1) {\n\t\t\t\t\ttitles.forEach(function(title) {\n\t\t\t\t\t\tjsonData.push(options.widget.wiki.getTiddlerAsJson(title));\n\t\t\t\t\t});\n\t\t\t\t\tjsonData = \"[\" + jsonData.join(\",\") + \"]\";\n\t\t\t\t} else {\n\t\t\t\t\tjsonData = options.widget.wiki.getTiddlerAsJson(titles[0]);\n\t\t\t\t}\n\t\t\t\t// IE doesn't like these content types\n\t\t\t\tif(!$tw.browser.isIE) {\n\t\t\t\t\tdataTransfer.setData(\"text/vnd.tiddler\",jsonData);\n\t\t\t\t\tdataTransfer.setData(\"text/plain\",titleString);\n\t\t\t\t\tdataTransfer.setData(\"text/x-moz-url\",\"data:text/vnd.tiddler,\" + encodeURIComponent(jsonData));\n\t\t\t\t}\n\t\t\t\tdataTransfer.setData(\"URL\",\"data:text/vnd.tiddler,\" + encodeURIComponent(jsonData));\n\t\t\t\tdataTransfer.setData(\"Text\",titleString);\n\t\t\t\tevent.stopPropagation();\n\t\t\t}\n\t\t\treturn false;\n\t\t}},\n\t\t{name: \"dragend\", handlerFunction: function(event) {\n\t\t\tif(event.target === domNode) {\n\t\t\t\t$tw.dragInProgress = null;\n\t\t\t\t// Remove the dragging class on the element being dragged\n\t\t\t\t$tw.utils.removeClass(event.target,\"tc-dragging\");\n\t\t\t\t// Delete the drag image element\n\t\t\t\tif(dragImage) {\n\t\t\t\t\tdragImage.parentNode.removeChild(dragImage);\n\t\t\t\t\tdragImage = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}}\n\t]);\n};\n\nexports.importDataTransfer = function(dataTransfer,fallbackTitle,callback) {\n\t// Try each provided data type in turn\n\tfor(var t=0; t<importDataTypes.length; t++) {\n\t\tif(!$tw.browser.isIE || importDataTypes[t].IECompatible) {\n\t\t\t// Get the data\n\t\t\tvar dataType = importDataTypes[t];\n\t\t\t\tvar data = dataTransfer.getData(dataType.type);\n\t\t\t// Import the tiddlers in the data\n\t\t\tif(data !== \"\" && data !== null) {\n\t\t\t\tif($tw.log.IMPORT) {\n\t\t\t\t\tconsole.log(\"Importing data type '\" + dataType.type + \"', data: '\" + data + \"'\")\n\t\t\t\t}\n\t\t\t\tvar tiddlerFields = dataType.toTiddlerFieldsArray(data,fallbackTitle);\n\t\t\t\tcallback(tiddlerFields);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar importDataTypes = [\n\t{type: \"text/vnd.tiddler\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn parseJSONTiddlers(data,fallbackTitle);\n\t}},\n\t{type: \"URL\", IECompatible: true, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\t// Check for tiddler data URI\n\t\tvar match = decodeURIComponent(data).match(/^data\\:text\\/vnd\\.tiddler,(.*)/i);\n\t\tif(match) {\n\t\t\treturn parseJSONTiddlers(match[1],fallbackTitle);\n\t\t} else {\n\t\t\treturn [{title: fallbackTitle, text: data}]; // As URL string\n\t\t}\n\t}},\n\t{type: \"text/x-moz-url\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\t// Check for tiddler data URI\n\t\tvar match = decodeURIComponent(data).match(/^data\\:text\\/vnd\\.tiddler,(.*)/i);\n\t\tif(match) {\n\t\t\treturn parseJSONTiddlers(match[1],fallbackTitle);\n\t\t} else {\n\t\t\treturn [{title: fallbackTitle, text: data}]; // As URL string\n\t\t}\n\t}},\n\t{type: \"text/html\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"text/plain\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"Text\", IECompatible: true, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"text/uri-list\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}}\n];\n\nfunction parseJSONTiddlers(json,fallbackTitle) {\n\tvar data = JSON.parse(json);\n\tif(!$tw.utils.isArray(data)) {\n\t\tdata = [data];\n\t}\n\tdata.forEach(function(fields) {\n\t\tfields.title = fields.title || fallbackTitle;\n\t});\n\treturn data;\n};\n\n})();\n",
            "title": "$:/core/modules/utils/dom/dragndrop.js",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/http.js": {
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/http.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser HTTP support\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nA quick and dirty HTTP function; to be refactored later. Options are:\n\turl: URL to retrieve\n\ttype: GET, PUT, POST etc\n\tcallback: function invoked with (err,data)\n\treturnProp: string name of the property to return as first argument of callback\n*/\nexports.httpRequest = function(options) {\n\tvar type = options.type || \"GET\",\n\t\theaders = options.headers || {accept: \"application/json\"},\n\t\treturnProp = options.returnProp || \"responseText\",\n\t\trequest = new XMLHttpRequest(),\n\t\tdata = \"\",\n\t\tf,results;\n\t// Massage the data hashmap into a string\n\tif(options.data) {\n\t\tif(typeof options.data === \"string\") { // Already a string\n\t\t\tdata = options.data;\n\t\t} else { // A hashmap of strings\n\t\t\tresults = [];\n\t\t\t$tw.utils.each(options.data,function(dataItem,dataItemTitle) {\n\t\t\t\tresults.push(dataItemTitle + \"=\" + encodeURIComponent(dataItem));\n\t\t\t});\n\t\t\tdata = results.join(\"&\");\n\t\t}\n\t}\n\t// Set up the state change handler\n\trequest.onreadystatechange = function() {\n\t\tif(this.readyState === 4) {\n\t\t\tif(this.status === 200 || this.status === 201 || this.status === 204) {\n\t\t\t\t// Success!\n\t\t\t\toptions.callback(null,this[returnProp],this);\n\t\t\t\treturn;\n\t\t\t}\n\t\t// Something went wrong\n\t\toptions.callback($tw.language.getString(\"Error/XMLHttpRequest\") + \": \" + this.status);\n\t\t}\n\t};\n\t// Make the request\n\trequest.open(type,options.url,true);\n\tif(headers) {\n\t\t$tw.utils.each(headers,function(header,headerTitle,object) {\n\t\t\trequest.setRequestHeader(headerTitle,header);\n\t\t});\n\t}\n\tif(data && !$tw.utils.hop(headers,\"Content-type\")) {\n\t\trequest.setRequestHeader(\"Content-type\",\"application/x-www-form-urlencoded; charset=UTF-8\");\n\t}\n\ttry {\n\t\trequest.send(data);\n\t} catch(e) {\n\t\toptions.callback(e);\n\t}\n\treturn request;\n};\n\n})();\n",
            "title": "$:/core/modules/utils/dom/http.js",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/keyboard.js": {
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/keyboard.js\ntype: application/javascript\nmodule-type: utils\n\nKeyboard utilities; now deprecated. Instead, use $tw.keyboardManager\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n[\"parseKeyDescriptor\",\"checkKeyDescriptor\"].forEach(function(method) {\n\texports[method] = function() {\n\t\tif($tw.keyboardManager) {\n\t\t\treturn $tw.keyboardManager[method].apply($tw.keyboardManager,Array.prototype.slice.call(arguments,0));\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t};\n});\n\n})();\n",
            "title": "$:/core/modules/utils/dom/keyboard.js",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/modal.js": {
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/modal.js\ntype: application/javascript\nmodule-type: utils\n\nModal message mechanism\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nvar Modal = function(wiki) {\n\tthis.wiki = wiki;\n\tthis.modalCount = 0;\n};\n\n/*\nDisplay a modal dialogue\n\ttitle: Title of tiddler to display\n\toptions: see below\nOptions include:\n\tdownloadLink: Text of a big download link to include\n*/\nModal.prototype.display = function(title,options) {\n\toptions = options || {};\n\tvar self = this,\n\t\trefreshHandler,\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\ttiddler = this.wiki.getTiddler(title);\n\t// Don't do anything if the tiddler doesn't exist\n\tif(!tiddler) {\n\t\treturn;\n\t}\n\t// Create the variables\n\tvar variables = $tw.utils.extend({currentTiddler: title},options.variables);\n\t// Create the wrapper divs\n\tvar wrapper = document.createElement(\"div\"),\n\t\tmodalBackdrop = document.createElement(\"div\"),\n\t\tmodalWrapper = document.createElement(\"div\"),\n\t\tmodalHeader = document.createElement(\"div\"),\n\t\theaderTitle = document.createElement(\"h3\"),\n\t\tmodalBody = document.createElement(\"div\"),\n\t\tmodalLink = document.createElement(\"a\"),\n\t\tmodalFooter = document.createElement(\"div\"),\n\t\tmodalFooterHelp = document.createElement(\"span\"),\n\t\tmodalFooterButtons = document.createElement(\"span\");\n\t// Up the modal count and adjust the body class\n\tthis.modalCount++;\n\tthis.adjustPageClass();\n\t// Add classes\n\t$tw.utils.addClass(wrapper,\"tc-modal-wrapper\");\n\t$tw.utils.addClass(modalBackdrop,\"tc-modal-backdrop\");\n\t$tw.utils.addClass(modalWrapper,\"tc-modal\");\n\t$tw.utils.addClass(modalHeader,\"tc-modal-header\");\n\t$tw.utils.addClass(modalBody,\"tc-modal-body\");\n\t$tw.utils.addClass(modalFooter,\"tc-modal-footer\");\n\t// Join them together\n\twrapper.appendChild(modalBackdrop);\n\twrapper.appendChild(modalWrapper);\n\tmodalHeader.appendChild(headerTitle);\n\tmodalWrapper.appendChild(modalHeader);\n\tmodalWrapper.appendChild(modalBody);\n\tmodalFooter.appendChild(modalFooterHelp);\n\tmodalFooter.appendChild(modalFooterButtons);\n\tmodalWrapper.appendChild(modalFooter);\n\t// Render the title of the message\n\tvar headerWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tfield: \"subtitle\",\n\t\tmode: \"inline\",\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\tattributes: {\n\t\t\t\ttext: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: title\n\t\t}}}],\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: document,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\theaderWidgetNode.render(headerTitle,null);\n\t// Render the body of the message\n\tvar bodyWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: document,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\tbodyWidgetNode.render(modalBody,null);\n\t// Setup the link if present\n\tif(options.downloadLink) {\n\t\tmodalLink.href = options.downloadLink;\n\t\tmodalLink.appendChild(document.createTextNode(\"Right-click to save changes\"));\n\t\tmodalBody.appendChild(modalLink);\n\t}\n\t// Render the footer of the message\n\tif(tiddler && tiddler.fields && tiddler.fields.help) {\n\t\tvar link = document.createElement(\"a\");\n\t\tlink.setAttribute(\"href\",tiddler.fields.help);\n\t\tlink.setAttribute(\"target\",\"_blank\");\n\t\tlink.setAttribute(\"rel\",\"noopener noreferrer\");\n\t\tlink.appendChild(document.createTextNode(\"Help\"));\n\t\tmodalFooterHelp.appendChild(link);\n\t\tmodalFooterHelp.style.float = \"left\";\n\t}\n\tvar footerWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tfield: \"footer\",\n\t\tmode: \"inline\",\n\t\tchildren: [{\n\t\t\ttype: \"button\",\n\t\t\tattributes: {\n\t\t\t\tmessage: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: \"tm-close-tiddler\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\tattributes: {\n\t\t\t\t\ttext: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tvalue: $tw.language.getString(\"Buttons/Close/Caption\")\n\t\t\t}}}\n\t\t]}],\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: document,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\tfooterWidgetNode.render(modalFooterButtons,null);\n\t// Set up the refresh handler\n\trefreshHandler = function(changes) {\n\t\theaderWidgetNode.refresh(changes,modalHeader,null);\n\t\tbodyWidgetNode.refresh(changes,modalBody,null);\n\t\tfooterWidgetNode.refresh(changes,modalFooterButtons,null);\n\t};\n\tthis.wiki.addEventListener(\"change\",refreshHandler);\n\t// Add the close event handler\n\tvar closeHandler = function(event) {\n\t\t// Remove our refresh handler\n\t\tself.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t// Decrease the modal count and adjust the body class\n\t\tself.modalCount--;\n\t\tself.adjustPageClass();\n\t\t// Force layout and animate the modal message away\n\t\t$tw.utils.forceLayout(modalBackdrop);\n\t\t$tw.utils.forceLayout(modalWrapper);\n\t\t$tw.utils.setStyle(modalBackdrop,[\n\t\t\t{opacity: \"0\"}\n\t\t]);\n\t\t$tw.utils.setStyle(modalWrapper,[\n\t\t\t{transform: \"translateY(\" + window.innerHeight + \"px)\"}\n\t\t]);\n\t\t// Set up an event for the transition end\n\t\twindow.setTimeout(function() {\n\t\t\tif(wrapper.parentNode) {\n\t\t\t\t// Remove the modal message from the DOM\n\t\t\t\tdocument.body.removeChild(wrapper);\n\t\t\t}\n\t\t},duration);\n\t\t// Don't let anyone else handle the tm-close-tiddler message\n\t\treturn false;\n\t};\n\theaderWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\tbodyWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\tfooterWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\t// Set the initial styles for the message\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{opacity: \"0\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transformOrigin: \"0% 0%\"},\n\t\t{transform: \"translateY(\" + (-window.innerHeight) + \"px)\"}\n\t]);\n\t// Put the message into the document\n\tdocument.body.appendChild(wrapper);\n\t// Set up animation for the styles\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{transition: \"opacity \" + duration + \"ms ease-out\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out\"}\n\t]);\n\t// Force layout\n\t$tw.utils.forceLayout(modalBackdrop);\n\t$tw.utils.forceLayout(modalWrapper);\n\t// Set final animated styles\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{opacity: \"0.7\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transform: \"translateY(0px)\"}\n\t]);\n};\n\nModal.prototype.adjustPageClass = function() {\n\tif($tw.pageContainer) {\n\t\t$tw.utils.toggleClass($tw.pageContainer,\"tc-modal-displayed\",this.modalCount > 0);\n\t}\n};\n\nexports.Modal = Modal;\n\n})();\n",
            "title": "$:/core/modules/utils/dom/modal.js",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/notifier.js": {
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/notifier.js\ntype: application/javascript\nmodule-type: utils\n\nNotifier mechanism\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nvar Notifier = function(wiki) {\n\tthis.wiki = wiki;\n};\n\n/*\nDisplay a notification\n\ttitle: Title of tiddler containing the notification text\n\toptions: see below\nOptions include:\n*/\nNotifier.prototype.display = function(title,options) {\n\toptions = options || {};\n\t// Create the wrapper divs\n\tvar self = this,\n\t\tnotification = document.createElement(\"div\"),\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\trefreshHandler;\n\t// Don't do anything if the tiddler doesn't exist\n\tif(!tiddler) {\n\t\treturn;\n\t}\n\t// Add classes\n\t$tw.utils.addClass(notification,\"tc-notification\");\n\t// Create the variables\n\tvar variables = $tw.utils.extend({currentTiddler: title},options.variables);\n\t// Render the body of the notification\n\tvar widgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: document,\n\t\tvariables: variables,\n\t\timportPageMacros: true});\n\twidgetNode.render(notification,null);\n\trefreshHandler = function(changes) {\n\t\twidgetNode.refresh(changes,notification,null);\n\t};\n\tthis.wiki.addEventListener(\"change\",refreshHandler);\n\t// Set the initial styles for the notification\n\t$tw.utils.setStyle(notification,[\n\t\t{opacity: \"0\"},\n\t\t{transformOrigin: \"0% 0%\"},\n\t\t{transform: \"translateY(\" + (-window.innerHeight) + \"px)\"},\n\t\t{transition: \"opacity \" + duration + \"ms ease-out, \" + $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out\"}\n\t]);\n\t// Add the notification to the DOM\n\tdocument.body.appendChild(notification);\n\t// Force layout\n\t$tw.utils.forceLayout(notification);\n\t// Set final animated styles\n\t$tw.utils.setStyle(notification,[\n\t\t{opacity: \"1.0\"},\n\t\t{transform: \"translateY(0px)\"}\n\t]);\n\t// Set a timer to remove the notification\n\twindow.setTimeout(function() {\n\t\t// Remove our change event handler\n\t\tself.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t// Force layout and animate the notification away\n\t\t$tw.utils.forceLayout(notification);\n\t\t$tw.utils.setStyle(notification,[\n\t\t\t{opacity: \"0.0\"},\n\t\t\t{transform: \"translateX(\" + (notification.offsetWidth) + \"px)\"}\n\t\t]);\n\t\t// Remove the modal message from the DOM once the transition ends\n\t\tsetTimeout(function() {\n\t\t\tif(notification.parentNode) {\n\t\t\t\tdocument.body.removeChild(notification);\n\t\t\t}\n\t\t},duration);\n\t},$tw.config.preferences.notificationDuration);\n};\n\nexports.Notifier = Notifier;\n\n})();\n",
            "title": "$:/core/modules/utils/dom/notifier.js",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/popup.js": {
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/popup.js\ntype: application/javascript\nmodule-type: utils\n\nModule that creates a $tw.utils.Popup object prototype that manages popups in the browser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreates a Popup object with these options:\n\trootElement: the DOM element to which the popup zapper should be attached\n*/\nvar Popup = function(options) {\n\toptions = options || {};\n\tthis.rootElement = options.rootElement || document.documentElement;\n\tthis.popups = []; // Array of {title:,wiki:,domNode:} objects\n};\n\n/*\nTrigger a popup open or closed. Parameters are in a hashmap:\n\ttitle: title of the tiddler where the popup details are stored\n\tdomNode: dom node to which the popup will be positioned\n\twiki: wiki\n\tforce: if specified, forces the popup state to true or false (instead of toggling it)\n*/\nPopup.prototype.triggerPopup = function(options) {\n\t// Check if this popup is already active\n\tvar index = this.findPopup(options.title);\n\t// Compute the new state\n\tvar state = index === -1;\n\tif(options.force !== undefined) {\n\t\tstate = options.force;\n\t}\n\t// Show or cancel the popup according to the new state\n\tif(state) {\n\t\tthis.show(options);\n\t} else {\n\t\tthis.cancel(index);\n\t}\n};\n\nPopup.prototype.findPopup = function(title) {\n\tvar index = -1;\n\tfor(var t=0; t<this.popups.length; t++) {\n\t\tif(this.popups[t].title === title) {\n\t\t\tindex = t;\n\t\t}\n\t}\n\treturn index;\n};\n\nPopup.prototype.handleEvent = function(event) {\n\tif(event.type === \"click\") {\n\t\t// Find out what was clicked on\n\t\tvar info = this.popupInfo(event.target),\n\t\t\tcancelLevel = info.popupLevel - 1;\n\t\t// Don't remove the level that was clicked on if we clicked on a handle\n\t\tif(info.isHandle) {\n\t\t\tcancelLevel++;\n\t\t}\n\t\t// Cancel\n\t\tthis.cancel(cancelLevel);\n\t}\n};\n\n/*\nFind the popup level containing a DOM node. Returns:\npopupLevel: count of the number of nested popups containing the specified element\nisHandle: true if the specified element is within a popup handle\n*/\nPopup.prototype.popupInfo = function(domNode) {\n\tvar isHandle = false,\n\t\tpopupCount = 0,\n\t\tnode = domNode;\n\t// First check ancestors to see if we're within a popup handle\n\twhile(node) {\n\t\tif($tw.utils.hasClass(node,\"tc-popup-handle\")) {\n\t\t\tisHandle = true;\n\t\t\tpopupCount++;\n\t\t}\n\t\tif($tw.utils.hasClass(node,\"tc-popup-keep\")) {\n\t\t\tisHandle = true;\n\t\t}\n\t\tnode = node.parentNode;\n\t}\n\t// Then count the number of ancestor popups\n\tnode = domNode;\n\twhile(node) {\n\t\tif($tw.utils.hasClass(node,\"tc-popup\")) {\n\t\t\tpopupCount++;\n\t\t}\n\t\tnode = node.parentNode;\n\t}\n\tvar info = {\n\t\tpopupLevel: popupCount,\n\t\tisHandle: isHandle\n\t};\n\treturn info;\n};\n\n/*\nDisplay a popup by adding it to the stack\n*/\nPopup.prototype.show = function(options) {\n\t// Find out what was clicked on\n\tvar info = this.popupInfo(options.domNode);\n\t// Cancel any higher level popups\n\tthis.cancel(info.popupLevel);\n\t// Store the popup details if not already there\n\tif(this.findPopup(options.title) === -1) {\n\t\tthis.popups.push({\n\t\t\ttitle: options.title,\n\t\t\twiki: options.wiki,\n\t\t\tdomNode: options.domNode\n\t\t});\n\t}\n\t// Set the state tiddler\n\toptions.wiki.setTextReference(options.title,\n\t\t\t\"(\" + options.domNode.offsetLeft + \",\" + options.domNode.offsetTop + \",\" + \n\t\t\t\toptions.domNode.offsetWidth + \",\" + options.domNode.offsetHeight + \")\");\n\t// Add the click handler if we have any popups\n\tif(this.popups.length > 0) {\n\t\tthis.rootElement.addEventListener(\"click\",this,true);\t\t\n\t}\n};\n\n/*\nCancel all popups at or above a specified level or DOM node\nlevel: popup level to cancel (0 cancels all popups)\n*/\nPopup.prototype.cancel = function(level) {\n\tvar numPopups = this.popups.length;\n\tlevel = Math.max(0,Math.min(level,numPopups));\n\tfor(var t=level; t<numPopups; t++) {\n\t\tvar popup = this.popups.pop();\n\t\tif(popup.title) {\n\t\t\tpopup.wiki.deleteTiddler(popup.title);\n\t\t}\n\t}\n\tif(this.popups.length === 0) {\n\t\tthis.rootElement.removeEventListener(\"click\",this,false);\n\t}\n};\n\n/*\nReturns true if the specified title and text identifies an active popup\n*/\nPopup.prototype.readPopupState = function(text) {\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/;\n\treturn popupLocationRegExp.test(text);\n};\n\nexports.Popup = Popup;\n\n})();\n",
            "title": "$:/core/modules/utils/dom/popup.js",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/scroller.js": {
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/scroller.js\ntype: application/javascript\nmodule-type: utils\n\nModule that creates a $tw.utils.Scroller object prototype that manages scrolling in the browser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nEvent handler for when the `tm-scroll` event hits the document body\n*/\nvar PageScroller = function() {\n\tthis.idRequestFrame = null;\n\tthis.requestAnimationFrame = window.requestAnimationFrame ||\n\t\twindow.webkitRequestAnimationFrame ||\n\t\twindow.mozRequestAnimationFrame ||\n\t\tfunction(callback) {\n\t\t\treturn window.setTimeout(callback, 1000/60);\n\t\t};\n\tthis.cancelAnimationFrame = window.cancelAnimationFrame ||\n\t\twindow.webkitCancelAnimationFrame ||\n\t\twindow.webkitCancelRequestAnimationFrame ||\n\t\twindow.mozCancelAnimationFrame ||\n\t\twindow.mozCancelRequestAnimationFrame ||\n\t\tfunction(id) {\n\t\t\twindow.clearTimeout(id);\n\t\t};\n};\n\nPageScroller.prototype.cancelScroll = function() {\n\tif(this.idRequestFrame) {\n\t\tthis.cancelAnimationFrame.call(window,this.idRequestFrame);\n\t\tthis.idRequestFrame = null;\n\t}\n};\n\n/*\nHandle an event\n*/\nPageScroller.prototype.handleEvent = function(event) {\n\tif(event.type === \"tm-scroll\") {\n\t\treturn this.scrollIntoView(event.target);\n\t}\n\treturn true;\n};\n\n/*\nHandle a scroll event hitting the page document\n*/\nPageScroller.prototype.scrollIntoView = function(element) {\n\tvar duration = $tw.utils.getAnimationDuration();\n\t// Now get ready to scroll the body\n\tthis.cancelScroll();\n\tthis.startTime = Date.now();\n\tvar scrollPosition = $tw.utils.getScrollPosition();\n\t// Get the client bounds of the element and adjust by the scroll position\n\tvar clientBounds = element.getBoundingClientRect(),\n\t\tbounds = {\n\t\t\tleft: clientBounds.left + scrollPosition.x,\n\t\t\ttop: clientBounds.top + scrollPosition.y,\n\t\t\twidth: clientBounds.width,\n\t\t\theight: clientBounds.height\n\t\t};\n\t// We'll consider the horizontal and vertical scroll directions separately via this function\n\t// targetPos/targetSize - position and size of the target element\n\t// currentPos/currentSize - position and size of the current scroll viewport\n\t// returns: new position of the scroll viewport\n\tvar getEndPos = function(targetPos,targetSize,currentPos,currentSize) {\n\t\t\tvar newPos = currentPos;\n\t\t\t// If the target is above/left of the current view, then scroll to it's top/left\n\t\t\tif(targetPos <= currentPos) {\n\t\t\t\tnewPos = targetPos;\n\t\t\t// If the target is smaller than the window and the scroll position is too far up, then scroll till the target is at the bottom of the window\n\t\t\t} else if(targetSize < currentSize && currentPos < (targetPos + targetSize - currentSize)) {\n\t\t\t\tnewPos = targetPos + targetSize - currentSize;\n\t\t\t// If the target is big, then just scroll to the top\n\t\t\t} else if(currentPos < targetPos) {\n\t\t\t\tnewPos = targetPos;\n\t\t\t// Otherwise, stay where we are\n\t\t\t} else {\n\t\t\t\tnewPos = currentPos;\n\t\t\t}\n\t\t\t// If we are scrolling within 50 pixels of the top/left then snap to zero\n\t\t\tif(newPos < 50) {\n\t\t\t\tnewPos = 0;\n\t\t\t}\n\t\t\treturn newPos;\n\t\t},\n\t\tendX = getEndPos(bounds.left,bounds.width,scrollPosition.x,window.innerWidth),\n\t\tendY = getEndPos(bounds.top,bounds.height,scrollPosition.y,window.innerHeight);\n\t// Only scroll if the position has changed\n\tif(endX !== scrollPosition.x || endY !== scrollPosition.y) {\n\t\tvar self = this,\n\t\t\tdrawFrame;\n\t\tdrawFrame = function () {\n\t\t\tvar t;\n\t\t\tif(duration <= 0) {\n\t\t\t\tt = 1;\n\t\t\t} else {\n\t\t\t\tt = ((Date.now()) - self.startTime) / duration;\t\n\t\t\t}\n\t\t\tif(t >= 1) {\n\t\t\t\tself.cancelScroll();\n\t\t\t\tt = 1;\n\t\t\t}\n\t\t\tt = $tw.utils.slowInSlowOut(t);\n\t\t\twindow.scrollTo(scrollPosition.x + (endX - scrollPosition.x) * t,scrollPosition.y + (endY - scrollPosition.y) * t);\n\t\t\tif(t < 1) {\n\t\t\t\tself.idRequestFrame = self.requestAnimationFrame.call(window,drawFrame);\n\t\t\t}\n\t\t};\n\t\tdrawFrame();\n\t}\n};\n\nexports.PageScroller = PageScroller;\n\n})();\n",
            "title": "$:/core/modules/utils/dom/scroller.js",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/edition-info.js": {
            "text": "/*\\\ntitle: $:/core/modules/utils/edition-info.js\ntype: application/javascript\nmodule-type: utils-node\n\nInformation about the available editions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar fs = require(\"fs\"),\n\tpath = require(\"path\");\n\nvar editionInfo;\n\nexports.getEditionInfo = function() {\n\tif(!editionInfo) {\n\t\t// Enumerate the edition paths\n\t\tvar editionPaths = $tw.getLibraryItemSearchPaths($tw.config.editionsPath,$tw.config.editionsEnvVar);\n\t\teditionInfo = {};\n\t\tfor(var editionIndex=0; editionIndex<editionPaths.length; editionIndex++) {\n\t\t\tvar editionPath = editionPaths[editionIndex];\n\t\t\t// Enumerate the folders\n\t\t\tvar entries = fs.readdirSync(editionPath);\n\t\t\tfor(var entryIndex=0; entryIndex<entries.length; entryIndex++) {\n\t\t\t\tvar entry = entries[entryIndex];\n\t\t\t\t// Check if directories have a valid tiddlywiki.info\n\t\t\t\tif(!editionInfo[entry] && $tw.utils.isDirectory(path.resolve(editionPath,entry))) {\n\t\t\t\t\tvar info;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tinfo = JSON.parse(fs.readFileSync(path.resolve(editionPath,entry,\"tiddlywiki.info\"),\"utf8\"));\n\t\t\t\t\t} catch(ex) {\n\t\t\t\t\t}\n\t\t\t\t\tif(info) {\n\t\t\t\t\t\teditionInfo[entry] = info;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn editionInfo;\n};\n\n})();\n",
            "title": "$:/core/modules/utils/edition-info.js",
            "type": "application/javascript",
            "module-type": "utils-node"
        },
        "$:/core/modules/utils/fakedom.js": {
            "text": "/*\\\ntitle: $:/core/modules/utils/fakedom.js\ntype: application/javascript\nmodule-type: global\n\nA barebones implementation of DOM interfaces needed by the rendering mechanism.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Sequence number used to enable us to track objects for testing\nvar sequenceNumber = null;\n\nvar bumpSequenceNumber = function(object) {\n\tif(sequenceNumber !== null) {\n\t\tobject.sequenceNumber = sequenceNumber++;\n\t}\n};\n\nvar TW_TextNode = function(text) {\n\tbumpSequenceNumber(this);\n\tthis.textContent = text + \"\";\n};\n\nObject.defineProperty(TW_TextNode.prototype, \"nodeType\", {\n\tget: function() {\n\t\treturn 3;\n\t}\n});\n\nObject.defineProperty(TW_TextNode.prototype, \"formattedTextContent\", {\n\tget: function() {\n\t\treturn this.textContent.replace(/(\\r?\\n)/g,\"\");\n\t}\n});\n\nvar TW_Element = function(tag,namespace) {\n\tbumpSequenceNumber(this);\n\tthis.isTiddlyWikiFakeDom = true;\n\tthis.tag = tag;\n\tthis.attributes = {};\n\tthis.isRaw = false;\n\tthis.children = [];\n\tthis.style = {};\n\tthis.namespaceURI = namespace || \"http://www.w3.org/1999/xhtml\";\n};\n\nObject.defineProperty(TW_Element.prototype, \"nodeType\", {\n\tget: function() {\n\t\treturn 1;\n\t}\n});\n\nTW_Element.prototype.getAttribute = function(name) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot getAttribute on a raw TW_Element\";\n\t}\n\treturn this.attributes[name];\n};\n\nTW_Element.prototype.setAttribute = function(name,value) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot setAttribute on a raw TW_Element\";\n\t}\n\tthis.attributes[name] = value + \"\";\n};\n\nTW_Element.prototype.setAttributeNS = function(namespace,name,value) {\n\tthis.setAttribute(name,value);\n};\n\nTW_Element.prototype.removeAttribute = function(name) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot removeAttribute on a raw TW_Element\";\n\t}\n\tif($tw.utils.hop(this.attributes,name)) {\n\t\tdelete this.attributes[name];\n\t}\n};\n\nTW_Element.prototype.appendChild = function(node) {\n\tthis.children.push(node);\n\tnode.parentNode = this;\n};\n\nTW_Element.prototype.insertBefore = function(node,nextSibling) {\n\tif(nextSibling) {\n\t\tvar p = this.children.indexOf(nextSibling);\n\t\tif(p !== -1) {\n\t\t\tthis.children.splice(p,0,node);\n\t\t\tnode.parentNode = this;\n\t\t} else {\n\t\t\tthis.appendChild(node);\n\t\t}\n\t} else {\n\t\tthis.appendChild(node);\n\t}\n};\n\nTW_Element.prototype.removeChild = function(node) {\n\tvar p = this.children.indexOf(node);\n\tif(p !== -1) {\n\t\tthis.children.splice(p,1);\n\t}\n};\n\nTW_Element.prototype.hasChildNodes = function() {\n\treturn !!this.children.length;\n};\n\nObject.defineProperty(TW_Element.prototype, \"childNodes\", {\n\tget: function() {\n\t\treturn this.children;\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"firstChild\", {\n\tget: function() {\n\t\treturn this.children[0];\n\t}\n});\n\nTW_Element.prototype.addEventListener = function(type,listener,useCapture) {\n\t// Do nothing\n};\n\nObject.defineProperty(TW_Element.prototype, \"tagName\", {\n\tget: function() {\n\t\treturn this.tag || \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"className\", {\n\tget: function() {\n\t\treturn this.attributes[\"class\"] || \"\";\n\t},\n\tset: function(value) {\n\t\tthis.attributes[\"class\"] = value + \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"value\", {\n\tget: function() {\n\t\treturn this.attributes.value || \"\";\n\t},\n\tset: function(value) {\n\t\tthis.attributes.value = value + \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"outerHTML\", {\n\tget: function() {\n\t\tvar output = [],attr,a,v;\n\t\toutput.push(\"<\",this.tag);\n\t\tif(this.attributes) {\n\t\t\tattr = [];\n\t\t\tfor(a in this.attributes) {\n\t\t\t\tattr.push(a);\n\t\t\t}\n\t\t\tattr.sort();\n\t\t\tfor(a=0; a<attr.length; a++) {\n\t\t\t\tv = this.attributes[attr[a]];\n\t\t\t\tif(v !== undefined) {\n\t\t\t\t\toutput.push(\" \",attr[a],\"=\\\"\",$tw.utils.htmlEncode(v),\"\\\"\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif(this.style) {\n\t\t\tvar style = [];\n\t\t\tfor(var s in this.style) {\n\t\t\t\tstyle.push(s + \":\" + this.style[s] + \";\");\n\t\t\t}\n\t\t\tif(style.length > 0) {\n\t\t\t\toutput.push(\" style=\\\"\",style.join(\"\"),\"\\\"\")\n\t\t\t}\n\t\t}\n\t\toutput.push(\">\");\n\t\tif($tw.config.htmlVoidElements.indexOf(this.tag) === -1) {\n\t\t\toutput.push(this.innerHTML);\n\t\t\toutput.push(\"</\",this.tag,\">\");\n\t\t}\n\t\treturn output.join(\"\");\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"innerHTML\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\treturn this.rawHTML;\n\t\t} else {\n\t\t\tvar b = [];\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tif(node instanceof TW_Element) {\n\t\t\t\t\tb.push(node.outerHTML);\n\t\t\t\t} else if(node instanceof TW_TextNode) {\n\t\t\t\t\tb.push($tw.utils.htmlEncode(node.textContent));\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn b.join(\"\");\n\t\t}\n\t},\n\tset: function(value) {\n\t\tthis.isRaw = true;\n\t\tthis.rawHTML = value;\n\t\tthis.rawTextContent = null;\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"textInnerHTML\", {\n\tset: function(value) {\n\t\tif(this.isRaw) {\n\t\t\tthis.rawTextContent = value;\n\t\t} else {\n\t\t\tthrow \"Cannot set textInnerHTML of a non-raw TW_Element\";\n\t\t}\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"textContent\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\tif(this.rawTextContent === null) {\n\t\t\t\tconsole.log(booboo)\n\t\t\t\tthrow \"Cannot get textContent on a raw TW_Element\";\t\t\t\t\n\t\t\t} else {\n\t\t\t\treturn this.rawTextContent;\n\t\t\t}\n\t\t} else {\n\t\t\tvar b = [];\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tb.push(node.textContent);\n\t\t\t});\n\t\t\treturn b.join(\"\");\n\t\t}\n\t},\n\tset: function(value) {\n\t\tthis.children = [new TW_TextNode(value)];\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"formattedTextContent\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\tthrow \"Cannot get formattedTextContent on a raw TW_Element\";\n\t\t} else {\n\t\t\tvar b = [],\n\t\t\t\tisBlock = $tw.config.htmlBlockElements.indexOf(this.tag) !== -1;\n\t\t\tif(isBlock) {\n\t\t\t\tb.push(\"\\n\");\n\t\t\t}\n\t\t\tif(this.tag === \"li\") {\n\t\t\t\tb.push(\"* \");\n\t\t\t}\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tb.push(node.formattedTextContent);\n\t\t\t});\n\t\t\tif(isBlock) {\n\t\t\t\tb.push(\"\\n\");\n\t\t\t}\n\t\t\treturn b.join(\"\");\n\t\t}\n\t}\n});\n\nvar document = {\n\tsetSequenceNumber: function(value) {\n\t\tsequenceNumber = value;\n\t},\n\tcreateElementNS: function(namespace,tag) {\n\t\treturn new TW_Element(tag,namespace);\n\t},\n\tcreateElement: function(tag) {\n\t\treturn new TW_Element(tag);\n\t},\n\tcreateTextNode: function(text) {\n\t\treturn new TW_TextNode(text);\n\t},\n\tcompatMode: \"CSS1Compat\", // For KaTeX to know that we're not a browser in quirks mode\n\tisTiddlyWikiFakeDom: true\n};\n\nexports.fakeDocument = document;\n\n})();\n",
            "title": "$:/core/modules/utils/fakedom.js",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/utils/filesystem.js": {
            "text": "/*\\\ntitle: $:/core/modules/utils/filesystem.js\ntype: application/javascript\nmodule-type: utils-node\n\nFile system utilities\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar fs = require(\"fs\"),\n\tpath = require(\"path\");\n\n/*\nRecursively (and synchronously) copy a directory and all its content\n*/\nexports.copyDirectory = function(srcPath,dstPath) {\n\t// Remove any trailing path separators\n\tsrcPath = $tw.utils.removeTrailingSeparator(srcPath);\n\tdstPath = $tw.utils.removeTrailingSeparator(dstPath);\n\t// Create the destination directory\n\tvar err = $tw.utils.createDirectory(dstPath);\n\tif(err) {\n\t\treturn err;\n\t}\n\t// Function to copy a folder full of files\n\tvar copy = function(srcPath,dstPath) {\n\t\tvar srcStats = fs.lstatSync(srcPath),\n\t\t\tdstExists = fs.existsSync(dstPath);\n\t\tif(srcStats.isFile()) {\n\t\t\t$tw.utils.copyFile(srcPath,dstPath);\n\t\t} else if(srcStats.isDirectory()) {\n\t\t\tvar items = fs.readdirSync(srcPath);\n\t\t\tfor(var t=0; t<items.length; t++) {\n\t\t\t\tvar item = items[t],\n\t\t\t\t\terr = copy(srcPath + path.sep + item,dstPath + path.sep + item);\n\t\t\t\tif(err) {\n\t\t\t\t\treturn err;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\tcopy(srcPath,dstPath);\n\treturn null;\n};\n\n/*\nCopy a file\n*/\nvar FILE_BUFFER_LENGTH = 64 * 1024,\n\tfileBuffer;\n\nexports.copyFile = function(srcPath,dstPath) {\n\t// Create buffer if required\n\tif(!fileBuffer) {\n\t\tfileBuffer = new Buffer(FILE_BUFFER_LENGTH);\n\t}\n\t// Create any directories in the destination\n\t$tw.utils.createDirectory(path.dirname(dstPath));\n\t// Copy the file\n\tvar srcFile = fs.openSync(srcPath,\"r\"),\n\t\tdstFile = fs.openSync(dstPath,\"w\"),\n\t\tbytesRead = 1,\n\t\tpos = 0;\n\twhile (bytesRead > 0) {\n\t\tbytesRead = fs.readSync(srcFile,fileBuffer,0,FILE_BUFFER_LENGTH,pos);\n\t\tfs.writeSync(dstFile,fileBuffer,0,bytesRead);\n\t\tpos += bytesRead;\n\t}\n\tfs.closeSync(srcFile);\n\tfs.closeSync(dstFile);\n\treturn null;\n};\n\n/*\nRemove trailing path separator\n*/\nexports.removeTrailingSeparator = function(dirPath) {\n\tvar len = dirPath.length;\n\tif(dirPath.charAt(len-1) === path.sep) {\n\t\tdirPath = dirPath.substr(0,len-1);\n\t}\n\treturn dirPath;\n};\n\n/*\nRecursively create a directory\n*/\nexports.createDirectory = function(dirPath) {\n\tif(dirPath.substr(dirPath.length-1,1) !== path.sep) {\n\t\tdirPath = dirPath + path.sep;\n\t}\n\tvar pos = 1;\n\tpos = dirPath.indexOf(path.sep,pos);\n\twhile(pos !== -1) {\n\t\tvar subDirPath = dirPath.substr(0,pos);\n\t\tif(!$tw.utils.isDirectory(subDirPath)) {\n\t\t\ttry {\n\t\t\t\tfs.mkdirSync(subDirPath);\n\t\t\t} catch(e) {\n\t\t\t\treturn \"Error creating directory '\" + subDirPath + \"'\";\n\t\t\t}\n\t\t}\n\t\tpos = dirPath.indexOf(path.sep,pos + 1);\n\t}\n\treturn null;\n};\n\n/*\nRecursively create directories needed to contain a specified file\n*/\nexports.createFileDirectories = function(filePath) {\n\treturn $tw.utils.createDirectory(path.dirname(filePath));\n};\n\n/*\nRecursively delete a directory\n*/\nexports.deleteDirectory = function(dirPath) {\n\tif(fs.existsSync(dirPath)) {\n\t\tvar entries = fs.readdirSync(dirPath);\n\t\tfor(var entryIndex=0; entryIndex<entries.length; entryIndex++) {\n\t\t\tvar currPath = dirPath + path.sep + entries[entryIndex];\n\t\t\tif(fs.lstatSync(currPath).isDirectory()) {\n\t\t\t\t$tw.utils.deleteDirectory(currPath);\n\t\t\t} else {\n\t\t\t\tfs.unlinkSync(currPath);\n\t\t\t}\n\t\t}\n\tfs.rmdirSync(dirPath);\n\t}\n\treturn null;\n};\n\n/*\nCheck if a path identifies a directory\n*/\nexports.isDirectory = function(dirPath) {\n\treturn fs.existsSync(dirPath) && fs.statSync(dirPath).isDirectory();\n};\n\n/*\nCheck if a path identifies a directory that is empty\n*/\nexports.isDirectoryEmpty = function(dirPath) {\n\tif(!$tw.utils.isDirectory(dirPath)) {\n\t\treturn false;\n\t}\n\tvar files = fs.readdirSync(dirPath),\n\t\tempty = true;\n\t$tw.utils.each(files,function(file,index) {\n\t\tif(file.charAt(0) !== \".\") {\n\t\t\tempty = false;\n\t\t}\n\t});\n\treturn empty;\n};\n\n/*\nRecursively delete a tree of empty directories\n*/\nexports.deleteEmptyDirs = function(dirpath,callback) {\n\tvar self = this;\n\tfs.readdir(dirpath,function(err,files) {\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\n\t\tif(files.length > 0) {\n\t\t\treturn callback(null);\n\t\t}\n\t\tfs.rmdir(dirpath,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tself.deleteEmptyDirs(path.dirname(dirpath),callback);\n\t\t});\n\t});\n};\n\n})();\n",
            "title": "$:/core/modules/utils/filesystem.js",
            "type": "application/javascript",
            "module-type": "utils-node"
        },
        "$:/core/modules/utils/logger.js": {
            "text": "/*\\\ntitle: $:/core/modules/utils/logger.js\ntype: application/javascript\nmodule-type: utils\n\nA basic logging implementation\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ALERT_TAG = \"$:/tags/Alert\";\n\n/*\nMake a new logger\n*/\nfunction Logger(componentName) {\n\tthis.componentName = componentName || \"\";\n}\n\n/*\nLog a message\n*/\nLogger.prototype.log = function(/* args */) {\n\tif(console !== undefined && console.log !== undefined) {\n\t\treturn Function.apply.call(console.log, console, [this.componentName + \":\"].concat(Array.prototype.slice.call(arguments,0)));\n\t}\n};\n\n/*\nAlert a message\n*/\nLogger.prototype.alert = function(/* args */) {\n\t// Prepare the text of the alert\n\tvar text = Array.prototype.join.call(arguments,\" \");\n\t// Create alert tiddlers in the browser\n\tif($tw.browser) {\n\t\t// Check if there is an existing alert with the same text and the same component\n\t\tvar existingAlerts = $tw.wiki.getTiddlersWithTag(ALERT_TAG),\n\t\t\talertFields,\n\t\t\texistingCount,\n\t\t\tself = this;\n\t\t$tw.utils.each(existingAlerts,function(title) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\tif(tiddler.fields.text === text && tiddler.fields.component === self.componentName && tiddler.fields.modified && (!alertFields || tiddler.fields.modified < alertFields.modified)) {\n\t\t\t\t\talertFields = $tw.utils.extend({},tiddler.fields);\n\t\t\t}\n\t\t});\n\t\tif(alertFields) {\n\t\t\texistingCount = alertFields.count || 1;\n\t\t} else {\n\t\t\talertFields = {\n\t\t\t\ttitle: $tw.wiki.generateNewTitle(\"$:/temp/alerts/alert\",{prefix: \"\"}),\n\t\t\t\ttext: text,\n\t\t\t\ttags: [ALERT_TAG],\n\t\t\t\tcomponent: this.componentName\n\t\t\t};\n\t\t\texistingCount = 0;\n\t\t}\n\t\talertFields.modified = new Date();\n\t\tif(++existingCount > 1) {\n\t\t\talertFields.count = existingCount;\n\t\t} else {\n\t\t\talertFields.count = undefined;\n\t\t}\n\t\t$tw.wiki.addTiddler(new $tw.Tiddler(alertFields));\n\t\t// Log the alert as well\n\t\tthis.log.apply(this,Array.prototype.slice.call(arguments,0));\n\t} else {\n\t\t// Print an orange message to the console if not in the browser\n\t\tconsole.error(\"\\x1b[1;33m\" + text + \"\\x1b[0m\");\n\t}\n};\n\nexports.Logger = Logger;\n\n})();\n",
            "title": "$:/core/modules/utils/logger.js",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/parsetree.js": {
            "text": "/*\\\ntitle: $:/core/modules/utils/parsetree.js\ntype: application/javascript\nmodule-type: utils\n\nParse tree utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.addAttributeToParseTreeNode = function(node,name,value) {\n\tnode.attributes = node.attributes || {};\n\tnode.attributes[name] = {type: \"string\", value: value};\n};\n\nexports.getAttributeValueFromParseTreeNode = function(node,name,defaultValue) {\n\tif(node.attributes && node.attributes[name] && node.attributes[name].value !== undefined) {\n\t\treturn node.attributes[name].value;\n\t}\n\treturn defaultValue;\n};\n\nexports.addClassToParseTreeNode = function(node,classString) {\n\tvar classes = [];\n\tnode.attributes = node.attributes || {};\n\tnode.attributes[\"class\"] = node.attributes[\"class\"] || {type: \"string\", value: \"\"};\n\tif(node.attributes[\"class\"].type === \"string\") {\n\t\tif(node.attributes[\"class\"].value !== \"\") {\n\t\t\tclasses = node.attributes[\"class\"].value.split(\" \");\n\t\t}\n\t\tif(classString !== \"\") {\n\t\t\t$tw.utils.pushTop(classes,classString.split(\" \"));\n\t\t}\n\t\tnode.attributes[\"class\"].value = classes.join(\" \");\n\t}\n};\n\nexports.addStyleToParseTreeNode = function(node,name,value) {\n\t\tnode.attributes = node.attributes || {};\n\t\tnode.attributes.style = node.attributes.style || {type: \"string\", value: \"\"};\n\t\tif(node.attributes.style.type === \"string\") {\n\t\t\tnode.attributes.style.value += name + \":\" + value + \";\";\n\t\t}\n};\n\nexports.findParseTreeNode = function(nodeArray,search) {\n\tfor(var t=0; t<nodeArray.length; t++) {\n\t\tif(nodeArray[t].type === search.type && nodeArray[t].tag === search.tag) {\n\t\t\treturn nodeArray[t];\n\t\t}\n\t}\n\treturn undefined;\n};\n\n/*\nHelper to get the text of a parse tree node or array of nodes\n*/\nexports.getParseTreeText = function getParseTreeText(tree) {\n\tvar output = [];\n\tif($tw.utils.isArray(tree)) {\n\t\t$tw.utils.each(tree,function(node) {\n\t\t\toutput.push(getParseTreeText(node));\n\t\t});\n\t} else {\n\t\tif(tree.type === \"text\") {\n\t\t\toutput.push(tree.text);\n\t\t}\n\t\tif(tree.children) {\n\t\t\treturn getParseTreeText(tree.children);\n\t\t}\n\t}\n\treturn output.join(\"\");\n};\n\n})();\n",
            "title": "$:/core/modules/utils/parsetree.js",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/performance.js": {
            "text": "/*\\\ntitle: $:/core/modules/utils/performance.js\ntype: application/javascript\nmodule-type: global\n\nPerformance measurement.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction Performance(enabled) {\n\tthis.enabled = !!enabled;\n\tthis.measures = {}; // Hashmap of current values of measurements\n\tthis.logger = new $tw.utils.Logger(\"performance\");\n}\n\n/*\nWrap performance reporting around a top level function\n*/\nPerformance.prototype.report = function(name,fn) {\n\tvar self = this;\n\tif(this.enabled) {\n\t\treturn function() {\n\t\t\tself.measures = {};\n\t\t\tvar startTime = $tw.utils.timer(),\n\t\t\t\tresult = fn.apply(this,arguments);\n\t\t\tself.logger.log(name + \": \" + $tw.utils.timer(startTime).toFixed(2) + \"ms\");\n\t\t\tfor(var m in self.measures) {\n\t\t\t\tself.logger.log(\"+\" + m + \": \" + self.measures[m].toFixed(2) + \"ms\");\n\t\t\t}\n\t\t\treturn result;\n\t\t};\n\t} else {\n\t\treturn fn;\n\t}\n};\n\n/*\nWrap performance measurements around a subfunction\n*/\nPerformance.prototype.measure = function(name,fn) {\n\tvar self = this;\n\tif(this.enabled) {\n\t\treturn function() {\n\t\t\tvar startTime = $tw.utils.timer(),\n\t\t\t\tresult = fn.apply(this,arguments),\n\t\t\t\tvalue = self.measures[name] || 0;\n\t\t\tself.measures[name] = value + $tw.utils.timer(startTime);\n\t\t\treturn result;\n\t\t};\n\t} else {\n\t\treturn fn;\n\t}\n};\n\nexports.Performance = Performance;\n\n})();\n",
            "title": "$:/core/modules/utils/performance.js",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/utils/pluginmaker.js": {
            "text": "/*\\\ntitle: $:/core/modules/utils/pluginmaker.js\ntype: application/javascript\nmodule-type: utils\n\nA quick and dirty way to pack up plugins within the browser.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRepack a plugin, and then delete any non-shadow payload tiddlers\n*/\nexports.repackPlugin = function(title,additionalTiddlers,excludeTiddlers) {\n\tadditionalTiddlers = additionalTiddlers || [];\n\texcludeTiddlers = excludeTiddlers || [];\n\t// Get the plugin tiddler\n\tvar pluginTiddler = $tw.wiki.getTiddler(title);\n\tif(!pluginTiddler) {\n\t\tthrow \"No such tiddler as \" + title;\n\t}\n\t// Extract the JSON\n\tvar jsonPluginTiddler;\n\ttry {\n\t\tjsonPluginTiddler = JSON.parse(pluginTiddler.fields.text);\n\t} catch(e) {\n\t\tthrow \"Cannot parse plugin tiddler \" + title + \"\\n\" + $tw.language.getString(\"Error/Caption\") + \": \" + e;\n\t}\n\t// Get the list of tiddlers\n\tvar tiddlers = Object.keys(jsonPluginTiddler.tiddlers);\n\t// Add the additional tiddlers\n\t$tw.utils.pushTop(tiddlers,additionalTiddlers);\n\t// Remove any excluded tiddlers\n\tfor(var t=tiddlers.length-1; t>=0; t--) {\n\t\tif(excludeTiddlers.indexOf(tiddlers[t]) !== -1) {\n\t\t\ttiddlers.splice(t,1);\n\t\t}\n\t}\n\t// Pack up the tiddlers into a block of JSON\n\tvar plugins = {};\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = $tw.wiki.getTiddler(title),\n\t\t\tfields = {};\n\t\t$tw.utils.each(tiddler.fields,function (value,name) {\n\t\t\tfields[name] = tiddler.getFieldString(name);\n\t\t});\n\t\tplugins[title] = fields;\n\t});\n\t// Retrieve and bump the version number\n\tvar pluginVersion = $tw.utils.parseVersion(pluginTiddler.getFieldString(\"version\") || \"0.0.0\") || {\n\t\t\tmajor: \"0\",\n\t\t\tminor: \"0\",\n\t\t\tpatch: \"0\"\n\t\t};\n\tpluginVersion.patch++;\n\tvar version = pluginVersion.major + \".\" + pluginVersion.minor + \".\" + pluginVersion.patch;\n\tif(pluginVersion.prerelease) {\n\t\tversion += \"-\" + pluginVersion.prerelease;\n\t}\n\tif(pluginVersion.build) {\n\t\tversion += \"+\" + pluginVersion.build;\n\t}\n\t// Save the tiddler\n\t$tw.wiki.addTiddler(new $tw.Tiddler(pluginTiddler,{text: JSON.stringify({tiddlers: plugins},null,4), version: version}));\n\t// Delete any non-shadow constituent tiddlers\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tif($tw.wiki.tiddlerExists(title)) {\n\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t}\n\t});\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\t// Return a heartwarming confirmation\n\treturn \"Plugin \" + title + \" successfully saved\";\n};\n\n})();\n",
            "title": "$:/core/modules/utils/pluginmaker.js",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/utils.js": {
            "text": "/*\\\ntitle: $:/core/modules/utils/utils.js\ntype: application/javascript\nmodule-type: utils\n\nVarious static utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nDisplay a warning, in colour if we're on a terminal\n*/\nexports.warning = function(text) {\n\tconsole.log($tw.node ? \"\\x1b[1;33m\" + text + \"\\x1b[0m\" : text);\n};\n\n/*\nRepeatedly replaces a substring within a string. Like String.prototype.replace, but without any of the default special handling of $ sequences in the replace string\n*/\nexports.replaceString = function(text,search,replace) {\n\treturn text.replace(search,function() {\n\t\treturn replace;\n\t});\n};\n\n/*\nRepeats a string\n*/\nexports.repeat = function(str,count) {\n\tvar result = \"\";\n\tfor(var t=0;t<count;t++) {\n\t\tresult += str;\n\t}\n\treturn result;\n};\n\n/*\nTrim whitespace from the start and end of a string\nThanks to Steven Levithan, http://blog.stevenlevithan.com/archives/faster-trim-javascript\n*/\nexports.trim = function(str) {\n\tif(typeof str === \"string\") {\n\t\treturn str.replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n\t} else {\n\t\treturn str;\n\t}\n};\n\n/*\nFind the line break preceding a given position in a string\nReturns position immediately after that line break, or the start of the string\n*/\nexports.findPrecedingLineBreak = function(text,pos) {\n\tvar result = text.lastIndexOf(\"\\n\",pos - 1);\n\tif(result === -1) {\n\t\tresult = 0;\n\t} else {\n\t\tresult++;\n\t\tif(text.charAt(result) === \"\\r\") {\n\t\t\tresult++;\n\t\t}\n\t}\n\treturn result;\n};\n\n/*\nFind the line break following a given position in a string\n*/\nexports.findFollowingLineBreak = function(text,pos) {\n\t// Cut to just past the following line break, or to the end of the text\n\tvar result = text.indexOf(\"\\n\",pos);\n\tif(result === -1) {\n\t\tresult = text.length;\n\t} else {\n\t\tif(text.charAt(result) === \"\\r\") {\n\t\t\tresult++;\n\t\t}\n\t}\n\treturn result;\n};\n\n/*\nReturn the number of keys in an object\n*/\nexports.count = function(object) {\n\treturn Object.keys(object || {}).length;\n};\n\n/*\nCheck if an array is equal by value and by reference.\n*/\nexports.isArrayEqual = function(array1,array2) {\n\tif(array1 === array2) {\n\t\treturn true;\n\t}\n\tarray1 = array1 || [];\n\tarray2 = array2 || [];\n\tif(array1.length !== array2.length) {\n\t\treturn false;\n\t}\n\treturn array1.every(function(value,index) {\n\t\treturn value === array2[index];\n\t});\n};\n\n/*\nPush entries onto an array, removing them first if they already exist in the array\n\tarray: array to modify (assumed to be free of duplicates)\n\tvalue: a single value to push or an array of values to push\n*/\nexports.pushTop = function(array,value) {\n\tvar t,p;\n\tif($tw.utils.isArray(value)) {\n\t\t// Remove any array entries that are duplicated in the new values\n\t\tif(value.length !== 0) {\n\t\t\tif(array.length !== 0) {\n\t\t\t\tif(value.length < array.length) {\n\t\t\t\t\tfor(t=0; t<value.length; t++) {\n\t\t\t\t\t\tp = array.indexOf(value[t]);\n\t\t\t\t\t\tif(p !== -1) {\n\t\t\t\t\t\t\tarray.splice(p,1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfor(t=array.length-1; t>=0; t--) {\n\t\t\t\t\t\tp = value.indexOf(array[t]);\n\t\t\t\t\t\tif(p !== -1) {\n\t\t\t\t\t\t\tarray.splice(t,1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Push the values on top of the main array\n\t\t\tarray.push.apply(array,value);\n\t\t}\n\t} else {\n\t\tp = array.indexOf(value);\n\t\tif(p !== -1) {\n\t\t\tarray.splice(p,1);\n\t\t}\n\t\tarray.push(value);\n\t}\n\treturn array;\n};\n\n/*\nRemove entries from an array\n\tarray: array to modify\n\tvalue: a single value to remove, or an array of values to remove\n*/\nexports.removeArrayEntries = function(array,value) {\n\tvar t,p;\n\tif($tw.utils.isArray(value)) {\n\t\tfor(t=0; t<value.length; t++) {\n\t\t\tp = array.indexOf(value[t]);\n\t\t\tif(p !== -1) {\n\t\t\t\tarray.splice(p,1);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tp = array.indexOf(value);\n\t\tif(p !== -1) {\n\t\t\tarray.splice(p,1);\n\t\t}\n\t}\n};\n\n/*\nCheck whether any members of a hashmap are present in another hashmap\n*/\nexports.checkDependencies = function(dependencies,changes) {\n\tvar hit = false;\n\t$tw.utils.each(changes,function(change,title) {\n\t\tif($tw.utils.hop(dependencies,title)) {\n\t\t\thit = true;\n\t\t}\n\t});\n\treturn hit;\n};\n\nexports.extend = function(object /* [, src] */) {\n\t$tw.utils.each(Array.prototype.slice.call(arguments, 1), function(source) {\n\t\tif(source) {\n\t\t\tfor(var property in source) {\n\t\t\t\tobject[property] = source[property];\n\t\t\t}\n\t\t}\n\t});\n\treturn object;\n};\n\nexports.deepCopy = function(object) {\n\tvar result,t;\n\tif($tw.utils.isArray(object)) {\n\t\t// Copy arrays\n\t\tresult = object.slice(0);\n\t} else if(typeof object === \"object\") {\n\t\tresult = {};\n\t\tfor(t in object) {\n\t\t\tif(object[t] !== undefined) {\n\t\t\t\tresult[t] = $tw.utils.deepCopy(object[t]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tresult = object;\n\t}\n\treturn result;\n};\n\nexports.extendDeepCopy = function(object,extendedProperties) {\n\tvar result = $tw.utils.deepCopy(object),t;\n\tfor(t in extendedProperties) {\n\t\tif(extendedProperties[t] !== undefined) {\n\t\t\tresult[t] = $tw.utils.deepCopy(extendedProperties[t]);\n\t\t}\n\t}\n\treturn result;\n};\n\nexports.deepFreeze = function deepFreeze(object) {\n\tvar property, key;\n\tif(object) {\n\t\tObject.freeze(object);\n\t\tfor(key in object) {\n\t\t\tproperty = object[key];\n\t\t\tif($tw.utils.hop(object,key) && (typeof property === \"object\") && !Object.isFrozen(property)) {\n\t\t\t\tdeepFreeze(property);\n\t\t\t}\n\t\t}\n\t}\n};\n\nexports.slowInSlowOut = function(t) {\n\treturn (1 - ((Math.cos(t * Math.PI) + 1) / 2));\n};\n\nexports.formatDateString = function(date,template) {\n\tvar result = \"\",\n\t\tt = template,\n\t\tmatches = [\n\t\t\t[/^0hh12/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getHours12(date));\n\t\t\t}],\n\t\t\t[/^wYYYY/, function() {\n\t\t\t\treturn $tw.utils.getYearForWeekNo(date);\n\t\t\t}],\n\t\t\t[/^hh12/, function() {\n\t\t\t\treturn $tw.utils.getHours12(date);\n\t\t\t}],\n\t\t\t[/^DDth/, function() {\n\t\t\t\treturn date.getDate() + $tw.utils.getDaySuffix(date);\n\t\t\t}],\n\t\t\t[/^YYYY/, function() {\n\t\t\t\treturn date.getFullYear();\n\t\t\t}],\n\t\t\t[/^0hh/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getHours());\n\t\t\t}],\n\t\t\t[/^0mm/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMinutes());\n\t\t\t}],\n\t\t\t[/^0ss/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getSeconds());\n\t\t\t}],\n\t\t\t[/^0DD/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getDate());\n\t\t\t}],\n\t\t\t[/^0MM/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMonth()+1);\n\t\t\t}],\n\t\t\t[/^0WW/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getWeek(date));\n\t\t\t}],\n\t\t\t[/^ddd/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Short/Day/\" + date.getDay());\n\t\t\t}],\n\t\t\t[/^mmm/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Short/Month/\" + (date.getMonth() + 1));\n\t\t\t}],\n\t\t\t[/^DDD/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Long/Day/\" + date.getDay());\n\t\t\t}],\n\t\t\t[/^MMM/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Long/Month/\" + (date.getMonth() + 1));\n\t\t\t}],\n\t\t\t[/^TZD/, function() {\n\t\t\t\tvar tz = date.getTimezoneOffset(),\n\t\t\t\tatz = Math.abs(tz);\n\t\t\t\treturn (tz < 0 ? '+' : '-') + $tw.utils.pad(Math.floor(atz / 60)) + ':' + $tw.utils.pad(atz % 60);\n\t\t\t}],\n\t\t\t[/^wYY/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getYearForWeekNo(date) - 2000);\n\t\t\t}],\n\t\t\t[/^[ap]m/, function() {\n\t\t\t\treturn $tw.utils.getAmPm(date).toLowerCase();\n\t\t\t}],\n\t\t\t[/^hh/, function() {\n\t\t\t\treturn date.getHours();\n\t\t\t}],\n\t\t\t[/^mm/, function() {\n\t\t\t\treturn date.getMinutes();\n\t\t\t}],\n\t\t\t[/^ss/, function() {\n\t\t\t\treturn date.getSeconds();\n\t\t\t}],\n\t\t\t[/^[AP]M/, function() {\n\t\t\t\treturn $tw.utils.getAmPm(date).toUpperCase();\n\t\t\t}],\n\t\t\t[/^DD/, function() {\n\t\t\t\treturn date.getDate();\n\t\t\t}],\n\t\t\t[/^MM/, function() {\n\t\t\t\treturn date.getMonth() + 1;\n\t\t\t}],\n\t\t\t[/^WW/, function() {\n\t\t\t\treturn $tw.utils.getWeek(date);\n\t\t\t}],\n\t\t\t[/^YY/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getFullYear() - 2000);\n\t\t\t}]\n\t\t];\n\twhile(t.length){\n\t\tvar matchString = \"\";\n\t\t$tw.utils.each(matches, function(m) {\n\t\t\tvar match = m[0].exec(t);\n\t\t\tif(match) {\n\t\t\t\tmatchString = m[1].call();\n\t\t\t\tt = t.substr(match[0].length);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\tif(matchString) {\n\t\t\tresult += matchString;\n\t\t} else {\n\t\t\tresult += t.charAt(0);\n\t\t\tt = t.substr(1);\n\t\t}\n\t}\n\tresult = result.replace(/\\\\(.)/g,\"$1\");\n\treturn result;\n};\n\nexports.getAmPm = function(date) {\n\treturn $tw.language.getString(\"Date/Period/\" + (date.getHours() >= 12 ? \"pm\" : \"am\"));\n};\n\nexports.getDaySuffix = function(date) {\n\treturn $tw.language.getString(\"Date/DaySuffix/\" + date.getDate());\n};\n\nexports.getWeek = function(date) {\n\tvar dt = new Date(date.getTime());\n\tvar d = dt.getDay();\n\tif(d === 0) {\n\t\td = 7; // JavaScript Sun=0, ISO Sun=7\n\t}\n\tdt.setTime(dt.getTime() + (4 - d) * 86400000);// shift day to Thurs of same week to calculate weekNo\n\tvar x = new Date(dt.getFullYear(),0,1);\n\tvar n = Math.floor((dt.getTime() - x.getTime()) / 86400000);\n\treturn Math.floor(n / 7) + 1;\n};\n\nexports.getYearForWeekNo = function(date) {\n\tvar dt = new Date(date.getTime());\n\tvar d = dt.getDay();\n\tif(d === 0) {\n\t\td = 7; // JavaScript Sun=0, ISO Sun=7\n\t}\n\tdt.setTime(dt.getTime() + (4 - d) * 86400000);// shift day to Thurs of same week\n\treturn dt.getFullYear();\n};\n\nexports.getHours12 = function(date) {\n\tvar h = date.getHours();\n\treturn h > 12 ? h-12 : ( h > 0 ? h : 12 );\n};\n\n/*\nConvert a date delta in milliseconds into a string representation of \"23 seconds ago\", \"27 minutes ago\" etc.\n\tdelta: delta in milliseconds\nReturns an object with these members:\n\tdescription: string describing the delta period\n\tupdatePeriod: time in millisecond until the string will be inaccurate\n*/\nexports.getRelativeDate = function(delta) {\n\tvar futurep = false;\n\tif(delta < 0) {\n\t\tdelta = -1 * delta;\n\t\tfuturep = true;\n\t}\n\tvar units = [\n\t\t{name: \"Years\",   duration:      365 * 24 * 60 * 60 * 1000},\n\t\t{name: \"Months\",  duration: (365/12) * 24 * 60 * 60 * 1000},\n\t\t{name: \"Days\",    duration:            24 * 60 * 60 * 1000},\n\t\t{name: \"Hours\",   duration:                 60 * 60 * 1000},\n\t\t{name: \"Minutes\", duration:                      60 * 1000},\n\t\t{name: \"Seconds\", duration:                           1000}\n\t];\n\tfor(var t=0; t<units.length; t++) {\n\t\tvar result = Math.floor(delta / units[t].duration);\n\t\tif(result >= 2) {\n\t\t\treturn {\n\t\t\t\tdelta: delta,\n\t\t\t\tdescription: $tw.language.getString(\n\t\t\t\t\t\"RelativeDate/\" + (futurep ? \"Future\" : \"Past\") + \"/\" + units[t].name,\n\t\t\t\t\t{variables:\n\t\t\t\t\t\t{period: result.toString()}\n\t\t\t\t\t}\n\t\t\t\t),\n\t\t\t\tupdatePeriod: units[t].duration\n\t\t\t};\n\t\t}\n\t}\n\treturn {\n\t\tdelta: delta,\n\t\tdescription: $tw.language.getString(\n\t\t\t\"RelativeDate/\" + (futurep ? \"Future\" : \"Past\") + \"/Second\",\n\t\t\t{variables:\n\t\t\t\t{period: \"1\"}\n\t\t\t}\n\t\t),\n\t\tupdatePeriod: 1000\n\t};\n};\n\n// Convert & to \"&amp;\", < to \"&lt;\", > to \"&gt;\", \" to \"&quot;\"\nexports.htmlEncode = function(s) {\n\tif(s) {\n\t\treturn s.toString().replace(/&/mg,\"&amp;\").replace(/</mg,\"&lt;\").replace(/>/mg,\"&gt;\").replace(/\\\"/mg,\"&quot;\");\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n// Converts all HTML entities to their character equivalents\nexports.entityDecode = function(s) {\n\tvar converter = String.fromCodePoint || String.fromCharCode,\n\t\te = s.substr(1,s.length-2); // Strip the & and the ;\n\tif(e.charAt(0) === \"#\") {\n\t\tif(e.charAt(1) === \"x\" || e.charAt(1) === \"X\") {\n\t\t\treturn converter(parseInt(e.substr(2),16));\t\n\t\t} else {\n\t\t\treturn converter(parseInt(e.substr(1),10));\n\t\t}\n\t} else {\n\t\tvar c = $tw.config.htmlEntities[e];\n\t\tif(c) {\n\t\t\treturn converter(c);\n\t\t} else {\n\t\t\treturn s; // Couldn't convert it as an entity, just return it raw\n\t\t}\n\t}\n};\n\nexports.unescapeLineBreaks = function(s) {\n\treturn s.replace(/\\\\n/mg,\"\\n\").replace(/\\\\b/mg,\" \").replace(/\\\\s/mg,\"\\\\\").replace(/\\r/mg,\"\");\n};\n\n/*\n * Returns an escape sequence for given character. Uses \\x for characters <=\n * 0xFF to save space, \\u for the rest.\n *\n * The code needs to be in sync with th code template in the compilation\n * function for \"action\" nodes.\n */\n// Copied from peg.js, thanks to David Majda\nexports.escape = function(ch) {\n\tvar charCode = ch.charCodeAt(0);\n\tif(charCode <= 0xFF) {\n\t\treturn '\\\\x' + $tw.utils.pad(charCode.toString(16).toUpperCase());\n\t} else {\n\t\treturn '\\\\u' + $tw.utils.pad(charCode.toString(16).toUpperCase(),4);\n\t}\n};\n\n// Turns a string into a legal JavaScript string\n// Copied from peg.js, thanks to David Majda\nexports.stringify = function(s) {\n\t/*\n\t* ECMA-262, 5th ed., 7.8.4: All characters may appear literally in a string\n\t* literal except for the closing quote character, backslash, carriage return,\n\t* line separator, paragraph separator, and line feed. Any character may\n\t* appear in the form of an escape sequence.\n\t*\n\t* For portability, we also escape all non-ASCII characters.\n\t*/\n\treturn (s || \"\")\n\t\t.replace(/\\\\/g, '\\\\\\\\')            // backslash\n\t\t.replace(/\"/g, '\\\\\"')              // double quote character\n\t\t.replace(/'/g, \"\\\\'\")              // single quote character\n\t\t.replace(/\\r/g, '\\\\r')             // carriage return\n\t\t.replace(/\\n/g, '\\\\n')             // line feed\n\t\t.replace(/[\\x80-\\uFFFF]/g, exports.escape); // non-ASCII characters\n};\n\n/*\nEscape the RegExp special characters with a preceding backslash\n*/\nexports.escapeRegExp = function(s) {\n    return s.replace(/[\\-\\/\\\\\\^\\$\\*\\+\\?\\.\\(\\)\\|\\[\\]\\{\\}]/g, '\\\\$&');\n};\n\n// Checks whether a link target is external, i.e. not a tiddler title\nexports.isLinkExternal = function(to) {\n\tvar externalRegExp = /^(?:file|http|https|mailto|ftp|irc|news|data|skype):[^\\s<>{}\\[\\]`|\"\\\\^]+(?:\\/|\\b)/i;\n\treturn externalRegExp.test(to);\n};\n\nexports.nextTick = function(fn) {\n/*global window: false */\n\tif(typeof process === \"undefined\") {\n\t\t// Apparently it would be faster to use postMessage - http://dbaron.org/log/20100309-faster-timeouts\n\t\twindow.setTimeout(fn,4);\n\t} else {\n\t\tprocess.nextTick(fn);\n\t}\n};\n\n/*\nConvert a hyphenated CSS property name into a camel case one\n*/\nexports.unHyphenateCss = function(propName) {\n\treturn propName.replace(/-([a-z])/gi, function(match0,match1) {\n\t\treturn match1.toUpperCase();\n\t});\n};\n\n/*\nConvert a camelcase CSS property name into a dashed one (\"backgroundColor\" --> \"background-color\")\n*/\nexports.hyphenateCss = function(propName) {\n\treturn propName.replace(/([A-Z])/g, function(match0,match1) {\n\t\treturn \"-\" + match1.toLowerCase();\n\t});\n};\n\n/*\nParse a text reference of one of these forms:\n* title\n* !!field\n* title!!field\n* title##index\n* etc\nReturns an object with the following fields, all optional:\n* title: tiddler title\n* field: tiddler field name\n* index: JSON property index\n*/\nexports.parseTextReference = function(textRef) {\n\t// Separate out the title, field name and/or JSON indices\n\tvar reTextRef = /(?:(.*?)!!(.+))|(?:(.*?)##(.+))|(.*)/mg,\n\t\tmatch = reTextRef.exec(textRef),\n\t\tresult = {};\n\tif(match && reTextRef.lastIndex === textRef.length) {\n\t\t// Return the parts\n\t\tif(match[1]) {\n\t\t\tresult.title = match[1];\n\t\t}\n\t\tif(match[2]) {\n\t\t\tresult.field = match[2];\n\t\t}\n\t\tif(match[3]) {\n\t\t\tresult.title = match[3];\n\t\t}\n\t\tif(match[4]) {\n\t\t\tresult.index = match[4];\n\t\t}\n\t\tif(match[5]) {\n\t\t\tresult.title = match[5];\n\t\t}\n\t} else {\n\t\t// If we couldn't parse it\n\t\tresult.title = textRef\n\t}\n\treturn result;\n};\n\n/*\nChecks whether a string is a valid fieldname\n*/\nexports.isValidFieldName = function(name) {\n\tif(!name || typeof name !== \"string\") {\n\t\treturn false;\n\t}\n\tname = name.toLowerCase().trim();\n\tvar fieldValidatorRegEx = /^[a-z0-9\\-\\._]+$/mg;\n\treturn fieldValidatorRegEx.test(name);\n};\n\n/*\nExtract the version number from the meta tag or from the boot file\n*/\n\n// Browser version\nexports.extractVersionInfo = function() {\n\tif($tw.packageInfo) {\n\t\treturn $tw.packageInfo.version;\n\t} else {\n\t\tvar metatags = document.getElementsByTagName(\"meta\");\n\t\tfor(var t=0; t<metatags.length; t++) {\n\t\t\tvar m = metatags[t];\n\t\t\tif(m.name === \"tiddlywiki-version\") {\n\t\t\t\treturn m.content;\n\t\t\t}\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nGet the animation duration in ms\n*/\nexports.getAnimationDuration = function() {\n\treturn parseInt($tw.wiki.getTiddlerText(\"$:/config/AnimationDuration\",\"400\"),10);\n};\n\n/*\nHash a string to a number\nDerived from http://stackoverflow.com/a/15710692\n*/\nexports.hashString = function(str) {\n\treturn str.split(\"\").reduce(function(a,b) {\n\t\ta = ((a << 5) - a) + b.charCodeAt(0);\n\t\treturn a & a;\n\t},0);\n};\n\n/*\nDecode a base64 string\n*/\nexports.base64Decode = function(string64) {\n\tif($tw.browser) {\n\t\t// TODO\n\t\tthrow \"$tw.utils.base64Decode() doesn't work in the browser\";\n\t} else {\n\t\treturn (new Buffer(string64,\"base64\")).toString();\n\t}\n};\n\n/*\nConvert a hashmap into a tiddler dictionary format sequence of name:value pairs\n*/\nexports.makeTiddlerDictionary = function(data) {\n\tvar output = [];\n\tfor(var name in data) {\n\t\toutput.push(name + \": \" + data[name]);\n\t}\n\treturn output.join(\"\\n\");\n};\n\n/*\nHigh resolution microsecond timer for profiling\n*/\nexports.timer = function(base) {\n\tvar m;\n\tif($tw.node) {\n\t\tvar r = process.hrtime();\t\t\n\t\tm =  r[0] * 1e3 + (r[1] / 1e6);\n\t} else if(window.performance) {\n\t\tm = performance.now();\n\t} else {\n\t\tm = Date.now();\n\t}\n\tif(typeof base !== \"undefined\") {\n\t\tm = m - base;\n\t}\n\treturn m;\n};\n\n/*\nConvert text and content type to a data URI\n*/\nexports.makeDataUri = function(text,type) {\n\ttype = type || \"text/vnd.tiddlywiki\";\n\tvar typeInfo = $tw.config.contentTypeInfo[type] || $tw.config.contentTypeInfo[\"text/plain\"],\n\t\tisBase64 = typeInfo.encoding === \"base64\",\n\t\tparts = [];\n\tparts.push(\"data:\");\n\tparts.push(type);\n\tparts.push(isBase64 ? \";base64\" : \"\");\n\tparts.push(\",\");\n\tparts.push(isBase64 ? text : encodeURIComponent(text));\n\treturn parts.join(\"\");\n};\n\n/*\nUseful for finding out the fully escaped CSS selector equivalent to a given tag. For example:\n\n$tw.utils.tagToCssSelector(\"$:/tags/Stylesheet\") --> tc-tagged-\\%24\\%3A\\%2Ftags\\%2FStylesheet\n*/\nexports.tagToCssSelector = function(tagName) {\n\treturn \"tc-tagged-\" + encodeURIComponent(tagName).replace(/[!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^`{\\|}~,]/mg,function(c) {\n\t\treturn \"\\\\\" + c;\n\t});\n};\n\n/*\nIE does not have sign function\n*/\nexports.sign = Math.sign || function(x) {\n\tx = +x; // convert to a number\n\tif (x === 0 || isNaN(x)) {\n\t\treturn x;\n\t}\n\treturn x > 0 ? 1 : -1;\n};\n\n/*\nIE does not have an endsWith function\n*/\nexports.strEndsWith = function(str,ending,position) {\n\tif(str.endsWith) {\n\t\treturn str.endsWith(ending,position);\n\t} else {\n\t\tif (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > str.length) {\n\t\t\tposition = str.length;\n\t\t}\n\t\tposition -= ending.length;\n\t\tvar lastIndex = str.indexOf(ending, position);\n\t\treturn lastIndex !== -1 && lastIndex === position;\n\t}\n};\n\n/*\nTransliterate string from eg. Cyrillic Russian to Latin\n*/\nvar transliterationPairs = {\n\t\"Ё\":\"YO\",\n\t\"Й\":\"I\",\n\t\"Ц\":\"TS\",\n\t\"У\":\"U\",\n\t\"К\":\"K\",\n\t\"Е\":\"E\",\n\t\"Н\":\"N\",\n\t\"Г\":\"G\",\n\t\"Ш\":\"SH\",\n\t\"Щ\":\"SCH\",\n\t\"З\":\"Z\",\n\t\"Х\":\"H\",\n\t\"Ъ\":\"'\",\n\t\"ё\":\"yo\",\n\t\"й\":\"i\",\n\t\"ц\":\"ts\",\n\t\"у\":\"u\",\n\t\"к\":\"k\",\n\t\"е\":\"e\",\n\t\"н\":\"n\",\n\t\"г\":\"g\",\n\t\"ш\":\"sh\",\n\t\"щ\":\"sch\",\n\t\"з\":\"z\",\n\t\"х\":\"h\",\n\t\"ъ\":\"'\",\n\t\"Ф\":\"F\",\n\t\"Ы\":\"I\",\n\t\"В\":\"V\",\n\t\"А\":\"a\",\n\t\"П\":\"P\",\n\t\"Р\":\"R\",\n\t\"О\":\"O\",\n\t\"Л\":\"L\",\n\t\"Д\":\"D\",\n\t\"Ж\":\"ZH\",\n\t\"Э\":\"E\",\n\t\"ф\":\"f\",\n\t\"ы\":\"i\",\n\t\"в\":\"v\",\n\t\"а\":\"a\",\n\t\"п\":\"p\",\n\t\"р\":\"r\",\n\t\"о\":\"o\",\n\t\"л\":\"l\",\n\t\"д\":\"d\",\n\t\"ж\":\"zh\",\n\t\"э\":\"e\",\n\t\"Я\":\"Ya\",\n\t\"Ч\":\"CH\",\n\t\"С\":\"S\",\n\t\"М\":\"M\",\n\t\"И\":\"I\",\n\t\"Т\":\"T\",\n\t\"Ь\":\"'\",\n\t\"Б\":\"B\",\n\t\"Ю\":\"YU\",\n\t\"я\":\"ya\",\n\t\"ч\":\"ch\",\n\t\"с\":\"s\",\n\t\"м\":\"m\",\n\t\"и\":\"i\",\n\t\"т\":\"t\",\n\t\"ь\":\"'\",\n\t\"б\":\"b\",\n\t\"ю\":\"yu\"\n};\n\nexports.transliterate = function(str) {\n\treturn str.split(\"\").map(function(char) {\n\t\treturn transliterationPairs[char] || char;\n\t}).join(\"\");\n};\n\n})();\n",
            "title": "$:/core/modules/utils/utils.js",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/widgets/action-createtiddler.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-createtiddler.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to create a new tiddler with a unique name and specified fields.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CreateTiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCreateTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCreateTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nCreateTiddlerWidget.prototype.execute = function() {\n\tthis.actionBaseTitle = this.getAttribute(\"$basetitle\");\n\tthis.actionSaveTitle = this.getAttribute(\"$savetitle\");\n\tthis.actionTimestamp = this.getAttribute(\"$timestamp\",\"yes\") === \"yes\";\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nCreateTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif($tw.utils.count(changedAttributes) > 0) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nCreateTiddlerWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar title = this.wiki.generateNewTitle(this.actionBaseTitle),\n\t\tfields = {},\n\t\tcreationFields,\n\t\tmodificationFields;\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tfields[name] = attribute;\n\t\t}\n\t});\n\tif(this.actionTimestamp) {\n\t\tcreationFields = this.wiki.getCreationFields();\n\t\tmodificationFields = this.wiki.getModificationFields();\n\t}\n\tvar tiddler = this.wiki.addTiddler(new $tw.Tiddler(creationFields,fields,modificationFields,{title: title}));\n\tif(this.actionSaveTitle) {\n\t\tthis.wiki.setTextReference(this.actionSaveTitle,title,this.getVariable(\"currentTiddler\"));\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-createtiddler\"] = CreateTiddlerWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/action-createtiddler.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-deletefield.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-deletefield.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to delete fields of a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DeleteFieldWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDeleteFieldWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDeleteFieldWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nDeleteFieldWidget.prototype.execute = function() {\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.actionField = this.getAttribute(\"$field\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nDeleteFieldWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$tiddler\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nDeleteFieldWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar self = this,\n\t\ttiddler = this.wiki.getTiddler(self.actionTiddler),\n\t\tremoveFields = {},\n\t\thasChanged = false;\n\tif(this.actionField) {\n\t\tremoveFields[this.actionField] = undefined;\n\t\tif(this.actionField in tiddler.fields) {\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\tif(tiddler) {\n\t\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\t\tif(name.charAt(0) !== \"$\" && name !== \"title\") {\n\t\t\t\tremoveFields[name] = undefined;\n\t\t\t\thasChanged = true;\n\t\t\t}\n\t\t});\n\t\tif(hasChanged) {\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),tiddler,removeFields,this.wiki.getModificationFields()));\t\t\t\n\t\t}\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-deletefield\"] = DeleteFieldWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/action-deletefield.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-deletetiddler.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-deletetiddler.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to delete a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DeleteTiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDeleteTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDeleteTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nDeleteTiddlerWidget.prototype.execute = function() {\n\tthis.actionFilter = this.getAttribute(\"$filter\");\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nDeleteTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$filter\"] || changedAttributes[\"$tiddler\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nDeleteTiddlerWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar tiddlers = [];\n\tif(this.actionFilter) {\n\t\ttiddlers = this.wiki.filterTiddlers(this.actionFilter,this);\n\t}\n\tif(this.actionTiddler) {\n\t\ttiddlers.push(this.actionTiddler);\n\t}\n\tfor(var t=0; t<tiddlers.length; t++) {\n\t\tthis.wiki.deleteTiddler(tiddlers[t]);\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-deletetiddler\"] = DeleteTiddlerWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/action-deletetiddler.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-listops.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-listops.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to apply list operations to any tiddler field (defaults to the 'list' field of the current tiddler)\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\nvar ActionListopsWidget = function(parseTreeNode, options) {\n\tthis.initialise(parseTreeNode, options);\n};\n/**\n * Inherit from the base widget class\n */\nActionListopsWidget.prototype = new Widget();\n/**\n * Render this widget into the DOM\n */\nActionListopsWidget.prototype.render = function(parent, nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n/**\n * Compute the internal state of the widget\n */\nActionListopsWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.target = this.getAttribute(\"$tiddler\", this.getVariable(\n\t\t\"currentTiddler\"));\n\tthis.filter = this.getAttribute(\"$filter\");\n\tthis.subfilter = this.getAttribute(\"$subfilter\");\n\tthis.listField = this.getAttribute(\"$field\", \"list\");\n\tthis.listIndex = this.getAttribute(\"$index\");\n\tthis.filtertags = this.getAttribute(\"$tags\");\n};\n/**\n * \tRefresh the widget by ensuring our attributes are up to date\n */\nActionListopsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.$tiddler || changedAttributes.$filter ||\n\t\tchangedAttributes.$subfilter || changedAttributes.$field ||\n\t\tchangedAttributes.$index || changedAttributes.$tags) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n/**\n * \tInvoke the action associated with this widget\n */\nActionListopsWidget.prototype.invokeAction = function(triggeringWidget,\n\tevent) {\n\t//Apply the specified filters to the lists\n\tvar field = this.listField,\n\t\tindex,\n\t\ttype = \"!!\",\n\t\tlist = this.listField;\n\tif(this.listIndex) {\n\t\tfield = undefined;\n\t\tindex = this.listIndex;\n\t\ttype = \"##\";\n\t\tlist = this.listIndex;\n\t}\n\tif(this.filter) {\n\t\tthis.wiki.setText(this.target, field, index, $tw.utils.stringifyList(\n\t\t\tthis.wiki\n\t\t\t.filterTiddlers(this.filter, this)));\n\t}\n\tif(this.subfilter) {\n\t\tvar subfilter = \"[list[\" + this.target + type + list + \"]] \" + this.subfilter;\n\t\tthis.wiki.setText(this.target, field, index, $tw.utils.stringifyList(\n\t\t\tthis.wiki\n\t\t\t.filterTiddlers(subfilter, this)));\n\t}\n\tif(this.filtertags) {\n\t\tvar tiddler = this.wiki.getTiddler(this.target),\n\t\t\toldtags = tiddler ? (tiddler.fields.tags || []).slice(0) : [],\n\t\t\ttagfilter = \"[list[\" + this.target + \"!!tags]] \" + this.filtertags,\n\t\t\tnewtags = this.wiki.filterTiddlers(tagfilter,this);\n\t\tif($tw.utils.stringifyList(oldtags.sort()) !== $tw.utils.stringifyList(newtags.sort())) {\n\t\t\tthis.wiki.setText(this.target,\"tags\",undefined,$tw.utils.stringifyList(newtags));\t\t\t\n\t\t}\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-listops\"] = ActionListopsWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/action-listops.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-navigate.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-navigate.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to navigate to a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar NavigateWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nNavigateWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nNavigateWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nNavigateWidget.prototype.execute = function() {\n\tthis.actionTo = this.getAttribute(\"$to\");\n\tthis.actionScroll = this.getAttribute(\"$scroll\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nNavigateWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$to\"] || changedAttributes[\"$scroll\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nNavigateWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar bounds = triggeringWidget && triggeringWidget.getBoundingClientRect && triggeringWidget.getBoundingClientRect(),\n\t\tsuppressNavigation = event.metaKey || event.ctrlKey || (event.button === 1);\n\tif(this.actionScroll === \"yes\") {\n\t\tsuppressNavigation = false;\n\t} else if(this.actionScroll === \"no\") {\n\t\tsuppressNavigation = true;\n\t}\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.actionTo === undefined ? this.getVariable(\"currentTiddler\") : this.actionTo,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: triggeringWidget,\n\t\tnavigateFromClientRect: bounds && { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: suppressNavigation\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-navigate\"] = NavigateWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/action-navigate.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-sendmessage.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-sendmessage.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to send a message\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SendMessageWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSendMessageWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSendMessageWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nSendMessageWidget.prototype.execute = function() {\n\tthis.actionMessage = this.getAttribute(\"$message\");\n\tthis.actionParam = this.getAttribute(\"$param\");\n\tthis.actionName = this.getAttribute(\"$name\");\n\tthis.actionValue = this.getAttribute(\"$value\",\"\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nSendMessageWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(Object.keys(changedAttributes).length) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nSendMessageWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\t// Get the string parameter\n\tvar param = this.actionParam;\n\t// Assemble the attributes as a hashmap\n\tvar paramObject = Object.create(null);\n\tvar count = 0;\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tparamObject[name] = attribute;\n\t\t\tcount++;\n\t\t}\n\t});\n\t// Add name/value pair if present\n\tif(this.actionName) {\n\t\tparamObject[this.actionName] = this.actionValue;\n\t}\n\t// Dispatch the message\n\tthis.dispatchEvent({\n\t\ttype: this.actionMessage,\n\t\tparam: param,\n\t\tparamObject: paramObject,\n\t\ttiddlerTitle: this.getVariable(\"currentTiddler\"),\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tevent: event\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-sendmessage\"] = SendMessageWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/action-sendmessage.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-setfield.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-setfield.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to set a single field or index on a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SetFieldWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSetFieldWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSetFieldWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nSetFieldWidget.prototype.execute = function() {\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.actionField = this.getAttribute(\"$field\");\n\tthis.actionIndex = this.getAttribute(\"$index\");\n\tthis.actionValue = this.getAttribute(\"$value\");\n\tthis.actionTimestamp = this.getAttribute(\"$timestamp\",\"yes\") === \"yes\";\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nSetFieldWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$tiddler\"] || changedAttributes[\"$field\"] || changedAttributes[\"$index\"] || changedAttributes[\"$value\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nSetFieldWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar self = this,\n\t\toptions = {};\n\toptions.suppressTimestamp = !this.actionTimestamp;\n\tif((typeof this.actionField == \"string\") || (typeof this.actionIndex == \"string\")  || (typeof this.actionValue == \"string\")) {\n\t\tthis.wiki.setText(this.actionTiddler,this.actionField,this.actionIndex,this.actionValue,options);\n\t}\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tself.wiki.setText(self.actionTiddler,name,undefined,attribute,options);\n\t\t}\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-setfield\"] = SetFieldWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/action-setfield.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/browse.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/browse.js\ntype: application/javascript\nmodule-type: widget\n\nBrowse widget for browsing for files to import\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar BrowseWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nBrowseWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nBrowseWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar domNode = this.document.createElement(\"input\");\n\tdomNode.setAttribute(\"type\",\"file\");\n\tif(this.browseMultiple) {\n\t\tdomNode.setAttribute(\"multiple\",\"multiple\");\n\t}\n\tif(this.tooltip) {\n\t\tdomNode.setAttribute(\"title\",this.tooltip);\n\t}\n\t// Nw.js supports \"nwsaveas\" to force a \"save as\" dialogue that allows a new or existing file to be selected\n\tif(this.nwsaveas) {\n\t\tdomNode.setAttribute(\"nwsaveas\",this.nwsaveas);\n\t}\n\t// Nw.js supports \"webkitdirectory\" to allow a directory to be selected\n\tif(this.webkitdirectory) {\n\t\tdomNode.setAttribute(\"webkitdirectory\",this.webkitdirectory);\n\t}\n\t// Add a click event handler\n\tdomNode.addEventListener(\"change\",function (event) {\n\t\tif(self.message) {\n\t\t\tself.dispatchEvent({type: self.message, param: self.param, files: event.target.files});\n\t\t} else {\n\t\t\tself.wiki.readFiles(event.target.files,function(tiddlerFieldsArray) {\n\t\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray)});\n\t\t\t});\n\t\t}\n\t\treturn false;\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nBrowseWidget.prototype.execute = function() {\n\tthis.browseMultiple = this.getAttribute(\"multiple\");\n\tthis.message = this.getAttribute(\"message\");\n\tthis.param = this.getAttribute(\"param\");\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis.nwsaveas = this.getAttribute(\"nwsaveas\");\n\tthis.webkitdirectory = this.getAttribute(\"webkitdirectory\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nBrowseWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.browse = BrowseWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/browse.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/button.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/button.js\ntype: application/javascript\nmodule-type: widget\n\nButton widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ButtonWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nButtonWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nButtonWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar tag = \"button\";\n\tif(this.buttonTag && $tw.config.htmlUnsafeElements.indexOf(this.buttonTag) === -1) {\n\t\ttag = this.buttonTag;\n\t}\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = this[\"class\"].split(\" \") || [],\n\t\tisPoppedUp = this.popup && this.isPoppedUp();\n\tif(this.selectedClass) {\n\t\tif(this.set && this.setTo && this.isSelected()) {\n\t\t\t$tw.utils.pushTop(classes,this.selectedClass.split(\" \"));\n\t\t}\n\t\tif(isPoppedUp) {\n\t\t\t$tw.utils.pushTop(classes,this.selectedClass.split(\" \"));\n\t\t}\n\t}\n\tif(isPoppedUp) {\n\t\t$tw.utils.pushTop(classes,\"tc-popup-handle\");\n\t}\n\tdomNode.className = classes.join(\" \");\n\t// Assign other attributes\n\tif(this.style) {\n\t\tdomNode.setAttribute(\"style\",this.style);\n\t}\n\tif(this.tooltip) {\n\t\tdomNode.setAttribute(\"title\",this.tooltip);\n\t}\n\tif(this[\"aria-label\"]) {\n\t\tdomNode.setAttribute(\"aria-label\",this[\"aria-label\"]);\n\t}\n\t// Add a click event handler\n\tdomNode.addEventListener(\"click\",function (event) {\n\t\tvar handled = false;\n\t\tif(self.invokeActions(this,event)) {\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.to) {\n\t\t\tself.navigateTo(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.message) {\n\t\t\tself.dispatchMessage(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.popup) {\n\t\t\tself.triggerPopup(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.set) {\n\t\t\tself.setTiddler();\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.actions) {\n\t\t\tself.invokeActionString(self.actions,self,event);\n\t\t}\n\t\tif(handled) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t}\n\t\treturn handled;\n\t},false);\n\t// Make it draggable if required\n\tif(this.dragTiddler || this.dragFilter) {\n\t\t$tw.utils.makeDraggable({\n\t\t\tdomNode: domNode,\n\t\t\tdragTiddlerFn: function() {return self.dragTiddler;},\n\t\t\tdragFilterFn: function() {return self.dragFilter;},\n\t\t\twidget: this\n\t\t});\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nWe don't allow actions to propagate because we trigger actions ourselves\n*/\nButtonWidget.prototype.allowActionPropagation = function() {\n\treturn false;\n};\n\nButtonWidget.prototype.getBoundingClientRect = function() {\n\treturn this.domNodes[0].getBoundingClientRect();\n};\n\nButtonWidget.prototype.isSelected = function() {\n    return this.wiki.getTextReference(this.set,this.defaultSetValue,this.getVariable(\"currentTiddler\")) === this.setTo;\n};\n\nButtonWidget.prototype.isPoppedUp = function() {\n\tvar tiddler = this.wiki.getTiddler(this.popup);\n\tvar result = tiddler && tiddler.fields.text ? $tw.popup.readPopupState(tiddler.fields.text) : false;\n\treturn result;\n};\n\nButtonWidget.prototype.navigateTo = function(event) {\n\tvar bounds = this.getBoundingClientRect();\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.to,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: this,\n\t\tnavigateFromClientRect: { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: event.metaKey || event.ctrlKey || (event.button === 1),\n\t\tevent: event\n\t});\n};\n\nButtonWidget.prototype.dispatchMessage = function(event) {\n\tthis.dispatchEvent({type: this.message, param: this.param, tiddlerTitle: this.getVariable(\"currentTiddler\"), event: event});\n};\n\nButtonWidget.prototype.triggerPopup = function(event) {\n\t$tw.popup.triggerPopup({\n\t\tdomNode: this.domNodes[0],\n\t\ttitle: this.popup,\n\t\twiki: this.wiki\n\t});\n};\n\nButtonWidget.prototype.setTiddler = function() {\n\tthis.wiki.setTextReference(this.set,this.setTo,this.getVariable(\"currentTiddler\"));\n};\n\n/*\nCompute the internal state of the widget\n*/\nButtonWidget.prototype.execute = function() {\n\t// Get attributes\n\tthis.actions = this.getAttribute(\"actions\");\n\tthis.to = this.getAttribute(\"to\");\n\tthis.message = this.getAttribute(\"message\");\n\tthis.param = this.getAttribute(\"param\");\n\tthis.set = this.getAttribute(\"set\");\n\tthis.setTo = this.getAttribute(\"setTo\");\n\tthis.popup = this.getAttribute(\"popup\");\n\tthis.hover = this.getAttribute(\"hover\");\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tthis[\"aria-label\"] = this.getAttribute(\"aria-label\");\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis.style = this.getAttribute(\"style\");\n\tthis.selectedClass = this.getAttribute(\"selectedClass\");\n\tthis.defaultSetValue = this.getAttribute(\"default\",\"\");\n\tthis.buttonTag = this.getAttribute(\"tag\");\n\tthis.dragTiddler = this.getAttribute(\"dragTiddler\");\n\tthis.dragFilter = this.getAttribute(\"dragFilter\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nButtonWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.to || changedAttributes.message || changedAttributes.param || changedAttributes.set || changedAttributes.setTo || changedAttributes.popup || changedAttributes.hover || changedAttributes[\"class\"] || changedAttributes.selectedClass || changedAttributes.style || changedAttributes.dragFilter || changedAttributes.dragTiddler || (this.set && changedTiddlers[this.set]) || (this.popup && changedTiddlers[this.popup])) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.button = ButtonWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/button.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/checkbox.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/checkbox.js\ntype: application/javascript\nmodule-type: widget\n\nCheckbox widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CheckboxWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCheckboxWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCheckboxWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create our elements\n\tthis.labelDomNode = this.document.createElement(\"label\");\n\tthis.labelDomNode.setAttribute(\"class\",this.checkboxClass);\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"checkbox\");\n\tif(this.getValue()) {\n\t\tthis.inputDomNode.setAttribute(\"checked\",\"true\");\n\t}\n\tthis.labelDomNode.appendChild(this.inputDomNode);\n\tthis.spanDomNode = this.document.createElement(\"span\");\n\tthis.labelDomNode.appendChild(this.spanDomNode);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.labelDomNode,nextSibling);\n\tthis.renderChildren(this.spanDomNode,null);\n\tthis.domNodes.push(this.labelDomNode);\n};\n\nCheckboxWidget.prototype.getValue = function() {\n\tvar tiddler = this.wiki.getTiddler(this.checkboxTitle);\n\tif(tiddler) {\n\t\tif(this.checkboxTag) {\n\t\t\tif(this.checkboxInvertTag) {\n\t\t\t\treturn !tiddler.hasTag(this.checkboxTag);\n\t\t\t} else {\n\t\t\t\treturn tiddler.hasTag(this.checkboxTag);\n\t\t\t}\n\t\t}\n\t\tif(this.checkboxField) {\n\t\t\tvar value;\n\t\t\tif($tw.utils.hop(tiddler.fields,this.checkboxField)) {\n\t\t\t\tvalue = tiddler.fields[this.checkboxField] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = this.checkboxDefault || \"\";\n\t\t\t}\n\t\t\tif(value === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(value === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\tif(this.checkboxIndex) {\n\t\t\tvar value = this.wiki.extractTiddlerDataItem(tiddler,this.checkboxIndex,this.checkboxDefault || \"\");\n\t\t\tif(value === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(value === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif(this.checkboxTag) {\n\t\t\treturn false;\n\t\t}\n\t\tif(this.checkboxField) {\n\t\t\tif(this.checkboxDefault === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(this.checkboxDefault === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\nCheckboxWidget.prototype.handleChangeEvent = function(event) {\n\tvar checked = this.inputDomNode.checked,\n\t\ttiddler = this.wiki.getTiddler(this.checkboxTitle),\n\t\tfallbackFields = {text: \"\"},\n\t\tnewFields = {title: this.checkboxTitle},\n\t\thasChanged = false,\n\t\ttagCheck = false,\n\t\thasTag = tiddler && tiddler.hasTag(this.checkboxTag),\n\t\tvalue = checked ? this.checkboxChecked : this.checkboxUnchecked;\n\tif(this.checkboxTag && this.checkboxInvertTag === \"yes\") {\n\t\ttagCheck = hasTag === checked;\n\t} else {\n\t\ttagCheck = hasTag !== checked;\n\t}\n\t// Set the tag if specified\n\tif(this.checkboxTag && (!tiddler || tagCheck)) {\n\t\tnewFields.tags = tiddler ? (tiddler.fields.tags || []).slice(0) : [];\n\t\tvar pos = newFields.tags.indexOf(this.checkboxTag);\n\t\tif(pos !== -1) {\n\t\t\tnewFields.tags.splice(pos,1);\n\t\t}\n\t\tif(this.checkboxInvertTag === \"yes\" && !checked) {\n\t\t\tnewFields.tags.push(this.checkboxTag);\n\t\t} else if(this.checkboxInvertTag !== \"yes\" && checked) {\n\t\t\tnewFields.tags.push(this.checkboxTag);\n\t\t}\n\t\thasChanged = true;\n\t}\n\t// Set the field if specified\n\tif(this.checkboxField) {\n\t\tif(!tiddler || tiddler.fields[this.checkboxField] !== value) {\n\t\t\tnewFields[this.checkboxField] = value;\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\t// Set the index if specified\n\tif(this.checkboxIndex) {\n\t\tvar indexValue = this.wiki.extractTiddlerDataItem(this.checkboxTitle,this.checkboxIndex);\n\t\tif(!tiddler || indexValue !== value) {\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\tif(hasChanged) {\n\t\tif(this.checkboxIndex) {\n\t\t\tthis.wiki.setText(this.checkboxTitle,\"\",this.checkboxIndex,value);\n\t\t} else {\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),fallbackFields,tiddler,newFields,this.wiki.getModificationFields()));\n\t\t}\n\t}\n\t// Trigger actions\n\tif(this.checkboxActions) {\n\t\tthis.invokeActionString(this.checkboxActions,this,event);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nCheckboxWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.checkboxActions = this.getAttribute(\"actions\");\n\tthis.checkboxTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.checkboxTag = this.getAttribute(\"tag\");\n\tthis.checkboxField = this.getAttribute(\"field\");\n\tthis.checkboxIndex = this.getAttribute(\"index\");\n\tthis.checkboxChecked = this.getAttribute(\"checked\");\n\tthis.checkboxUnchecked = this.getAttribute(\"unchecked\");\n\tthis.checkboxDefault = this.getAttribute(\"default\");\n\tthis.checkboxClass = this.getAttribute(\"class\",\"\");\n\tthis.checkboxInvertTag = this.getAttribute(\"invertTag\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCheckboxWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.tag || changedAttributes.invertTag || changedAttributes.field || changedAttributes.index || changedAttributes.checked || changedAttributes.unchecked || changedAttributes[\"default\"] || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tif(changedTiddlers[this.checkboxTitle]) {\n\t\t\tthis.inputDomNode.checked = this.getValue();\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.checkbox = CheckboxWidget;\n\n})();",
            "title": "$:/core/modules/widgets/checkbox.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/codeblock.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/codeblock.js\ntype: application/javascript\nmodule-type: widget\n\nCode block node widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CodeBlockWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCodeBlockWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCodeBlockWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar codeNode = this.document.createElement(\"code\"),\n\t\tdomNode = this.document.createElement(\"pre\");\n\tcodeNode.appendChild(this.document.createTextNode(this.getAttribute(\"code\")));\n\tdomNode.appendChild(codeNode);\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.domNodes.push(domNode);\n\tif(this.postRender) {\n\t\tthis.postRender();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nCodeBlockWidget.prototype.execute = function() {\n\tthis.language = this.getAttribute(\"language\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCodeBlockWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.codeblock = CodeBlockWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/codeblock.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/count.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/count.js\ntype: application/javascript\nmodule-type: widget\n\nCount widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CountWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCountWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCountWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.currentCount);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nCountWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.filter = this.getAttribute(\"filter\");\n\t// Execute the filter\n\tif(this.filter) {\n\t\tthis.currentCount = this.wiki.filterTiddlers(this.filter,this).length;\n\t} else {\n\t\tthis.currentCount = undefined;\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCountWidget.prototype.refresh = function(changedTiddlers) {\n\t// Re-execute the filter to get the count\n\tthis.computeAttributes();\n\tvar oldCount = this.currentCount;\n\tthis.execute();\n\tif(this.currentCount !== oldCount) {\n\t\t// Regenerate and rerender the widget and replace the existing DOM node\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n\n};\n\nexports.count = CountWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/count.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/draggable.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/draggable.js\ntype: application/javascript\nmodule-type: widget\n\nDraggable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DraggableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDraggableWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDraggableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Sanitise the specified tag\n\tvar tag = this.draggableTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"div\";\n\t}\n\t// Create our element\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = [\"tc-draggable\"];\n\tif(this.draggableClasses) {\n\t\tclasses.push(this.draggableClasses);\n\t}\n\tdomNode.setAttribute(\"class\",classes.join(\" \"));\n\t// Add event handlers\n\t$tw.utils.makeDraggable({\n\t\tdomNode: domNode,\n\t\tdragTiddlerFn: function() {return self.getAttribute(\"tiddler\");},\n\t\tdragFilterFn: function() {return self.getAttribute(\"filter\");},\n\t\twidget: this\n\t});\n\t// Insert the link into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nDraggableWidget.prototype.execute = function() {\n\t// Pick up our attributes\n\tthis.draggableTag = this.getAttribute(\"tag\",\"div\");\n\tthis.draggableClasses = this.getAttribute(\"class\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDraggableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedTiddlers.tag || changedTiddlers[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.draggable = DraggableWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/draggable.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/droppable.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/droppable.js\ntype: application/javascript\nmodule-type: widget\n\nDroppable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DroppableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDroppableWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDroppableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.droppableTag && $tw.config.htmlUnsafeElements.indexOf(this.droppableTag) === -1) {\n\t\ttag = this.droppableTag;\n\t}\n\t// Create element and assign classes\n\tvar domNode = this.document.createElement(tag),\n\t\tclasses = (this[\"class\"] || \"\").split(\" \");\n\tclasses.push(\"tc-droppable\");\n\tdomNode.className = classes.join(\" \");\n\t// Add event handlers\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"dragenter\", handlerObject: this, handlerMethod: \"handleDragEnterEvent\"},\n\t\t{name: \"dragover\", handlerObject: this, handlerMethod: \"handleDragOverEvent\"},\n\t\t{name: \"dragleave\", handlerObject: this, handlerMethod: \"handleDragLeaveEvent\"},\n\t\t{name: \"drop\", handlerObject: this, handlerMethod: \"handleDropEvent\"}\n\t]);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n\t// Stack of outstanding enter/leave events\n\tthis.currentlyEntered = [];\n};\n\nDroppableWidget.prototype.enterDrag = function(event) {\n\tif(this.currentlyEntered.indexOf(event.target) === -1) {\n\t\tthis.currentlyEntered.push(event.target);\n\t}\n\t// If we're entering for the first time we need to apply highlighting\n\t$tw.utils.addClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDroppableWidget.prototype.leaveDrag = function(event) {\n\tvar pos = this.currentlyEntered.indexOf(event.target);\n\tif(pos !== -1) {\n\t\tthis.currentlyEntered.splice(pos,1);\n\t}\n\t// Remove highlighting if we're leaving externally. The hacky second condition is to resolve a problem with Firefox whereby there is an erroneous dragenter event if the node being dragged is within the dropzone\n\tif(this.currentlyEntered.length === 0 || (this.currentlyEntered.length === 1 && this.currentlyEntered[0] === $tw.dragInProgress)) {\n\t\tthis.currentlyEntered = [];\n\t\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t}\n};\n\nDroppableWidget.prototype.handleDragEnterEvent  = function(event) {\n\tthis.enterDrag(event);\n\t// Tell the browser that we're ready to handle the drop\n\tevent.preventDefault();\n\t// Tell the browser not to ripple the drag up to any parent drop handlers\n\tevent.stopPropagation();\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDragOverEvent  = function(event) {\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Tell the browser that we're still interested in the drop\n\tevent.preventDefault();\n\t// Set the drop effect\n\tevent.dataTransfer.dropEffect = this.droppableEffect;\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDragLeaveEvent  = function(event) {\n\tthis.leaveDrag(event);\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDropEvent  = function(event) {\n\tvar self = this;\n\tthis.leaveDrag(event);\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\tvar dataTransfer = event.dataTransfer;\n\t// Remove highlighting\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t// Try to import the various data types we understand\n\t$tw.utils.importDataTransfer(dataTransfer,null,function(fieldsArray) {\n\t\tfieldsArray.forEach(function(fields) {\n\t\t\tself.performActions(fields.title || fields.text,event);\n\t\t});\n\t});\n\t// Tell the browser that we handled the drop\n\tevent.preventDefault();\n\t// Stop the drop ripple up to any parent handlers\n\tevent.stopPropagation();\n\treturn false;\n};\n\nDroppableWidget.prototype.performActions = function(title,event) {\n\tif(this.droppableActions) {\n\t\tthis.invokeActionString(this.droppableActions,this,event,{actionTiddler: title});\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nDroppableWidget.prototype.execute = function() {\n\tthis.droppableActions = this.getAttribute(\"actions\");\n\tthis.droppableEffect = this.getAttribute(\"effect\",\"copy\");\n\tthis.droppableTag = this.getAttribute(\"tag\");\n\tthis.droppableClass = this.getAttribute(\"class\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDroppableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"class\"] || changedAttributes.tag) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.droppable = DroppableWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/droppable.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/dropzone.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/dropzone.js\ntype: application/javascript\nmodule-type: widget\n\nDropzone widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DropZoneWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDropZoneWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDropZoneWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar domNode = this.document.createElement(\"div\");\n\tdomNode.className = \"tc-dropzone\";\n\t// Add event handlers\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"dragenter\", handlerObject: this, handlerMethod: \"handleDragEnterEvent\"},\n\t\t{name: \"dragover\", handlerObject: this, handlerMethod: \"handleDragOverEvent\"},\n\t\t{name: \"dragleave\", handlerObject: this, handlerMethod: \"handleDragLeaveEvent\"},\n\t\t{name: \"drop\", handlerObject: this, handlerMethod: \"handleDropEvent\"},\n\t\t{name: \"paste\", handlerObject: this, handlerMethod: \"handlePasteEvent\"}\n\t]);\n\tdomNode.addEventListener(\"click\",function (event) {\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n\t// Stack of outstanding enter/leave events\n\tthis.currentlyEntered = [];\n};\n\nDropZoneWidget.prototype.enterDrag = function(event) {\n\tif(this.currentlyEntered.indexOf(event.target) === -1) {\n\t\tthis.currentlyEntered.push(event.target);\n\t}\n\t// If we're entering for the first time we need to apply highlighting\n\t$tw.utils.addClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDropZoneWidget.prototype.leaveDrag = function(event) {\n\tvar pos = this.currentlyEntered.indexOf(event.target);\n\tif(pos !== -1) {\n\t\tthis.currentlyEntered.splice(pos,1);\n\t}\n\t// Remove highlighting if we're leaving externally\n\tif(this.currentlyEntered.length === 0) {\n\t\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t}\n};\n\nDropZoneWidget.prototype.handleDragEnterEvent  = function(event) {\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\tthis.enterDrag(event);\n\t// Tell the browser that we're ready to handle the drop\n\tevent.preventDefault();\n\t// Tell the browser not to ripple the drag up to any parent drop handlers\n\tevent.stopPropagation();\n};\n\nDropZoneWidget.prototype.handleDragOverEvent  = function(event) {\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\t// Tell the browser that we're still interested in the drop\n\tevent.preventDefault();\n\tevent.dataTransfer.dropEffect = \"copy\"; // Explicitly show this is a copy\n};\n\nDropZoneWidget.prototype.handleDragLeaveEvent  = function(event) {\n\tthis.leaveDrag(event);\n};\n\nDropZoneWidget.prototype.handleDropEvent  = function(event) {\n\tvar self = this;\n\tthis.leaveDrag(event);\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\tvar self = this,\n\t\tdataTransfer = event.dataTransfer;\n\t// Remove highlighting\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t// Import any files in the drop\n\tvar numFiles = 0;\n\tif(dataTransfer.files) {\n\t\tnumFiles = this.wiki.readFiles(dataTransfer.files,function(tiddlerFieldsArray) {\n\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray)});\n\t\t});\n\t}\n\t// Try to import the various data types we understand\n\tif(numFiles === 0) {\n\t\t$tw.utils.importDataTransfer(dataTransfer,this.wiki.generateNewTitle(\"Untitled\"),function(fieldsArray) {\n\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(fieldsArray)});\n\t\t});\n\t}\n\t// Tell the browser that we handled the drop\n\tevent.preventDefault();\n\t// Stop the drop ripple up to any parent handlers\n\tevent.stopPropagation();\n};\n\nDropZoneWidget.prototype.handlePasteEvent  = function(event) {\n\t// Let the browser handle it if we're in a textarea or input box\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) == -1) {\n\t\tvar self = this,\n\t\t\titems = event.clipboardData.items;\n\t\t// Enumerate the clipboard items\n\t\tfor(var t = 0; t<items.length; t++) {\n\t\t\tvar item = items[t];\n\t\t\tif(item.kind === \"file\") {\n\t\t\t\t// Import any files\n\t\t\t\tthis.wiki.readFile(item.getAsFile(),function(tiddlerFieldsArray) {\n\t\t\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray)});\n\t\t\t\t});\n\t\t\t} else if(item.kind === \"string\") {\n\t\t\t\t// Create tiddlers from string items\n\t\t\t\tvar type = item.type;\n\t\t\t\titem.getAsString(function(str) {\n\t\t\t\t\tvar tiddlerFields = {\n\t\t\t\t\t\ttitle: self.wiki.generateNewTitle(\"Untitled\"),\n\t\t\t\t\t\ttext: str,\n\t\t\t\t\t\ttype: type\n\t\t\t\t\t};\n\t\t\t\t\tif($tw.log.IMPORT) {\n\t\t\t\t\t\tconsole.log(\"Importing string '\" + str + \"', type: '\" + type + \"'\");\n\t\t\t\t\t}\n\t\t\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify([tiddlerFields])});\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t// Tell the browser that we've handled the paste\n\t\tevent.stopPropagation();\n\t\tevent.preventDefault();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nDropZoneWidget.prototype.execute = function() {\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDropZoneWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.dropzone = DropZoneWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/dropzone.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/edit-binary.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/edit-binary.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-binary widget; placeholder for editing binary tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar BINARY_WARNING_MESSAGE = \"$:/core/ui/BinaryWarning\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditBinaryWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditBinaryWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditBinaryWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditBinaryWidget.prototype.execute = function() {\n\t// Construct the child widgets\n\tthis.makeChildWidgets([{\n\t\ttype: \"transclude\",\n\t\tattributes: {\n\t\t\ttiddler: {type: \"string\", value: BINARY_WARNING_MESSAGE}\n\t\t}\n\t}]);\n};\n\n/*\nRefresh by refreshing our child widget\n*/\nEditBinaryWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports[\"edit-binary\"] = EditBinaryWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/edit-binary.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/edit-bitmap.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/edit-bitmap.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-bitmap widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Default image sizes\nvar DEFAULT_IMAGE_WIDTH = 600,\n\tDEFAULT_IMAGE_HEIGHT = 370;\n\n// Configuration tiddlers\nvar LINE_WIDTH_TITLE = \"$:/config/BitmapEditor/LineWidth\",\n\tLINE_COLOUR_TITLE = \"$:/config/BitmapEditor/Colour\",\n\tLINE_OPACITY_TITLE = \"$:/config/BitmapEditor/Opacity\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditBitmapWidget = function(parseTreeNode,options) {\n\t// Initialise the editor operations if they've not been done already\n\tif(!this.editorOperations) {\n\t\tEditBitmapWidget.prototype.editorOperations = {};\n\t\t$tw.modules.applyMethods(\"bitmapeditoroperation\",this.editorOperations);\n\t}\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditBitmapWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditBitmapWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create the wrapper for the toolbar and render its content\n\tthis.toolbarNode = this.document.createElement(\"div\");\n\tthis.toolbarNode.className = \"tc-editor-toolbar\";\n\tparent.insertBefore(this.toolbarNode,nextSibling);\n\tthis.domNodes.push(this.toolbarNode);\n\t// Create the on-screen canvas\n\tthis.canvasDomNode = $tw.utils.domMaker(\"canvas\",{\n\t\tdocument: this.document,\n\t\t\"class\":\"tc-edit-bitmapeditor\",\n\t\teventListeners: [{\n\t\t\tname: \"touchstart\", handlerObject: this, handlerMethod: \"handleTouchStartEvent\"\n\t\t},{\n\t\t\tname: \"touchmove\", handlerObject: this, handlerMethod: \"handleTouchMoveEvent\"\n\t\t},{\n\t\t\tname: \"touchend\", handlerObject: this, handlerMethod: \"handleTouchEndEvent\"\n\t\t},{\n\t\t\tname: \"mousedown\", handlerObject: this, handlerMethod: \"handleMouseDownEvent\"\n\t\t},{\n\t\t\tname: \"mousemove\", handlerObject: this, handlerMethod: \"handleMouseMoveEvent\"\n\t\t},{\n\t\t\tname: \"mouseup\", handlerObject: this, handlerMethod: \"handleMouseUpEvent\"\n\t\t}]\n\t});\n\t// Set the width and height variables\n\tthis.setVariable(\"tv-bitmap-editor-width\",this.canvasDomNode.width + \"px\");\n\tthis.setVariable(\"tv-bitmap-editor-height\",this.canvasDomNode.height + \"px\");\n\t// Render toolbar child widgets\n\tthis.renderChildren(this.toolbarNode,null);\n\t// // Insert the elements into the DOM\n\tparent.insertBefore(this.canvasDomNode,nextSibling);\n\tthis.domNodes.push(this.canvasDomNode);\n\t// Load the image into the canvas\n\tif($tw.browser) {\n\t\tthis.loadCanvas();\n\t}\n\t// Add widget message listeners\n\tthis.addEventListeners([\n\t\t{type: \"tm-edit-bitmap-operation\", handler: \"handleEditBitmapOperationMessage\"}\n\t]);\n};\n\n/*\nHandle an edit bitmap operation message from the toolbar\n*/\nEditBitmapWidget.prototype.handleEditBitmapOperationMessage = function(event) {\n\t// Invoke the handler\n\tvar handler = this.editorOperations[event.param];\n\tif(handler) {\n\t\thandler.call(this,event);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditBitmapWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nJust refresh the toolbar\n*/\nEditBitmapWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nSet the bitmap size variables and refresh the toolbar\n*/\nEditBitmapWidget.prototype.refreshToolbar = function() {\n\t// Set the width and height variables\n\tthis.setVariable(\"tv-bitmap-editor-width\",this.canvasDomNode.width + \"px\");\n\tthis.setVariable(\"tv-bitmap-editor-height\",this.canvasDomNode.height + \"px\");\n\t// Refresh each of our child widgets\n\t$tw.utils.each(this.children,function(childWidget) {\n\t\tchildWidget.refreshSelf();\n\t});\n};\n\nEditBitmapWidget.prototype.loadCanvas = function() {\n\tvar tiddler = this.wiki.getTiddler(this.editTitle),\n\t\tcurrImage = new Image();\n\t// Set up event handlers for loading the image\n\tvar self = this;\n\tcurrImage.onload = function() {\n\t\t// Copy the image to the on-screen canvas\n\t\tself.initCanvas(self.canvasDomNode,currImage.width,currImage.height,currImage);\n\t\t// And also copy the current bitmap to the off-screen canvas\n\t\tself.currCanvas = self.document.createElement(\"canvas\");\n\t\tself.initCanvas(self.currCanvas,currImage.width,currImage.height,currImage);\n\t\t// Set the width and height input boxes\n\t\tself.refreshToolbar();\n\t};\n\tcurrImage.onerror = function() {\n\t\t// Set the on-screen canvas size and clear it\n\t\tself.initCanvas(self.canvasDomNode,DEFAULT_IMAGE_WIDTH,DEFAULT_IMAGE_HEIGHT);\n\t\t// Set the off-screen canvas size and clear it\n\t\tself.currCanvas = self.document.createElement(\"canvas\");\n\t\tself.initCanvas(self.currCanvas,DEFAULT_IMAGE_WIDTH,DEFAULT_IMAGE_HEIGHT);\n\t\t// Set the width and height input boxes\n\t\tself.refreshToolbar();\n\t};\n\t// Get the current bitmap into an image object\n\tcurrImage.src = \"data:\" + tiddler.fields.type + \";base64,\" + tiddler.fields.text;\n};\n\nEditBitmapWidget.prototype.initCanvas = function(canvas,width,height,image) {\n\tcanvas.width = width;\n\tcanvas.height = height;\n\tvar ctx = canvas.getContext(\"2d\");\n\tif(image) {\n\t\tctx.drawImage(image,0,0);\n\t} else {\n\t\tctx.fillStyle = \"#fff\";\n\t\tctx.fillRect(0,0,canvas.width,canvas.height);\n\t}\n};\n\n/*\n** Change the size of the canvas, preserving the current image\n*/\nEditBitmapWidget.prototype.changeCanvasSize = function(newWidth,newHeight) {\n\t// Create and size a new canvas\n\tvar newCanvas = this.document.createElement(\"canvas\");\n\tthis.initCanvas(newCanvas,newWidth,newHeight);\n\t// Copy the old image\n\tvar ctx = newCanvas.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n\t// Set the new canvas as the current one\n\tthis.currCanvas = newCanvas;\n\t// Set the size of the onscreen canvas\n\tthis.canvasDomNode.width = newWidth;\n\tthis.canvasDomNode.height = newHeight;\n\t// Paint the onscreen canvas with the offscreen canvas\n\tctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n};\n\nEditBitmapWidget.prototype.handleTouchStartEvent = function(event) {\n\tthis.brushDown = true;\n\tthis.strokeStart(event.touches[0].clientX,event.touches[0].clientY);\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleTouchMoveEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.strokeMove(event.touches[0].clientX,event.touches[0].clientY);\n\t}\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleTouchEndEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.brushDown = false;\n\t\tthis.strokeEnd();\n\t}\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleMouseDownEvent = function(event) {\n\tthis.strokeStart(event.clientX,event.clientY);\n\tthis.brushDown = true;\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleMouseMoveEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.strokeMove(event.clientX,event.clientY);\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nEditBitmapWidget.prototype.handleMouseUpEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.brushDown = false;\n\t\tthis.strokeEnd();\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nEditBitmapWidget.prototype.adjustCoordinates = function(x,y) {\n\tvar canvasRect = this.canvasDomNode.getBoundingClientRect(),\n\t\tscale = this.canvasDomNode.width/canvasRect.width;\n\treturn {x: (x - canvasRect.left) * scale, y: (y - canvasRect.top) * scale};\n};\n\nEditBitmapWidget.prototype.strokeStart = function(x,y) {\n\t// Start off a new stroke\n\tthis.stroke = [this.adjustCoordinates(x,y)];\n};\n\nEditBitmapWidget.prototype.strokeMove = function(x,y) {\n\tvar ctx = this.canvasDomNode.getContext(\"2d\"),\n\t\tt;\n\t// Add the new position to the end of the stroke\n\tthis.stroke.push(this.adjustCoordinates(x,y));\n\t// Redraw the previous image\n\tctx.drawImage(this.currCanvas,0,0);\n\t// Render the stroke\n\tctx.globalAlpha = parseFloat(this.wiki.getTiddlerText(LINE_OPACITY_TITLE,\"1.0\"));\n\tctx.strokeStyle = this.wiki.getTiddlerText(LINE_COLOUR_TITLE,\"#ff0\");\n\tctx.lineWidth = parseFloat(this.wiki.getTiddlerText(LINE_WIDTH_TITLE,\"3\"));\n\tctx.lineCap = \"round\";\n\tctx.lineJoin = \"round\";\n\tctx.beginPath();\n\tctx.moveTo(this.stroke[0].x,this.stroke[0].y);\n\tfor(t=1; t<this.stroke.length-1; t++) {\n\t\tvar s1 = this.stroke[t],\n\t\t\ts2 = this.stroke[t-1],\n\t\t\ttx = (s1.x + s2.x)/2,\n\t\t\tty = (s1.y + s2.y)/2;\n\t\tctx.quadraticCurveTo(s2.x,s2.y,tx,ty);\n\t}\n\tctx.stroke();\n};\n\nEditBitmapWidget.prototype.strokeEnd = function() {\n\t// Copy the bitmap to the off-screen canvas\n\tvar ctx = this.currCanvas.getContext(\"2d\");\n\tctx.drawImage(this.canvasDomNode,0,0);\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\nEditBitmapWidget.prototype.saveChanges = function() {\n\tvar tiddler = this.wiki.getTiddler(this.editTitle);\n\tif(tiddler) {\n\t\t// data URIs look like \"data:<type>;base64,<text>\"\n\t\tvar dataURL = this.canvasDomNode.toDataURL(tiddler.fields.type),\n\t\t\tposColon = dataURL.indexOf(\":\"),\n\t\t\tposSemiColon = dataURL.indexOf(\";\"),\n\t\t\tposComma = dataURL.indexOf(\",\"),\n\t\t\ttype = dataURL.substring(posColon+1,posSemiColon),\n\t\t\ttext = dataURL.substring(posComma+1);\n\t\tvar update = {type: type, text: text};\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getModificationFields(),tiddler,update,this.wiki.getCreationFields()));\n\t}\n};\n\nexports[\"edit-bitmap\"] = EditBitmapWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/edit-bitmap.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/edit-shortcut.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/edit-shortcut.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to display an editable keyboard shortcut\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditShortcutWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditShortcutWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditShortcutWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.inputNode = this.document.createElement(\"input\");\n\t// Assign classes\n\tif(this.shortcutClass) {\n\t\tthis.inputNode.className = this.shortcutClass;\t\t\n\t}\n\t// Assign other attributes\n\tif(this.shortcutStyle) {\n\t\tthis.inputNode.setAttribute(\"style\",this.shortcutStyle);\n\t}\n\tif(this.shortcutTooltip) {\n\t\tthis.inputNode.setAttribute(\"title\",this.shortcutTooltip);\n\t}\n\tif(this.shortcutPlaceholder) {\n\t\tthis.inputNode.setAttribute(\"placeholder\",this.shortcutPlaceholder);\n\t}\n\tif(this.shortcutAriaLabel) {\n\t\tthis.inputNode.setAttribute(\"aria-label\",this.shortcutAriaLabel);\n\t}\n\t// Assign the current shortcut\n\tthis.updateInputNode();\n\t// Add event handlers\n\t$tw.utils.addEventListeners(this.inputNode,[\n\t\t{name: \"keydown\", handlerObject: this, handlerMethod: \"handleKeydownEvent\"}\n\t]);\n\t// Link into the DOM\n\tparent.insertBefore(this.inputNode,nextSibling);\n\tthis.domNodes.push(this.inputNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditShortcutWidget.prototype.execute = function() {\n\tthis.shortcutTiddler = this.getAttribute(\"tiddler\");\n\tthis.shortcutField = this.getAttribute(\"field\");\n\tthis.shortcutIndex = this.getAttribute(\"index\");\n\tthis.shortcutPlaceholder = this.getAttribute(\"placeholder\");\n\tthis.shortcutDefault = this.getAttribute(\"default\",\"\");\n\tthis.shortcutClass = this.getAttribute(\"class\");\n\tthis.shortcutStyle = this.getAttribute(\"style\");\n\tthis.shortcutTooltip = this.getAttribute(\"tooltip\");\n\tthis.shortcutAriaLabel = this.getAttribute(\"aria-label\");\n};\n\n/*\nUpdate the value of the input node\n*/\nEditShortcutWidget.prototype.updateInputNode = function() {\n\tif(this.shortcutField) {\n\t\tvar tiddler = this.wiki.getTiddler(this.shortcutTiddler);\n\t\tif(tiddler && $tw.utils.hop(tiddler.fields,this.shortcutField)) {\n\t\t\tthis.inputNode.value = tiddler.getFieldString(this.shortcutField);\n\t\t} else {\n\t\t\tthis.inputNode.value = this.shortcutDefault;\n\t\t}\n\t} else if(this.shortcutIndex) {\n\t\tthis.inputNode.value = this.wiki.extractTiddlerDataItem(this.shortcutTiddler,this.shortcutIndex,this.shortcutDefault);\n\t} else {\n\t\tthis.inputNode.value = this.wiki.getTiddlerText(this.shortcutTiddler,this.shortcutDefault);\n\t}\n};\n\n/*\nHandle a dom \"keydown\" event\n*/\nEditShortcutWidget.prototype.handleKeydownEvent = function(event) {\n\t// Ignore shift, ctrl, meta, alt\n\tif(event.keyCode && $tw.keyboardManager.getModifierKeys().indexOf(event.keyCode) === -1) {\n\t\t// Get the shortcut text representation\n\t\tvar value = $tw.keyboardManager.getPrintableShortcuts([{\n\t\t\tctrlKey: event.ctrlKey,\n\t\t\tshiftKey: event.shiftKey,\n\t\t\taltKey: event.altKey,\n\t\t\tmetaKey: event.metaKey,\n\t\t\tkeyCode: event.keyCode\n\t\t}]);\n\t\tif(value.length > 0) {\n\t\t\tthis.wiki.setText(this.shortcutTiddler,this.shortcutField,this.shortcutIndex,value[0]);\n\t\t}\n\t\t// Ignore the keydown if it was already handled\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn true;\t\t\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget needed re-rendering\n*/\nEditShortcutWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.placeholder || changedAttributes[\"default\"] || changedAttributes[\"class\"] || changedAttributes.style || changedAttributes.tooltip || changedAttributes[\"aria-label\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else if(changedTiddlers[this.shortcutTiddler]) {\n\t\tthis.updateInputNode();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports[\"edit-shortcut\"] = EditShortcutWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/edit-shortcut.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/edit-text.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/edit-text.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-text widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar editTextWidgetFactory = require(\"$:/core/modules/editor/factory.js\").editTextWidgetFactory,\n\tFramedEngine = require(\"$:/core/modules/editor/engines/framed.js\").FramedEngine,\n\tSimpleEngine = require(\"$:/core/modules/editor/engines/simple.js\").SimpleEngine;\n\nexports[\"edit-text\"] = editTextWidgetFactory(FramedEngine,SimpleEngine);\n\n})();\n",
            "title": "$:/core/modules/widgets/edit-text.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/edit.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/edit.js\ntype: application/javascript\nmodule-type: widget\n\nEdit widget is a meta-widget chooses the appropriate actual editting widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n// Mappings from content type to editor type are stored in tiddlers with this prefix\nvar EDITOR_MAPPING_PREFIX = \"$:/config/EditorTypeMappings/\";\n\n/*\nCompute the internal state of the widget\n*/\nEditWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.editField = this.getAttribute(\"field\",\"text\");\n\tthis.editIndex = this.getAttribute(\"index\");\n\tthis.editClass = this.getAttribute(\"class\");\n\tthis.editPlaceholder = this.getAttribute(\"placeholder\");\n\t// Choose the appropriate edit widget\n\tthis.editorType = this.getEditorType();\n\t// Make the child widgets\n\tthis.makeChildWidgets([{\n\t\ttype: \"edit-\" + this.editorType,\n\t\tattributes: {\n\t\t\ttiddler: {type: \"string\", value: this.editTitle},\n\t\t\tfield: {type: \"string\", value: this.editField},\n\t\t\tindex: {type: \"string\", value: this.editIndex},\n\t\t\t\"class\": {type: \"string\", value: this.editClass},\n\t\t\t\"placeholder\": {type: \"string\", value: this.editPlaceholder}\n\t\t},\n\t\tchildren: this.parseTreeNode.children\n\t}]);\n};\n\nEditWidget.prototype.getEditorType = function() {\n\t// Get the content type of the thing we're editing\n\tvar type;\n\tif(this.editField === \"text\") {\n\t\tvar tiddler = this.wiki.getTiddler(this.editTitle);\n\t\tif(tiddler) {\n\t\t\ttype = tiddler.fields.type;\n\t\t}\n\t}\n\ttype = type || \"text/vnd.tiddlywiki\";\n\tvar editorType = this.wiki.getTiddlerText(EDITOR_MAPPING_PREFIX + type);\n\tif(!editorType) {\n\t\tvar typeInfo = $tw.config.contentTypeInfo[type];\n\t\tif(typeInfo && typeInfo.encoding === \"base64\") {\n\t\t\teditorType = \"binary\";\n\t\t} else {\n\t\t\teditorType = \"text\";\n\t\t}\n\t}\n\treturn editorType;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEditWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// Refresh if an attribute has changed, or the type associated with the target tiddler has changed\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || (changedTiddlers[this.editTitle] && this.getEditorType() !== this.editorType)) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.edit = EditWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/edit.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/element.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/element.js\ntype: application/javascript\nmodule-type: widget\n\nElement widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ElementWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nElementWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nElementWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Neuter blacklisted elements\n\tvar tag = this.parseTreeNode.tag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"safe-\" + tag;\n\t}\n\tvar domNode = this.document.createElementNS(this.namespace,tag);\n\tthis.assignAttributes(domNode,{excludeEventAttributes: true});\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nElementWidget.prototype.execute = function() {\n\t// Select the namespace for the tag\n\tvar tagNamespaces = {\n\t\t\tsvg: \"http://www.w3.org/2000/svg\",\n\t\t\tmath: \"http://www.w3.org/1998/Math/MathML\",\n\t\t\tbody: \"http://www.w3.org/1999/xhtml\"\n\t\t};\n\tthis.namespace = tagNamespaces[this.parseTreeNode.tag];\n\tif(this.namespace) {\n\t\tthis.setVariable(\"namespace\",this.namespace);\n\t} else {\n\t\tthis.namespace = this.getVariable(\"namespace\",{defaultValue: \"http://www.w3.org/1999/xhtml\"});\n\t}\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nElementWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\thasChangedAttributes = $tw.utils.count(changedAttributes) > 0;\n\tif(hasChangedAttributes) {\n\t\t// Update our attributes\n\t\tthis.assignAttributes(this.domNodes[0],{excludeEventAttributes: true});\n\t}\n\treturn this.refreshChildren(changedTiddlers) || hasChangedAttributes;\n};\n\nexports.element = ElementWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/element.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/encrypt.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/encrypt.js\ntype: application/javascript\nmodule-type: widget\n\nEncrypt widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EncryptWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEncryptWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEncryptWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.encryptedText);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEncryptWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.filter = this.getAttribute(\"filter\",\"[!is[system]]\");\n\t// Encrypt the filtered tiddlers\n\tvar tiddlers = this.wiki.filterTiddlers(this.filter),\n\t\tjson = {},\n\t\tself = this;\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.wiki.getTiddler(title),\n\t\t\tjsonTiddler = {};\n\t\tfor(var f in tiddler.fields) {\n\t\t\tjsonTiddler[f] = tiddler.getFieldString(f);\n\t\t}\n\t\tjson[title] = jsonTiddler;\n\t});\n\tthis.encryptedText = $tw.utils.htmlEncode($tw.crypto.encrypt(JSON.stringify(json)));\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEncryptWidget.prototype.refresh = function(changedTiddlers) {\n\t// We don't need to worry about refreshing because the encrypt widget isn't for interactive use\n\treturn false;\n};\n\nexports.encrypt = EncryptWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/encrypt.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/entity.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/entity.js\ntype: application/javascript\nmodule-type: widget\n\nHTML entity widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EntityWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEntityWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEntityWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tvar entityString = this.getAttribute(\"entity\",this.parseTreeNode.entity || \"\"),\n\t\ttextNode = this.document.createTextNode($tw.utils.entityDecode(entityString));\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEntityWidget.prototype.execute = function() {\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEntityWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.entity) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.entity = EntityWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/entity.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/fieldmangler.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/fieldmangler.js\ntype: application/javascript\nmodule-type: widget\n\nField mangler widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar FieldManglerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-remove-field\", handler: \"handleRemoveFieldEvent\"},\n\t\t{type: \"tm-add-field\", handler: \"handleAddFieldEvent\"},\n\t\t{type: \"tm-remove-tag\", handler: \"handleRemoveTagEvent\"},\n\t\t{type: \"tm-add-tag\", handler: \"handleAddTagEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nFieldManglerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nFieldManglerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nFieldManglerWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.mangleTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nFieldManglerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nFieldManglerWidget.prototype.handleRemoveFieldEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\tdeletion = {};\n\tdeletion[event.param] = undefined;\n\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,deletion));\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleAddFieldEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\taddition = this.wiki.getModificationFields(),\n\t\thadInvalidFieldName = false,\n\t\taddField = function(name,value) {\n\t\t\tvar trimmedName = name.toLowerCase().trim();\n\t\t\tif(!$tw.utils.isValidFieldName(trimmedName)) {\n\t\t\t\tif(!hadInvalidFieldName) {\n\t\t\t\t\talert($tw.language.getString(\n\t\t\t\t\t\t\"InvalidFieldName\",\n\t\t\t\t\t\t{variables:\n\t\t\t\t\t\t\t{fieldName: trimmedName}\n\t\t\t\t\t\t}\n\t\t\t\t\t));\n\t\t\t\t\thadInvalidFieldName = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif(!value && tiddler) {\n\t\t\t\t\tvalue = tiddler.fields[trimmedName];\n\t\t\t\t}\n\t\t\t\taddition[trimmedName] = value || \"\";\n\t\t\t}\n\t\t\treturn;\n\t\t};\n\taddition.title = this.mangleTitle;\n\tif(typeof event.param === \"string\") {\n\t\taddField(event.param,\"\");\n\t}\n\tif(typeof event.paramObject === \"object\") {\n\t\tfor(var name in event.paramObject) {\n\t\t\taddField(name,event.paramObject[name]);\n\t\t}\n\t}\n\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,addition));\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleRemoveTagEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle);\n\tif(tiddler && tiddler.fields.tags) {\n\t\tvar p = tiddler.fields.tags.indexOf(event.param);\n\t\tif(p !== -1) {\n\t\t\tvar modification = this.wiki.getModificationFields();\n\t\t\tmodification.tags = (tiddler.fields.tags || []).slice(0);\n\t\t\tmodification.tags.splice(p,1);\n\t\t\tif(modification.tags.length === 0) {\n\t\t\t\tmodification.tags = undefined;\n\t\t\t}\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,modification));\n\t\t}\n\t}\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleAddTagEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle);\n\tif(tiddler && typeof event.param === \"string\") {\n\t\tvar tag = event.param.trim();\n\t\tif(tag !== \"\") {\n\t\t\tvar modification = this.wiki.getModificationFields();\n\t\t\tmodification.tags = (tiddler.fields.tags || []).slice(0);\n\t\t\t$tw.utils.pushTop(modification.tags,tag);\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,modification));\t\t\t\n\t\t}\n\t} else if(typeof event.param === \"string\" && event.param.trim() !== \"\" && this.mangleTitle.trim() !== \"\") {\n\t\tvar tag = [];\n\t\ttag.push(event.param.trim());\n\t\tthis.wiki.addTiddler({title: this.mangleTitle, tags: tag});\t\t\n\t}\n\treturn true;\n};\n\nexports.fieldmangler = FieldManglerWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/fieldmangler.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/fields.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/fields.js\ntype: application/javascript\nmodule-type: widget\n\nFields widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar FieldsWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nFieldsWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nFieldsWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.text);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nFieldsWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.template = this.getAttribute(\"template\");\n\tthis.exclude = this.getAttribute(\"exclude\");\n\tthis.stripTitlePrefix = this.getAttribute(\"stripTitlePrefix\",\"no\") === \"yes\";\n\t// Get the value to display\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle);\n\t// Get the exclusion list\n\tvar exclude;\n\tif(this.exclude) {\n\t\texclude = this.exclude.split(\" \");\n\t} else {\n\t\texclude = [\"text\"]; \n\t}\n\t// Compose the template\n\tvar text = [];\n\tif(this.template && tiddler) {\n\t\tvar fields = [];\n\t\tfor(var fieldName in tiddler.fields) {\n\t\t\tif(exclude.indexOf(fieldName) === -1) {\n\t\t\t\tfields.push(fieldName);\n\t\t\t}\n\t\t}\n\t\tfields.sort();\n\t\tfor(var f=0; f<fields.length; f++) {\n\t\t\tfieldName = fields[f];\n\t\t\tif(exclude.indexOf(fieldName) === -1) {\n\t\t\t\tvar row = this.template,\n\t\t\t\t\tvalue = tiddler.getFieldString(fieldName);\n\t\t\t\tif(this.stripTitlePrefix && fieldName === \"title\") {\n\t\t\t\t\tvar reStrip = /^\\{[^\\}]+\\}(.+)/mg,\n\t\t\t\t\t\treMatch = reStrip.exec(value);\n\t\t\t\t\tif(reMatch) {\n\t\t\t\t\t\tvalue = reMatch[1];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\trow = $tw.utils.replaceString(row,\"$name$\",fieldName);\n\t\t\t\trow = $tw.utils.replaceString(row,\"$value$\",value);\n\t\t\t\trow = $tw.utils.replaceString(row,\"$encoded_value$\",$tw.utils.htmlEncode(value));\n\t\t\t\ttext.push(row);\n\t\t\t}\n\t\t}\n\t}\n\tthis.text = text.join(\"\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nFieldsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.template || changedAttributes.exclude || changedAttributes.stripTitlePrefix || changedTiddlers[this.tiddlerTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.fields = FieldsWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/fields.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/image.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/image.js\ntype: application/javascript\nmodule-type: widget\n\nThe image widget displays an image referenced with an external URI or with a local tiddler title.\n\n```\n<$image src=\"TiddlerTitle\" width=\"320\" height=\"400\" class=\"classnames\">\n```\n\nThe image source can be the title of an existing tiddler or the URL of an external image.\n\nExternal images always generate an HTML `<img>` tag.\n\nTiddlers that have a _canonical_uri field generate an HTML `<img>` tag with the src attribute containing the URI.\n\nTiddlers that contain image data generate an HTML `<img>` tag with the src attribute containing a base64 representation of the image.\n\nTiddlers that contain wikitext could be rendered to a DIV of the usual size of a tiddler, and then transformed to the size requested.\n\nThe width and height attributes are interpreted as a number of pixels, and do not need to include the \"px\" suffix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ImageWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nImageWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nImageWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\t// Determine what type of image it is\n\tvar tag = \"img\", src = \"\",\n\t\ttiddler = this.wiki.getTiddler(this.imageSource);\n\tif(!tiddler) {\n\t\t// The source isn't the title of a tiddler, so we'll assume it's a URL\n\t\tsrc = this.getVariable(\"tv-get-export-image-link\",{params: [{name: \"src\",value: this.imageSource}],defaultValue: this.imageSource});\n\t} else {\n\t\t// Check if it is an image tiddler\n\t\tif(this.wiki.isImageTiddler(this.imageSource)) {\n\t\t\tvar type = tiddler.fields.type,\n\t\t\t\ttext = tiddler.fields.text,\n\t\t\t\t_canonical_uri = tiddler.fields._canonical_uri;\n\t\t\t// If the tiddler has body text then it doesn't need to be lazily loaded\n\t\t\tif(text) {\n\t\t\t\t// Render the appropriate element for the image type\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase \"application/pdf\":\n\t\t\t\t\t\ttag = \"embed\";\n\t\t\t\t\t\tsrc = \"data:application/pdf;base64,\" + text;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"image/svg+xml\":\n\t\t\t\t\t\tsrc = \"data:image/svg+xml,\" + encodeURIComponent(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tsrc = \"data:\" + type + \";base64,\" + text;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else if(_canonical_uri) {\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase \"application/pdf\":\n\t\t\t\t\t\ttag = \"embed\";\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"image/svg+xml\":\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\t\n\t\t\t} else {\n\t\t\t\t// Just trigger loading of the tiddler\n\t\t\t\tthis.wiki.getTiddlerText(this.imageSource);\n\t\t\t}\n\t\t}\n\t}\n\t// Create the element and assign the attributes\n\tvar domNode = this.document.createElement(tag);\n\tdomNode.setAttribute(\"src\",src);\n\tif(this.imageClass) {\n\t\tdomNode.setAttribute(\"class\",this.imageClass);\t\t\n\t}\n\tif(this.imageWidth) {\n\t\tdomNode.setAttribute(\"width\",this.imageWidth);\n\t}\n\tif(this.imageHeight) {\n\t\tdomNode.setAttribute(\"height\",this.imageHeight);\n\t}\n\tif(this.imageTooltip) {\n\t\tdomNode.setAttribute(\"title\",this.imageTooltip);\t\t\n\t}\n\tif(this.imageAlt) {\n\t\tdomNode.setAttribute(\"alt\",this.imageAlt);\t\t\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nImageWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.imageSource = this.getAttribute(\"source\");\n\tthis.imageWidth = this.getAttribute(\"width\");\n\tthis.imageHeight = this.getAttribute(\"height\");\n\tthis.imageClass = this.getAttribute(\"class\");\n\tthis.imageTooltip = this.getAttribute(\"tooltip\");\n\tthis.imageAlt = this.getAttribute(\"alt\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nImageWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.source || changedAttributes.width || changedAttributes.height || changedAttributes[\"class\"] || changedAttributes.tooltip || changedTiddlers[this.imageSource]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\t\n\t}\n};\n\nexports.image = ImageWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/image.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/importvariables.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/importvariables.js\ntype: application/javascript\nmodule-type: widget\n\nImport variable definitions from other tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ImportVariablesWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nImportVariablesWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nImportVariablesWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nImportVariablesWidget.prototype.execute = function(tiddlerList) {\n\tvar self = this;\n\t// Get our parameters\n\tthis.filter = this.getAttribute(\"filter\");\n\t// Compute the filter\n\tthis.tiddlerList = tiddlerList || this.wiki.filterTiddlers(this.filter,this);\n\t// Accumulate the <$set> widgets from each tiddler\n\tvar widgetStackStart,widgetStackEnd;\n\tfunction addWidgetNode(widgetNode) {\n\t\tif(widgetNode) {\n\t\t\tif(!widgetStackStart && !widgetStackEnd) {\n\t\t\t\twidgetStackStart = widgetNode;\n\t\t\t\twidgetStackEnd = widgetNode;\n\t\t\t} else {\n\t\t\t\twidgetStackEnd.children = [widgetNode];\n\t\t\t\twidgetStackEnd = widgetNode;\n\t\t\t}\n\t\t}\n\t}\n\t$tw.utils.each(this.tiddlerList,function(title) {\n\t\tvar parser = self.wiki.parseTiddler(title);\n\t\tif(parser) {\n\t\t\tvar parseTreeNode = parser.tree[0];\n\t\t\twhile(parseTreeNode && parseTreeNode.type === \"set\") {\n\t\t\t\taddWidgetNode({\n\t\t\t\t\ttype: \"set\",\n\t\t\t\t\tattributes: parseTreeNode.attributes,\n\t\t\t\t\tparams: parseTreeNode.params\n\t\t\t\t});\n\t\t\t\tparseTreeNode = parseTreeNode.children[0];\n\t\t\t}\n\t\t} \n\t});\n\t// Add our own children to the end of the pile\n\tvar parseTreeNodes;\n\tif(widgetStackStart && widgetStackEnd) {\n\t\tparseTreeNodes = [widgetStackStart];\n\t\twidgetStackEnd.children = this.parseTreeNode.children;\n\t} else {\n\t\tparseTreeNodes = this.parseTreeNode.children;\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nImportVariablesWidget.prototype.refresh = function(changedTiddlers) {\n\t// Recompute our attributes and the filter list\n\tvar changedAttributes = this.computeAttributes(),\n\t\ttiddlerList = this.wiki.filterTiddlers(this.getAttribute(\"filter\"),this);\n\t// Refresh if the filter has changed, or the list of tiddlers has changed, or any of the tiddlers in the list has changed\n\tfunction haveListedTiddlersChanged() {\n\t\tvar changed = false;\n\t\ttiddlerList.forEach(function(title) {\n\t\t\tif(changedTiddlers[title]) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t});\n\t\treturn changed;\n\t}\n\tif(changedAttributes.filter || !$tw.utils.isArrayEqual(this.tiddlerList,tiddlerList) || haveListedTiddlersChanged()) {\n\t\t// Compute the filter\n\t\tthis.removeChildDomNodes();\n\t\tthis.execute(tiddlerList);\n\t\tthis.renderChildren(this.parentDomNode,this.findNextSiblingDomNode());\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.importvariables = ImportVariablesWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/importvariables.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/keyboard.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/keyboard.js\ntype: application/javascript\nmodule-type: widget\n\nKeyboard shortcut widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar KeyboardWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nKeyboardWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nKeyboardWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.tag && $tw.config.htmlUnsafeElements.indexOf(this.tag) === -1) {\n\t\ttag = this.tag;\n\t}\n\t// Create element\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = (this[\"class\"] || \"\").split(\" \");\n\tclasses.push(\"tc-keyboard\");\n\tdomNode.className = classes.join(\" \");\n\t// Add a keyboard event handler\n\tdomNode.addEventListener(\"keydown\",function (event) {\n\t\tif($tw.keyboardManager.checkKeyDescriptors(event,self.keyInfoArray)) {\n\t\t\tself.invokeActions(self,event);\n\t\t\tif(self.actions) {\n\t\t\t\tself.invokeActionString(self.actions,self,event);\n\t\t\t}\n\t\t\tself.dispatchMessage(event);\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nKeyboardWidget.prototype.dispatchMessage = function(event) {\n\tthis.dispatchEvent({type: this.message, param: this.param, tiddlerTitle: this.getVariable(\"currentTiddler\")});\n};\n\n/*\nCompute the internal state of the widget\n*/\nKeyboardWidget.prototype.execute = function() {\n\t// Get attributes\n\tthis.actions = this.getAttribute(\"actions\");\n\tthis.message = this.getAttribute(\"message\");\n\tthis.param = this.getAttribute(\"param\");\n\tthis.key = this.getAttribute(\"key\");\n\tthis.tag = this.getAttribute(\"tag\");\n\tthis.keyInfoArray = $tw.keyboardManager.parseKeyDescriptors(this.key);\n\tthis[\"class\"] = this.getAttribute(\"class\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nKeyboardWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.message || changedAttributes.param || changedAttributes.key || changedAttributes[\"class\"] || changedAttributes.tag) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.keyboard = KeyboardWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/keyboard.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/link.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/link.js\ntype: application/javascript\nmodule-type: widget\n\nLink widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\nvar MISSING_LINK_CONFIG_TITLE = \"$:/config/MissingLinks\";\n\nvar LinkWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nLinkWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nLinkWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Get the value of the tv-wikilinks configuration macro\n\tvar wikiLinksMacro = this.getVariable(\"tv-wikilinks\"),\n\t\tuseWikiLinks = wikiLinksMacro ? (wikiLinksMacro.trim() !== \"no\") : true,\n\t\tmissingLinksEnabled = !(this.hideMissingLinks && this.isMissing && !this.isShadow);\n\t// Render the link if required\n\tif(useWikiLinks && missingLinksEnabled) {\n\t\tthis.renderLink(parent,nextSibling);\n\t} else {\n\t\t// Just insert the link text\n\t\tvar domNode = this.document.createElement(\"span\");\n\t\tparent.insertBefore(domNode,nextSibling);\n\t\tthis.renderChildren(domNode,null);\n\t\tthis.domNodes.push(domNode);\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nLinkWidget.prototype.renderLink = function(parent,nextSibling) {\n\tvar self = this;\n\t// Sanitise the specified tag\n\tvar tag = this.linkTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"a\";\n\t}\n\t// Create our element\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = [];\n\tif(this.linkClasses) {\n\t\tclasses.push(this.linkClasses);\n\t}\n\tclasses.push(\"tc-tiddlylink\");\n\tif(this.isShadow) {\n\t\tclasses.push(\"tc-tiddlylink-shadow\");\n\t}\n\tif(this.isMissing && !this.isShadow) {\n\t\tclasses.push(\"tc-tiddlylink-missing\");\n\t} else {\n\t\tif(!this.isMissing) {\n\t\t\tclasses.push(\"tc-tiddlylink-resolves\");\n\t\t}\n\t}\n\tdomNode.setAttribute(\"class\",classes.join(\" \"));\n\t// Set an href\n\tvar wikiLinkTemplateMacro = this.getVariable(\"tv-wikilink-template\"),\n\t\twikiLinkTemplate = wikiLinkTemplateMacro ? wikiLinkTemplateMacro.trim() : \"#$uri_encoded$\",\n\t\twikiLinkText = $tw.utils.replaceString(wikiLinkTemplate,\"$uri_encoded$\",encodeURIComponent(this.to));\n\twikiLinkText = $tw.utils.replaceString(wikiLinkText,\"$uri_doubleencoded$\",encodeURIComponent(encodeURIComponent(this.to)));\n\twikiLinkText = this.getVariable(\"tv-get-export-link\",{params: [{name: \"to\",value: this.to}],defaultValue: wikiLinkText});\n\tif(tag === \"a\") {\n\t\tdomNode.setAttribute(\"href\",wikiLinkText);\n\t}\n\tif(this.tabIndex) {\n\t\tdomNode.setAttribute(\"tabindex\",this.tabIndex);\n\t}\n\t// Set the tooltip\n\t// HACK: Performance issues with re-parsing the tooltip prevent us defaulting the tooltip to \"<$transclude field='tooltip'><$transclude field='title'/></$transclude>\"\n\tvar tooltipWikiText = this.tooltip || this.getVariable(\"tv-wikilink-tooltip\");\n\tif(tooltipWikiText) {\n\t\tvar tooltipText = this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",tooltipWikiText,{\n\t\t\t\tparseAsInline: true,\n\t\t\t\tvariables: {\n\t\t\t\t\tcurrentTiddler: this.to\n\t\t\t\t},\n\t\t\t\tparentWidget: this\n\t\t\t});\n\t\tdomNode.setAttribute(\"title\",tooltipText);\n\t}\n\tif(this[\"aria-label\"]) {\n\t\tdomNode.setAttribute(\"aria-label\",this[\"aria-label\"]);\n\t}\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"click\", handlerObject: this, handlerMethod: \"handleClickEvent\"},\n\t]);\n\t// Make the link draggable if required\n\tif(this.draggable === \"yes\") {\n\t\t$tw.utils.makeDraggable({\n\t\t\tdomNode: domNode,\n\t\t\tdragTiddlerFn: function() {return self.to;},\n\t\t\twidget: this\n\t\t});\n\t}\n\t// Insert the link into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nLinkWidget.prototype.handleClickEvent = function(event) {\n\t// Send the click on its way as a navigate event\n\tvar bounds = this.domNodes[0].getBoundingClientRect();\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.to,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: this,\n\t\tnavigateFromClientRect: { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: event.metaKey || event.ctrlKey || (event.button === 1)\n\t});\n\tif(this.domNodes[0].hasAttribute(\"href\")) {\n\t\tevent.preventDefault();\n\t}\n\tevent.stopPropagation();\n\treturn false;\n};\n\n/*\nCompute the internal state of the widget\n*/\nLinkWidget.prototype.execute = function() {\n\t// Pick up our attributes\n\tthis.to = this.getAttribute(\"to\",this.getVariable(\"currentTiddler\"));\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis[\"aria-label\"] = this.getAttribute(\"aria-label\");\n\tthis.linkClasses = this.getAttribute(\"class\");\n\tthis.tabIndex = this.getAttribute(\"tabindex\");\n\tthis.draggable = this.getAttribute(\"draggable\",\"yes\");\n\tthis.linkTag = this.getAttribute(\"tag\",\"a\");\n\t// Determine the link characteristics\n\tthis.isMissing = !this.wiki.tiddlerExists(this.to);\n\tthis.isShadow = this.wiki.isShadowTiddler(this.to);\n\tthis.hideMissingLinks = ($tw.wiki.getTiddlerText(MISSING_LINK_CONFIG_TITLE,\"yes\") === \"no\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nLinkWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.to || changedTiddlers[this.to] || changedAttributes[\"aria-label\"] || changedAttributes.tooltip || changedTiddlers[MISSING_LINK_CONFIG_TITLE]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.link = LinkWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/link.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/linkcatcher.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/linkcatcher.js\ntype: application/javascript\nmodule-type: widget\n\nLinkcatcher widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar LinkCatcherWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-navigate\", handler: \"handleNavigateEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nLinkCatcherWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nLinkCatcherWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nLinkCatcherWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.catchTo = this.getAttribute(\"to\");\n\tthis.catchMessage = this.getAttribute(\"message\");\n\tthis.catchSet = this.getAttribute(\"set\");\n\tthis.catchSetTo = this.getAttribute(\"setTo\");\n\tthis.catchActions = this.getAttribute(\"actions\");\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nLinkCatcherWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.to || changedAttributes.message || changedAttributes.set || changedAttributes.setTo) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\n/*\nHandle a tm-navigate event\n*/\nLinkCatcherWidget.prototype.handleNavigateEvent = function(event) {\n\tif(this.catchTo) {\n\t\tthis.wiki.setTextReference(this.catchTo,event.navigateTo,this.getVariable(\"currentTiddler\"));\n\t}\n\tif(this.catchMessage && this.parentWidget) {\n\t\tthis.parentWidget.dispatchEvent({\n\t\t\ttype: this.catchMessage,\n\t\t\tparam: event.navigateTo,\n\t\t\tnavigateTo: event.navigateTo\n\t\t});\n\t}\n\tif(this.catchSet) {\n\t\tvar tiddler = this.wiki.getTiddler(this.catchSet);\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,{title: this.catchSet, text: this.catchSetTo}));\n\t}\n\tif(this.catchActions) {\n\t\tthis.invokeActionString(this.catchActions,this);\n\t}\n\treturn false;\n};\n\nexports.linkcatcher = LinkCatcherWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/linkcatcher.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/list.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/list.js\ntype: application/javascript\nmodule-type: widget\n\nList and list item widgets\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\n/*\nThe list widget creates list element sub-widgets that reach back into the list widget for their configuration\n*/\n\nvar ListWidget = function(parseTreeNode,options) {\n\t// Initialise the storyviews if they've not been done already\n\tif(!this.storyViews) {\n\t\tListWidget.prototype.storyViews = {};\n\t\t$tw.modules.applyMethods(\"storyview\",this.storyViews);\n\t}\n\t// Main initialisation inherited from widget.js\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nListWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nListWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n\t// Construct the storyview\n\tvar StoryView = this.storyViews[this.storyViewName];\n\tif(this.storyViewName && !StoryView) {\n\t\tStoryView = this.storyViews[\"classic\"];\n\t}\n\tif(StoryView && !this.document.isTiddlyWikiFakeDom) {\n\t\tthis.storyview = new StoryView(this);\n\t} else {\n\t\tthis.storyview = null;\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nListWidget.prototype.execute = function() {\n\t// Get our attributes\n\tthis.template = this.getAttribute(\"template\");\n\tthis.editTemplate = this.getAttribute(\"editTemplate\");\n\tthis.variableName = this.getAttribute(\"variable\",\"currentTiddler\");\n\tthis.storyViewName = this.getAttribute(\"storyview\");\n\tthis.historyTitle = this.getAttribute(\"history\");\n\t// Compose the list elements\n\tthis.list = this.getTiddlerList();\n\tvar members = [],\n\t\tself = this;\n\t// Check for an empty list\n\tif(this.list.length === 0) {\n\t\tmembers = this.getEmptyMessage();\n\t} else {\n\t\t$tw.utils.each(this.list,function(title,index) {\n\t\t\tmembers.push(self.makeItemTemplate(title));\n\t\t});\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(members);\n\t// Clear the last history\n\tthis.history = [];\n};\n\nListWidget.prototype.getTiddlerList = function() {\n\tvar defaultFilter = \"[!is[system]sort[title]]\";\n\treturn this.wiki.filterTiddlers(this.getAttribute(\"filter\",defaultFilter),this);\n};\n\nListWidget.prototype.getEmptyMessage = function() {\n\tvar emptyMessage = this.getAttribute(\"emptyMessage\",\"\"),\n\t\tparser = this.wiki.parseText(\"text/vnd.tiddlywiki\",emptyMessage,{parseAsInline: true});\n\tif(parser) {\n\t\treturn parser.tree;\n\t} else {\n\t\treturn [];\n\t}\n};\n\n/*\nCompose the template for a list item\n*/\nListWidget.prototype.makeItemTemplate = function(title) {\n\t// Check if the tiddler is a draft\n\tvar tiddler = this.wiki.getTiddler(title),\n\t\tisDraft = tiddler && tiddler.hasField(\"draft.of\"),\n\t\ttemplate = this.template,\n\t\ttemplateTree;\n\tif(isDraft && this.editTemplate) {\n\t\ttemplate = this.editTemplate;\n\t}\n\t// Compose the transclusion of the template\n\tif(template) {\n\t\ttemplateTree = [{type: \"transclude\", attributes: {tiddler: {type: \"string\", value: template}}}];\n\t} else {\n\t\tif(this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\n\t\t\ttemplateTree = this.parseTreeNode.children;\n\t\t} else {\n\t\t\t// Default template is a link to the title\n\t\t\ttemplateTree = [{type: \"element\", tag: this.parseTreeNode.isBlock ? \"div\" : \"span\", children: [{type: \"link\", attributes: {to: {type: \"string\", value: title}}, children: [\n\t\t\t\t\t{type: \"text\", text: title}\n\t\t\t]}]}];\n\t\t}\n\t}\n\t// Return the list item\n\treturn {type: \"listitem\", itemTitle: title, variableName: this.variableName, children: templateTree};\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nListWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\tresult;\n\t// Call the storyview\n\tif(this.storyview && this.storyview.refreshStart) {\n\t\tthis.storyview.refreshStart(changedTiddlers,changedAttributes);\n\t}\n\t// Completely refresh if any of our attributes have changed\n\tif(changedAttributes.filter || changedAttributes.template || changedAttributes.editTemplate || changedAttributes.emptyMessage || changedAttributes.storyview || changedAttributes.history) {\n\t\tthis.refreshSelf();\n\t\tresult = true;\n\t} else {\n\t\t// Handle any changes to the list\n\t\tresult = this.handleListChanges(changedTiddlers);\n\t\t// Handle any changes to the history stack\n\t\tif(this.historyTitle && changedTiddlers[this.historyTitle]) {\n\t\t\tthis.handleHistoryChanges();\n\t\t}\n\t}\n\t// Call the storyview\n\tif(this.storyview && this.storyview.refreshEnd) {\n\t\tthis.storyview.refreshEnd(changedTiddlers,changedAttributes);\n\t}\n\treturn result;\n};\n\n/*\nHandle any changes to the history list\n*/\nListWidget.prototype.handleHistoryChanges = function() {\n\t// Get the history data\n\tvar newHistory = this.wiki.getTiddlerDataCached(this.historyTitle,[]);\n\t// Ignore any entries of the history that match the previous history\n\tvar entry = 0;\n\twhile(entry < newHistory.length && entry < this.history.length && newHistory[entry].title === this.history[entry].title) {\n\t\tentry++;\n\t}\n\t// Navigate forwards to each of the new tiddlers\n\twhile(entry < newHistory.length) {\n\t\tif(this.storyview && this.storyview.navigateTo) {\n\t\t\tthis.storyview.navigateTo(newHistory[entry]);\n\t\t}\n\t\tentry++;\n\t}\n\t// Update the history\n\tthis.history = newHistory;\n};\n\n/*\nProcess any changes to the list\n*/\nListWidget.prototype.handleListChanges = function(changedTiddlers) {\n\t// Get the new list\n\tvar prevList = this.list;\n\tthis.list = this.getTiddlerList();\n\t// Check for an empty list\n\tif(this.list.length === 0) {\n\t\t// Check if it was empty before\n\t\tif(prevList.length === 0) {\n\t\t\t// If so, just refresh the empty message\n\t\t\treturn this.refreshChildren(changedTiddlers);\n\t\t} else {\n\t\t\t// Replace the previous content with the empty message\n\t\t\tfor(t=this.children.length-1; t>=0; t--) {\n\t\t\t\tthis.removeListItem(t);\n\t\t\t}\n\t\t\tvar nextSibling = this.findNextSiblingDomNode();\n\t\t\tthis.makeChildWidgets(this.getEmptyMessage());\n\t\t\tthis.renderChildren(this.parentDomNode,nextSibling);\n\t\t\treturn true;\n\t\t}\n\t} else {\n\t\t// If the list was empty then we need to remove the empty message\n\t\tif(prevList.length === 0) {\n\t\t\tthis.removeChildDomNodes();\n\t\t\tthis.children = [];\n\t\t}\n\t\t// Cycle through the list, inserting and removing list items as needed\n\t\tvar hasRefreshed = false;\n\t\tfor(var t=0; t<this.list.length; t++) {\n\t\t\tvar index = this.findListItem(t,this.list[t]);\n\t\t\tif(index === undefined) {\n\t\t\t\t// The list item must be inserted\n\t\t\t\tthis.insertListItem(t,this.list[t]);\n\t\t\t\thasRefreshed = true;\n\t\t\t} else {\n\t\t\t\t// There are intervening list items that must be removed\n\t\t\t\tfor(var n=index-1; n>=t; n--) {\n\t\t\t\t\tthis.removeListItem(n);\n\t\t\t\t\thasRefreshed = true;\n\t\t\t\t}\n\t\t\t\t// Refresh the item we're reusing\n\t\t\t\tvar refreshed = this.children[t].refresh(changedTiddlers);\n\t\t\t\thasRefreshed = hasRefreshed || refreshed;\n\t\t\t}\n\t\t}\n\t\t// Remove any left over items\n\t\tfor(t=this.children.length-1; t>=this.list.length; t--) {\n\t\t\tthis.removeListItem(t);\n\t\t\thasRefreshed = true;\n\t\t}\n\t\treturn hasRefreshed;\n\t}\n};\n\n/*\nFind the list item with a given title, starting from a specified position\n*/\nListWidget.prototype.findListItem = function(startIndex,title) {\n\twhile(startIndex < this.children.length) {\n\t\tif(this.children[startIndex].parseTreeNode.itemTitle === title) {\n\t\t\treturn startIndex;\n\t\t}\n\t\tstartIndex++;\n\t}\n\treturn undefined;\n};\n\n/*\nInsert a new list item at the specified index\n*/\nListWidget.prototype.insertListItem = function(index,title) {\n\t// Create, insert and render the new child widgets\n\tvar widget = this.makeChildWidget(this.makeItemTemplate(title));\n\twidget.parentDomNode = this.parentDomNode; // Hack to enable findNextSiblingDomNode() to work\n\tthis.children.splice(index,0,widget);\n\tvar nextSibling = widget.findNextSiblingDomNode();\n\twidget.render(this.parentDomNode,nextSibling);\n\t// Animate the insertion if required\n\tif(this.storyview && this.storyview.insert) {\n\t\tthis.storyview.insert(widget);\n\t}\n\treturn true;\n};\n\n/*\nRemove the specified list item\n*/\nListWidget.prototype.removeListItem = function(index) {\n\tvar widget = this.children[index];\n\t// Animate the removal if required\n\tif(this.storyview && this.storyview.remove) {\n\t\tthis.storyview.remove(widget);\n\t} else {\n\t\twidget.removeChildDomNodes();\n\t}\n\t// Remove the child widget\n\tthis.children.splice(index,1);\n};\n\nexports.list = ListWidget;\n\nvar ListItemWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nListItemWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nListItemWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nListItemWidget.prototype.execute = function() {\n\t// Set the current list item title\n\tthis.setVariable(this.parseTreeNode.variableName,this.parseTreeNode.itemTitle);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nListItemWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.listitem = ListItemWidget;\n\n})();",
            "title": "$:/core/modules/widgets/list.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/macrocall.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/macrocall.js\ntype: application/javascript\nmodule-type: widget\n\nMacrocall widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar MacroCallWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nMacroCallWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nMacroCallWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nMacroCallWidget.prototype.execute = function() {\n\t// Get the parse type if specified\n\tthis.parseType = this.getAttribute(\"$type\",\"text/vnd.tiddlywiki\");\n\tthis.renderOutput = this.getAttribute(\"$output\",\"text/html\");\n\t// Merge together the parameters specified in the parse tree with the specified attributes\n\tvar params = this.parseTreeNode.params ? this.parseTreeNode.params.slice(0) : [];\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tparams.push({name: name, value: attribute});\t\t\t\n\t\t}\n\t});\n\t// Get the macro value\n\tvar text = this.getVariable(this.parseTreeNode.name || this.getAttribute(\"$name\"),{params: params}),\n\t\tparseTreeNodes;\n\t// Are we rendering to HTML?\n\tif(this.renderOutput === \"text/html\") {\n\t\t// If so we'll return the parsed macro\n\t\tvar parser = this.wiki.parseText(this.parseType,text,\n\t\t\t\t\t\t\t{parseAsInline: !this.parseTreeNode.isBlock});\n\t\tparseTreeNodes = parser ? parser.tree : [];\n\t} else {\n\t\t// Otherwise, we'll render the text\n\t\tvar plainText = this.wiki.renderText(\"text/plain\",this.parseType,text,{parentWidget: this});\n\t\tparseTreeNodes = [{type: \"text\", text: plainText}];\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nMacroCallWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif($tw.utils.count(changedAttributes) > 0) {\n\t\t// Rerender ourselves\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.macrocall = MacroCallWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/macrocall.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/navigator.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/navigator.js\ntype: application/javascript\nmodule-type: widget\n\nNavigator widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar IMPORT_TITLE = \"$:/Import\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar NavigatorWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-navigate\", handler: \"handleNavigateEvent\"},\n\t\t{type: \"tm-edit-tiddler\", handler: \"handleEditTiddlerEvent\"},\n\t\t{type: \"tm-delete-tiddler\", handler: \"handleDeleteTiddlerEvent\"},\n\t\t{type: \"tm-save-tiddler\", handler: \"handleSaveTiddlerEvent\"},\n\t\t{type: \"tm-cancel-tiddler\", handler: \"handleCancelTiddlerEvent\"},\n\t\t{type: \"tm-close-tiddler\", handler: \"handleCloseTiddlerEvent\"},\n\t\t{type: \"tm-close-all-tiddlers\", handler: \"handleCloseAllTiddlersEvent\"},\n\t\t{type: \"tm-close-other-tiddlers\", handler: \"handleCloseOtherTiddlersEvent\"},\n\t\t{type: \"tm-new-tiddler\", handler: \"handleNewTiddlerEvent\"},\n\t\t{type: \"tm-import-tiddlers\", handler: \"handleImportTiddlersEvent\"},\n\t\t{type: \"tm-perform-import\", handler: \"handlePerformImportEvent\"},\n\t\t{type: \"tm-fold-tiddler\", handler: \"handleFoldTiddlerEvent\"},\n\t\t{type: \"tm-fold-other-tiddlers\", handler: \"handleFoldOtherTiddlersEvent\"},\n\t\t{type: \"tm-fold-all-tiddlers\", handler: \"handleFoldAllTiddlersEvent\"},\n\t\t{type: \"tm-unfold-all-tiddlers\", handler: \"handleUnfoldAllTiddlersEvent\"},\n\t\t{type: \"tm-rename-tiddler\", handler: \"handleRenameTiddlerEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nNavigatorWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nNavigatorWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nNavigatorWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.storyTitle = this.getAttribute(\"story\");\n\tthis.historyTitle = this.getAttribute(\"history\");\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nNavigatorWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.story || changedAttributes.history) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nNavigatorWidget.prototype.getStoryList = function() {\n\treturn this.storyTitle ? this.wiki.getTiddlerList(this.storyTitle) : null;\n};\n\nNavigatorWidget.prototype.saveStoryList = function(storyList) {\n\tvar storyTiddler = this.wiki.getTiddler(this.storyTitle);\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\t{title: this.storyTitle},\n\t\tstoryTiddler,\n\t\t{list: storyList}\n\t));\n};\n\nNavigatorWidget.prototype.removeTitleFromStory = function(storyList,title) {\n\tvar p = storyList.indexOf(title);\n\twhile(p !== -1) {\n\t\tstoryList.splice(p,1);\n\t\tp = storyList.indexOf(title);\n\t}\n};\n\nNavigatorWidget.prototype.replaceFirstTitleInStory = function(storyList,oldTitle,newTitle) {\n\tvar pos = storyList.indexOf(oldTitle);\n\tif(pos !== -1) {\n\t\tstoryList[pos] = newTitle;\n\t\tdo {\n\t\t\tpos = storyList.indexOf(oldTitle,pos + 1);\n\t\t\tif(pos !== -1) {\n\t\t\t\tstoryList.splice(pos,1);\n\t\t\t}\n\t\t} while(pos !== -1);\n\t} else {\n\t\tstoryList.splice(0,0,newTitle);\n\t}\n};\n\nNavigatorWidget.prototype.addToStory = function(title,fromTitle) {\n\tvar storyList = this.getStoryList();\n\t// Quit if we cannot get hold of the story list\n\tif(!storyList) {\n\t\treturn;\n\t}\n\t// See if the tiddler is already there\n\tvar slot = storyList.indexOf(title);\n\t// Quit if it already exists in the story river\n\tif(slot >= 0) {\n\t\treturn;\n\t}\n\t// First we try to find the position of the story element we navigated from\n\tvar fromIndex = storyList.indexOf(fromTitle);\n\tif(fromIndex >= 0) {\n\t\t// The tiddler is added from inside the river\n\t\t// Determine where to insert the tiddler; Fallback is \"below\"\n\t\tswitch(this.getAttribute(\"openLinkFromInsideRiver\",\"below\")) {\n\t\t\tcase \"top\":\n\t\t\t\tslot = 0;\n\t\t\t\tbreak;\n\t\t\tcase \"bottom\":\n\t\t\t\tslot = storyList.length;\n\t\t\t\tbreak;\n\t\t\tcase \"above\":\n\t\t\t\tslot = fromIndex;\n\t\t\t\tbreak;\n\t\t\tcase \"below\": // Intentional fall-through\n\t\t\tdefault:\n\t\t\t\tslot = fromIndex + 1;\n\t\t\t\tbreak;\n\t\t}\n\t} else {\n\t\t// The tiddler is opened from outside the river. Determine where to insert the tiddler; default is \"top\"\n\t\tif(this.getAttribute(\"openLinkFromOutsideRiver\",\"top\") === \"bottom\") {\n\t\t\t// Insert at bottom\n\t\t\tslot = storyList.length;\n\t\t} else {\n\t\t\t// Insert at top\n\t\t\tslot = 0;\n\t\t}\n\t}\n\t// Add the tiddler\n\tstoryList.splice(slot,0,title);\n\t// Save the story\n\tthis.saveStoryList(storyList);\n};\n\n/*\nAdd a new record to the top of the history stack\ntitle: a title string or an array of title strings\nfromPageRect: page coordinates of the origin of the navigation\n*/\nNavigatorWidget.prototype.addToHistory = function(title,fromPageRect) {\n\tthis.wiki.addToHistory(title,fromPageRect,this.historyTitle);\n};\n\n/*\nHandle a tm-navigate event\n*/\nNavigatorWidget.prototype.handleNavigateEvent = function(event) {\n\tevent = $tw.hooks.invokeHook(\"th-navigating\",event);\n\tif(event.navigateTo) {\n\t\tthis.addToStory(event.navigateTo,event.navigateFromTitle);\n\t\tif(!event.navigateSuppressNavigation) {\n\t\t\tthis.addToHistory(event.navigateTo,event.navigateFromClientRect);\n\t\t}\n\t}\n\treturn false;\n};\n\n// Close a specified tiddler\nNavigatorWidget.prototype.handleCloseTiddlerEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle,\n\t\tstoryList = this.getStoryList();\n\t// Look for tiddlers with this title to close\n\tthis.removeTitleFromStory(storyList,title);\n\tthis.saveStoryList(storyList);\n\treturn false;\n};\n\n// Close all tiddlers\nNavigatorWidget.prototype.handleCloseAllTiddlersEvent = function(event) {\n\tthis.saveStoryList([]);\n\treturn false;\n};\n\n// Close other tiddlers\nNavigatorWidget.prototype.handleCloseOtherTiddlersEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle;\n\tthis.saveStoryList([title]);\n\treturn false;\n};\n\n// Place a tiddler in edit mode\nNavigatorWidget.prototype.handleEditTiddlerEvent = function(event) {\n\tvar self = this;\n\tfunction isUnmodifiedShadow(title) {\n\t\treturn self.wiki.isShadowTiddler(title) && !self.wiki.tiddlerExists(title);\n\t}\n\tfunction confirmEditShadow(title) {\n\t\treturn confirm($tw.language.getString(\n\t\t\t\"ConfirmEditShadowTiddler\",\n\t\t\t{variables:\n\t\t\t\t{title: title}\n\t\t\t}\n\t\t));\n\t}\n\tvar title = event.param || event.tiddlerTitle;\n\tif(isUnmodifiedShadow(title) && !confirmEditShadow(title)) {\n\t\treturn false;\n\t}\n\t// Replace the specified tiddler with a draft in edit mode\n\tvar draftTiddler = this.makeDraftTiddler(title);\n\t// Update the story and history if required\n\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\tvar draftTitle = draftTiddler.fields.title,\n\t\t\tstoryList = this.getStoryList();\n\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\tthis.replaceFirstTitleInStory(storyList,title,draftTitle);\n\t\tthis.addToHistory(draftTitle,event.navigateFromClientRect);\n\t\tthis.saveStoryList(storyList);\n\t\treturn false;\n\t}\n};\n\n// Delete a tiddler\nNavigatorWidget.prototype.handleDeleteTiddlerEvent = function(event) {\n\t// Get the tiddler we're deleting\n\tvar title = event.param || event.tiddlerTitle,\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tstoryList = this.getStoryList(),\n\t\toriginalTitle = tiddler ? tiddler.fields[\"draft.of\"] : \"\",\n\t\toriginalTiddler = originalTitle ? this.wiki.getTiddler(originalTitle) : undefined,\n\t\tconfirmationTitle;\n\tif(!tiddler) {\n\t\treturn false;\n\t}\n\t// Check if the tiddler we're deleting is in draft mode\n\tif(originalTitle) {\n\t\t// If so, we'll prompt for confirmation referencing the original tiddler\n\t\tconfirmationTitle = originalTitle;\n\t} else {\n\t\t// If not a draft, then prompt for confirmation referencing the specified tiddler\n\t\tconfirmationTitle = title;\n\t}\n\t// Seek confirmation\n\tif((this.wiki.getTiddler(originalTitle) || (tiddler.fields.text || \"\") !== \"\") && !confirm($tw.language.getString(\n\t\t\t\t\"ConfirmDeleteTiddler\",\n\t\t\t\t{variables:\n\t\t\t\t\t{title: confirmationTitle}\n\t\t\t\t}\n\t\t\t))) {\n\t\treturn false;\n\t}\n\t// Delete the original tiddler\n\tif(originalTitle) {\n\t\tif(originalTiddler) {\n\t\t\t$tw.hooks.invokeHook(\"th-deleting-tiddler\",originalTiddler);\n\t\t}\n\t\tthis.wiki.deleteTiddler(originalTitle);\n\t\tthis.removeTitleFromStory(storyList,originalTitle);\n\t}\n\t// Invoke the hook function and delete this tiddler\n\t$tw.hooks.invokeHook(\"th-deleting-tiddler\",tiddler);\n\tthis.wiki.deleteTiddler(title);\n\t// Remove the closed tiddler from the story\n\tthis.removeTitleFromStory(storyList,title);\n\tthis.saveStoryList(storyList);\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\treturn false;\n};\n\n/*\nCreate/reuse the draft tiddler for a given title\n*/\nNavigatorWidget.prototype.makeDraftTiddler = function(targetTitle) {\n\t// See if there is already a draft tiddler for this tiddler\n\tvar draftTitle = this.wiki.findDraft(targetTitle);\n\tif(draftTitle) {\n\t\treturn this.wiki.getTiddler(draftTitle);\n\t}\n\t// Get the current value of the tiddler we're editing\n\tvar tiddler = this.wiki.getTiddler(targetTitle);\n\t// Save the initial value of the draft tiddler\n\tdraftTitle = this.generateDraftTitle(targetTitle);\n\tvar draftTiddler = new $tw.Tiddler(\n\t\t\ttiddler,\n\t\t\t{\n\t\t\t\ttitle: draftTitle,\n\t\t\t\t\"draft.title\": targetTitle,\n\t\t\t\t\"draft.of\": targetTitle\n\t\t\t},\n\t\t\tthis.wiki.getModificationFields()\n\t\t);\n\tthis.wiki.addTiddler(draftTiddler);\n\treturn draftTiddler;\n};\n\n/*\nGenerate a title for the draft of a given tiddler\n*/\nNavigatorWidget.prototype.generateDraftTitle = function(title) {\n\tvar c = 0,\n\t\tdraftTitle;\n\tdo {\n\t\tdraftTitle = \"Draft \" + (c ? (c + 1) + \" \" : \"\") + \"of '\" + title + \"'\";\n\t\tc++;\n\t} while(this.wiki.tiddlerExists(draftTitle));\n\treturn draftTitle;\n};\n\n// Take a tiddler out of edit mode, saving the changes\nNavigatorWidget.prototype.handleSaveTiddlerEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle,\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tstoryList = this.getStoryList();\n\t// Replace the original tiddler with the draft\n\tif(tiddler) {\n\t\tvar draftTitle = (tiddler.fields[\"draft.title\"] || \"\").trim(),\n\t\t\tdraftOf = (tiddler.fields[\"draft.of\"] || \"\").trim();\n\t\tif(draftTitle) {\n\t\t\tvar isRename = draftOf !== draftTitle,\n\t\t\t\tisConfirmed = true;\n\t\t\tif(isRename && this.wiki.tiddlerExists(draftTitle)) {\n\t\t\t\tisConfirmed = confirm($tw.language.getString(\n\t\t\t\t\t\"ConfirmOverwriteTiddler\",\n\t\t\t\t\t{variables:\n\t\t\t\t\t\t{title: draftTitle}\n\t\t\t\t\t}\n\t\t\t\t));\n\t\t\t}\n\t\t\tif(isConfirmed) {\n\t\t\t\t// Create the new tiddler and pass it through the th-saving-tiddler hook\n\t\t\t\tvar newTiddler = new $tw.Tiddler(this.wiki.getCreationFields(),tiddler,{\n\t\t\t\t\ttitle: draftTitle,\n\t\t\t\t\t\"draft.title\": undefined,\n\t\t\t\t\t\"draft.of\": undefined\n\t\t\t\t},this.wiki.getModificationFields());\n\t\t\t\tnewTiddler = $tw.hooks.invokeHook(\"th-saving-tiddler\",newTiddler);\n\t\t\t\tthis.wiki.addTiddler(newTiddler);\n\t\t\t\t// If enabled, relink references to renamed tiddler\n\t\t\t\tvar shouldRelink = this.getAttribute(\"relinkOnRename\",\"no\").toLowerCase().trim() === \"yes\";\n\t\t\t\tif(isRename && shouldRelink && this.wiki.tiddlerExists(draftOf)) {\nconsole.log(\"Relinking '\" + draftOf + \"' to '\" + draftTitle + \"'\");\n\t\t\t\t\tthis.wiki.relinkTiddler(draftOf,draftTitle);\n\t\t\t\t}\n\t\t\t\t// Remove the draft tiddler\n\t\t\t\tthis.wiki.deleteTiddler(title);\n\t\t\t\t// Remove the original tiddler if we're renaming it\n\t\t\t\tif(isRename) {\n\t\t\t\t\tthis.wiki.deleteTiddler(draftOf);\n\t\t\t\t}\n\t\t\t\t// #2381 always remove new title & old\n\t\t\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\t\t\tthis.removeTitleFromStory(storyList,draftOf);\n\t\t\t\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\t\t\t\t// Replace the draft in the story with the original\n\t\t\t\t\tthis.replaceFirstTitleInStory(storyList,title,draftTitle);\n\t\t\t\t\tthis.addToHistory(draftTitle,event.navigateFromClientRect);\n\t\t\t\t\tif(draftTitle !== this.storyTitle) {\n\t\t\t\t\t\tthis.saveStoryList(storyList);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Trigger an autosave\n\t\t\t\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\n// Take a tiddler out of edit mode without saving the changes\nNavigatorWidget.prototype.handleCancelTiddlerEvent = function(event) {\n\t// Flip the specified tiddler from draft back to the original\n\tvar draftTitle = event.param || event.tiddlerTitle,\n\t\tdraftTiddler = this.wiki.getTiddler(draftTitle),\n\t\toriginalTitle = draftTiddler && draftTiddler.fields[\"draft.of\"];\n\tif(draftTiddler && originalTitle) {\n\t\t// Ask for confirmation if the tiddler text has changed\n\t\tvar isConfirmed = true,\n\t\t\toriginalTiddler = this.wiki.getTiddler(originalTitle),\n\t\t\tstoryList = this.getStoryList();\n\t\tif(this.wiki.isDraftModified(draftTitle)) {\n\t\t\tisConfirmed = confirm($tw.language.getString(\n\t\t\t\t\"ConfirmCancelTiddler\",\n\t\t\t\t{variables:\n\t\t\t\t\t{title: draftTitle}\n\t\t\t\t}\n\t\t\t));\n\t\t}\n\t\t// Remove the draft tiddler\n\t\tif(isConfirmed) {\n\t\t\tthis.wiki.deleteTiddler(draftTitle);\n\t\t\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\t\t\tif(originalTiddler) {\n\t\t\t\t\tthis.replaceFirstTitleInStory(storyList,draftTitle,originalTitle);\n\t\t\t\t\tthis.addToHistory(originalTitle,event.navigateFromClientRect);\n\t\t\t\t} else {\n\t\t\t\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\t\t\t}\n\t\t\t\tthis.saveStoryList(storyList);\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\n// Create a new draft tiddler\n// event.param can either be the title of a template tiddler, or a hashmap of fields.\n//\n// The title of the newly created tiddler follows these rules:\n// * If a hashmap was used and a title field was specified, use that title\n// * If a hashmap was used without a title field, use a default title, if necessary making it unique with a numeric suffix\n// * If a template tiddler was used, use the title of the template, if necessary making it unique with a numeric suffix\n//\n// If a draft of the target tiddler already exists then it is reused\nNavigatorWidget.prototype.handleNewTiddlerEvent = function(event) {\n\t// Get the story details\n\tvar storyList = this.getStoryList(),\n\t\ttemplateTiddler, additionalFields, title, draftTitle, existingTiddler;\n\t// Get the template tiddler (if any)\n\tif(typeof event.param === \"string\") {\n\t\t// Get the template tiddler\n\t\ttemplateTiddler = this.wiki.getTiddler(event.param);\n\t\t// Generate a new title\n\t\ttitle = this.wiki.generateNewTitle(event.param || $tw.language.getString(\"DefaultNewTiddlerTitle\"));\n\t}\n\t// Get the specified additional fields\n\tif(typeof event.paramObject === \"object\") {\n\t\tadditionalFields = event.paramObject;\n\t}\n\tif(typeof event.param === \"object\") { // Backwards compatibility with 5.1.3\n\t\tadditionalFields = event.param;\n\t}\n\tif(additionalFields && additionalFields.title) {\n\t\ttitle = additionalFields.title;\n\t}\n\t// Generate a title if we don't have one\n\ttitle = title || this.wiki.generateNewTitle($tw.language.getString(\"DefaultNewTiddlerTitle\"));\n\t// Find any existing draft for this tiddler\n\tdraftTitle = this.wiki.findDraft(title);\n\t// Pull in any existing tiddler\n\tif(draftTitle) {\n\t\texistingTiddler = this.wiki.getTiddler(draftTitle);\n\t} else {\n\t\tdraftTitle = this.generateDraftTitle(title);\n\t\texistingTiddler = this.wiki.getTiddler(title);\n\t}\n\t// Merge the tags\n\tvar mergedTags = [];\n\tif(existingTiddler && existingTiddler.fields.tags) {\n\t\t$tw.utils.pushTop(mergedTags,existingTiddler.fields.tags);\n\t}\n\tif(additionalFields && additionalFields.tags) {\n\t\t// Merge tags\n\t\tmergedTags = $tw.utils.pushTop(mergedTags,$tw.utils.parseStringArray(additionalFields.tags));\n\t}\n\tif(templateTiddler && templateTiddler.fields.tags) {\n\t\t// Merge tags\n\t\tmergedTags = $tw.utils.pushTop(mergedTags,templateTiddler.fields.tags);\n\t}\n\t// Save the draft tiddler\n\tvar draftTiddler = new $tw.Tiddler({\n\t\t\ttext: \"\",\n\t\t\t\"draft.title\": title\n\t\t},\n\t\ttemplateTiddler,\n\t\texistingTiddler,\n\t\tadditionalFields,\n\t\tthis.wiki.getCreationFields(),\n\t\t{\n\t\t\ttitle: draftTitle,\n\t\t\t\"draft.of\": title,\n\t\t\ttags: mergedTags\n\t\t},this.wiki.getModificationFields());\n\tthis.wiki.addTiddler(draftTiddler);\n\t// Update the story to insert the new draft at the top and remove any existing tiddler\n\tif(storyList.indexOf(draftTitle) === -1) {\n\t\tvar slot = storyList.indexOf(event.navigateFromTitle);\n\t\tstoryList.splice(slot + 1,0,draftTitle);\n\t}\n\tif(storyList.indexOf(title) !== -1) {\n\t\tstoryList.splice(storyList.indexOf(title),1);\t\t\n\t}\n\tthis.saveStoryList(storyList);\n\t// Add a new record to the top of the history stack\n\tthis.addToHistory(draftTitle);\n\treturn false;\n};\n\n// Import JSON tiddlers into a pending import tiddler\nNavigatorWidget.prototype.handleImportTiddlersEvent = function(event) {\n\t// Get the tiddlers\n\tvar tiddlers = [];\n\ttry {\n\t\ttiddlers = JSON.parse(event.param);\t\n\t} catch(e) {\n\t}\n\t// Get the current $:/Import tiddler\n\tvar importTiddler = this.wiki.getTiddler(IMPORT_TITLE),\n\t\timportData = this.wiki.getTiddlerData(IMPORT_TITLE,{}),\n\t\tnewFields = new Object({\n\t\t\ttitle: IMPORT_TITLE,\n\t\t\ttype: \"application/json\",\n\t\t\t\"plugin-type\": \"import\",\n\t\t\t\"status\": \"pending\"\n\t\t}),\n\t\tincomingTiddlers = [];\n\t// Process each tiddler\n\timportData.tiddlers = importData.tiddlers || {};\n\t$tw.utils.each(tiddlers,function(tiddlerFields) {\n\t\tvar title = tiddlerFields.title;\n\t\tif(title) {\n\t\t\tincomingTiddlers.push(title);\n\t\t\timportData.tiddlers[title] = tiddlerFields;\n\t\t}\n\t});\n\t// Give the active upgrader modules a chance to process the incoming tiddlers\n\tvar messages = this.wiki.invokeUpgraders(incomingTiddlers,importData.tiddlers);\n\t$tw.utils.each(messages,function(message,title) {\n\t\tnewFields[\"message-\" + title] = message;\n\t});\n\t// Deselect any suppressed tiddlers\n\t$tw.utils.each(importData.tiddlers,function(tiddler,title) {\n\t\tif($tw.utils.count(tiddler) === 0) {\n\t\t\tnewFields[\"selection-\" + title] = \"unchecked\";\n\t\t}\n\t});\n\t// Save the $:/Import tiddler\n\tnewFields.text = JSON.stringify(importData,null,$tw.config.preferences.jsonSpaces);\n\tthis.wiki.addTiddler(new $tw.Tiddler(importTiddler,newFields));\n\t// Update the story and history details\n\tif(this.getVariable(\"tv-auto-open-on-import\") !== \"no\") {\n\t\tvar storyList = this.getStoryList(),\n\t\t\thistory = [];\n\t\t// Add it to the story\n\t\tif(storyList.indexOf(IMPORT_TITLE) === -1) {\n\t\t\tstoryList.unshift(IMPORT_TITLE);\n\t\t}\n\t\t// And to history\n\t\thistory.push(IMPORT_TITLE);\n\t\t// Save the updated story and history\n\t\tthis.saveStoryList(storyList);\n\t\tthis.addToHistory(history);\n\t}\n\treturn false;\n};\n\n// \nNavigatorWidget.prototype.handlePerformImportEvent = function(event) {\n\tvar self = this,\n\t\timportTiddler = this.wiki.getTiddler(event.param),\n\t\timportData = this.wiki.getTiddlerDataCached(event.param,{tiddlers: {}}),\n\t\timportReport = [];\n\t// Add the tiddlers to the store\n\timportReport.push($tw.language.getString(\"Import/Imported/Hint\") + \"\\n\");\n\t$tw.utils.each(importData.tiddlers,function(tiddlerFields) {\n\t\tvar title = tiddlerFields.title;\n\t\tif(title && importTiddler && importTiddler.fields[\"selection-\" + title] !== \"unchecked\") {\n\t\t\tvar tiddler = new $tw.Tiddler(tiddlerFields);\n\t\t\ttiddler = $tw.hooks.invokeHook(\"th-importing-tiddler\",tiddler);\n\t\t\tself.wiki.addTiddler(tiddler);\n\t\t\timportReport.push(\"# [[\" + tiddlerFields.title + \"]]\");\n\t\t}\n\t});\n\t// Replace the $:/Import tiddler with an import report\n\tthis.wiki.addTiddler(new $tw.Tiddler({\n\t\ttitle: event.param,\n\t\ttext: importReport.join(\"\\n\"),\n\t\t\"status\": \"complete\"\n\t}));\n\t// Navigate to the $:/Import tiddler\n\tthis.addToHistory([event.param]);\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n};\n\nNavigatorWidget.prototype.handleFoldTiddlerEvent = function(event) {\n\tvar paramObject = event.paramObject || {};\n\tif(paramObject.foldedState) {\n\t\tvar foldedState = this.wiki.getTiddlerText(paramObject.foldedState,\"show\") === \"show\" ? \"hide\" : \"show\";\n\t\tthis.wiki.setText(paramObject.foldedState,\"text\",null,foldedState);\n\t}\n};\n\nNavigatorWidget.prototype.handleFoldOtherTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix;\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,event.param === title ? \"show\" : \"hide\");\n\t});\n};\n\nNavigatorWidget.prototype.handleFoldAllTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix;\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,\"hide\");\n\t});\n};\n\nNavigatorWidget.prototype.handleUnfoldAllTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix;\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,\"show\");\n\t});\n};\n\nNavigatorWidget.prototype.handleRenameTiddlerEvent = function(event) {\n\tvar paramObject = event.paramObject || {},\n\t\tfrom = paramObject.from || event.tiddlerTitle,\n\t\tto = paramObject.to;\n\t$tw.wiki.renameTiddler(from,to);\n};\n\nexports.navigator = NavigatorWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/navigator.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/password.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/password.js\ntype: application/javascript\nmodule-type: widget\n\nPassword widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar PasswordWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nPasswordWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nPasswordWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Get the current password\n\tvar password = $tw.browser ? $tw.utils.getPassword(this.passwordName) || \"\" : \"\";\n\t// Create our element\n\tvar domNode = this.document.createElement(\"input\");\n\tdomNode.setAttribute(\"type\",\"password\");\n\tdomNode.setAttribute(\"value\",password);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nPasswordWidget.prototype.handleChangeEvent = function(event) {\n\tvar password = this.domNodes[0].value;\n\treturn $tw.utils.savePassword(this.passwordName,password);\n};\n\n/*\nCompute the internal state of the widget\n*/\nPasswordWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.passwordName = this.getAttribute(\"name\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nPasswordWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.password = PasswordWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/password.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/radio.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/radio.js\ntype: application/javascript\nmodule-type: widget\n\nSet a field or index at a given tiddler via radio buttons\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RadioWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRadioWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRadioWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create our elements\n\tthis.labelDomNode = this.document.createElement(\"label\");\n\tthis.labelDomNode.setAttribute(\"class\",this.radioClass);\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"radio\");\n\tif(this.getValue() == this.radioValue) {\n\t\tthis.inputDomNode.setAttribute(\"checked\",\"true\");\n\t}\n\tthis.labelDomNode.appendChild(this.inputDomNode);\n\tthis.spanDomNode = this.document.createElement(\"span\");\n\tthis.labelDomNode.appendChild(this.spanDomNode);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.labelDomNode,nextSibling);\n\tthis.renderChildren(this.spanDomNode,null);\n\tthis.domNodes.push(this.labelDomNode);\n};\n\nRadioWidget.prototype.getValue = function() {\n\tvar value,\n\t\ttiddler = this.wiki.getTiddler(this.radioTitle);\n\tif (this.radioIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.radioTitle,this.radioIndex);\n\t} else {\n\t\tvalue = tiddler && tiddler.getFieldString(this.radioField);\n\t}\n\treturn value;\n};\n\nRadioWidget.prototype.setValue = function() {\n\tif(this.radioIndex) {\n\t\tthis.wiki.setText(this.radioTitle,\"\",this.radioIndex,this.radioValue);\n\t} else {\n\t\tvar tiddler = this.wiki.getTiddler(this.radioTitle),\n\t\t\taddition = {};\n\t\taddition[this.radioField] = this.radioValue;\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),{title: this.radioTitle},tiddler,addition,this.wiki.getModificationFields()));\n\t}\n};\n\nRadioWidget.prototype.handleChangeEvent = function(event) {\n\tif(this.inputDomNode.checked) {\n\t\tthis.setValue();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nRadioWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.radioTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.radioField = this.getAttribute(\"field\",\"text\");\n\tthis.radioIndex = this.getAttribute(\"index\");\n\tthis.radioValue = this.getAttribute(\"value\");\n\tthis.radioClass = this.getAttribute(\"class\",\"\");\n\tif(this.radioClass !== \"\") {\n\t\tthis.radioClass += \" \";\n\t}\n\tthis.radioClass += \"tc-radio\";\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRadioWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.value || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tif(changedTiddlers[this.radioTitle]) {\n\t\t\tthis.inputDomNode.checked = this.getValue() === this.radioValue;\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.radio = RadioWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/radio.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/raw.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/raw.js\ntype: application/javascript\nmodule-type: widget\n\nRaw widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RawWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRawWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRawWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tvar div = this.document.createElement(\"div\");\n\tdiv.innerHTML=this.parseTreeNode.html;\n\tparent.insertBefore(div,nextSibling);\n\tthis.domNodes.push(div);\t\n};\n\n/*\nCompute the internal state of the widget\n*/\nRawWidget.prototype.execute = function() {\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRawWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.raw = RawWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/raw.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/reveal.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/reveal.js\ntype: application/javascript\nmodule-type: widget\n\nReveal widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RevealWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRevealWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRevealWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.revealTag && $tw.config.htmlUnsafeElements.indexOf(this.revealTag) === -1) {\n\t\ttag = this.revealTag;\n\t}\n\tvar domNode = this.document.createElement(tag);\n\tvar classes = this[\"class\"].split(\" \") || [];\n\tclasses.push(\"tc-reveal\");\n\tdomNode.className = classes.join(\" \");\n\tif(this.style) {\n\t\tdomNode.setAttribute(\"style\",this.style);\n\t}\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tif(!domNode.isTiddlyWikiFakeDom && this.type === \"popup\" && this.isOpen) {\n\t\tthis.positionPopup(domNode);\n\t\t$tw.utils.addClass(domNode,\"tc-popup\"); // Make sure that clicks don't dismiss popups within the revealed content\n\t}\n\tif(!this.isOpen) {\n\t\tdomNode.setAttribute(\"hidden\",\"true\");\n\t}\n\tthis.domNodes.push(domNode);\n};\n\nRevealWidget.prototype.positionPopup = function(domNode) {\n\tdomNode.style.position = \"absolute\";\n\tdomNode.style.zIndex = \"1000\";\n\tswitch(this.position) {\n\t\tcase \"left\":\n\t\t\tdomNode.style.left = (this.popup.left - domNode.offsetWidth) + \"px\";\n\t\t\tdomNode.style.top = this.popup.top + \"px\";\n\t\t\tbreak;\n\t\tcase \"above\":\n\t\t\tdomNode.style.left = this.popup.left + \"px\";\n\t\t\tdomNode.style.top = (this.popup.top - domNode.offsetHeight) + \"px\";\n\t\t\tbreak;\n\t\tcase \"aboveright\":\n\t\t\tdomNode.style.left = (this.popup.left + this.popup.width) + \"px\";\n\t\t\tdomNode.style.top = (this.popup.top + this.popup.height - domNode.offsetHeight) + \"px\";\n\t\t\tbreak;\n\t\tcase \"right\":\n\t\t\tdomNode.style.left = (this.popup.left + this.popup.width) + \"px\";\n\t\t\tdomNode.style.top = this.popup.top + \"px\";\n\t\t\tbreak;\n\t\tcase \"belowleft\":\n\t\t\tdomNode.style.left = (this.popup.left + this.popup.width - domNode.offsetWidth) + \"px\";\n\t\t\tdomNode.style.top = (this.popup.top + this.popup.height) + \"px\";\n\t\t\tbreak;\n\t\tdefault: // Below\n\t\t\tdomNode.style.left = this.popup.left + \"px\";\n\t\t\tdomNode.style.top = (this.popup.top + this.popup.height) + \"px\";\n\t\t\tbreak;\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nRevealWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.state = this.getAttribute(\"state\");\n\tthis.revealTag = this.getAttribute(\"tag\");\n\tthis.type = this.getAttribute(\"type\");\n\tthis.text = this.getAttribute(\"text\");\n\tthis.position = this.getAttribute(\"position\");\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tthis.style = this.getAttribute(\"style\",\"\");\n\tthis[\"default\"] = this.getAttribute(\"default\",\"\");\n\tthis.animate = this.getAttribute(\"animate\",\"no\");\n\tthis.retain = this.getAttribute(\"retain\",\"no\");\n\tthis.openAnimation = this.animate === \"no\" ? undefined : \"open\";\n\tthis.closeAnimation = this.animate === \"no\" ? undefined : \"close\";\n\t// Compute the title of the state tiddler and read it\n\tthis.stateTitle = this.state;\n\tthis.readState();\n\t// Construct the child widgets\n\tvar childNodes = this.isOpen ? this.parseTreeNode.children : [];\n\tthis.hasChildNodes = this.isOpen;\n\tthis.makeChildWidgets(childNodes);\n};\n\n/*\nRead the state tiddler\n*/\nRevealWidget.prototype.readState = function() {\n\t// Read the information from the state tiddler\n\tvar state = this.stateTitle ? this.wiki.getTextReference(this.stateTitle,this[\"default\"],this.getVariable(\"currentTiddler\")) : this[\"default\"];\n\tswitch(this.type) {\n\t\tcase \"popup\":\n\t\t\tthis.readPopupState(state);\n\t\t\tbreak;\n\t\tcase \"match\":\n\t\t\tthis.readMatchState(state);\n\t\t\tbreak;\n\t\tcase \"nomatch\":\n\t\t\tthis.readMatchState(state);\n\t\t\tthis.isOpen = !this.isOpen;\n\t\t\tbreak;\n\t}\n};\n\nRevealWidget.prototype.readMatchState = function(state) {\n\tthis.isOpen = state === this.text;\n};\n\nRevealWidget.prototype.readPopupState = function(state) {\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/,\n\t\tmatch = popupLocationRegExp.exec(state);\n\t// Check if the state matches the location regexp\n\tif(match) {\n\t\t// If so, we're open\n\t\tthis.isOpen = true;\n\t\t// Get the location\n\t\tthis.popup = {\n\t\t\tleft: parseFloat(match[1]),\n\t\t\ttop: parseFloat(match[2]),\n\t\t\twidth: parseFloat(match[3]),\n\t\t\theight: parseFloat(match[4])\n\t\t};\n\t} else {\n\t\t// If not, we're closed\n\t\tthis.isOpen = false;\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRevealWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.state || changedAttributes.type || changedAttributes.text || changedAttributes.position || changedAttributes[\"default\"] || changedAttributes.animate) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false,\n\t\t\tcurrentlyOpen = this.isOpen;\n\t\tthis.readState();\n\t\tif(this.isOpen !== currentlyOpen) {\n\t\t\tif(this.retain === \"yes\") {\n\t\t\t\tthis.updateState();\n\t\t\t} else {\n\t\t\t\tthis.refreshSelf();\n\t\t\t\trefreshed = true;\n\t\t\t}\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\n/*\nCalled by refresh() to dynamically show or hide the content\n*/\nRevealWidget.prototype.updateState = function() {\n\t// Read the current state\n\tthis.readState();\n\t// Construct the child nodes if needed\n\tvar domNode = this.domNodes[0];\n\tif(this.isOpen && !this.hasChildNodes) {\n\t\tthis.hasChildNodes = true;\n\t\tthis.makeChildWidgets(this.parseTreeNode.children);\n\t\tthis.renderChildren(domNode,null);\n\t}\n\t// Animate our DOM node\n\tif(!domNode.isTiddlyWikiFakeDom && this.type === \"popup\" && this.isOpen) {\n\t\tthis.positionPopup(domNode);\n\t\t$tw.utils.addClass(domNode,\"tc-popup\"); // Make sure that clicks don't dismiss popups within the revealed content\n\n\t}\n\tif(this.isOpen) {\n\t\tdomNode.removeAttribute(\"hidden\");\n        $tw.anim.perform(this.openAnimation,domNode);\n\t} else {\n\t\t$tw.anim.perform(this.closeAnimation,domNode,{callback: function() {\n\t\t\tdomNode.setAttribute(\"hidden\",\"true\");\n        }});\n\t}\n};\n\nexports.reveal = RevealWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/reveal.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/scrollable.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/scrollable.js\ntype: application/javascript\nmodule-type: widget\n\nScrollable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ScrollableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.scaleFactor = 1;\n\tthis.addEventListeners([\n\t\t{type: \"tm-scroll\", handler: \"handleScrollEvent\"}\n\t]);\n\tif($tw.browser) {\n\t\tthis.requestAnimationFrame = window.requestAnimationFrame ||\n\t\t\twindow.webkitRequestAnimationFrame ||\n\t\t\twindow.mozRequestAnimationFrame ||\n\t\t\tfunction(callback) {\n\t\t\t\treturn window.setTimeout(callback, 1000/60);\n\t\t\t};\n\t\tthis.cancelAnimationFrame = window.cancelAnimationFrame ||\n\t\t\twindow.webkitCancelAnimationFrame ||\n\t\t\twindow.webkitCancelRequestAnimationFrame ||\n\t\t\twindow.mozCancelAnimationFrame ||\n\t\t\twindow.mozCancelRequestAnimationFrame ||\n\t\t\tfunction(id) {\n\t\t\t\twindow.clearTimeout(id);\n\t\t\t};\n\t}\n};\n\n/*\nInherit from the base widget class\n*/\nScrollableWidget.prototype = new Widget();\n\nScrollableWidget.prototype.cancelScroll = function() {\n\tif(this.idRequestFrame) {\n\t\tthis.cancelAnimationFrame.call(window,this.idRequestFrame);\n\t\tthis.idRequestFrame = null;\n\t}\n};\n\n/*\nHandle a scroll event\n*/\nScrollableWidget.prototype.handleScrollEvent = function(event) {\n\t// Pass the scroll event through if our offsetsize is larger than our scrollsize\n\tif(this.outerDomNode.scrollWidth <= this.outerDomNode.offsetWidth && this.outerDomNode.scrollHeight <= this.outerDomNode.offsetHeight && this.fallthrough === \"yes\") {\n\t\treturn true;\n\t}\n\tthis.scrollIntoView(event.target);\n\treturn false; // Handled event\n};\n\n/*\nScroll an element into view\n*/\nScrollableWidget.prototype.scrollIntoView = function(element) {\n\tvar duration = $tw.utils.getAnimationDuration();\n\tthis.cancelScroll();\n\tthis.startTime = Date.now();\n\tvar scrollPosition = {\n\t\tx: this.outerDomNode.scrollLeft,\n\t\ty: this.outerDomNode.scrollTop\n\t};\n\t// Get the client bounds of the element and adjust by the scroll position\n\tvar scrollableBounds = this.outerDomNode.getBoundingClientRect(),\n\t\tclientTargetBounds = element.getBoundingClientRect(),\n\t\tbounds = {\n\t\t\tleft: clientTargetBounds.left + scrollPosition.x - scrollableBounds.left,\n\t\t\ttop: clientTargetBounds.top + scrollPosition.y - scrollableBounds.top,\n\t\t\twidth: clientTargetBounds.width,\n\t\t\theight: clientTargetBounds.height\n\t\t};\n\t// We'll consider the horizontal and vertical scroll directions separately via this function\n\tvar getEndPos = function(targetPos,targetSize,currentPos,currentSize) {\n\t\t\t// If the target is already visible then stay where we are\n\t\t\tif(targetPos >= currentPos && (targetPos + targetSize) <= (currentPos + currentSize)) {\n\t\t\t\treturn currentPos;\n\t\t\t// If the target is above/left of the current view, then scroll to its top/left\n\t\t\t} else if(targetPos <= currentPos) {\n\t\t\t\treturn targetPos;\n\t\t\t// If the target is smaller than the window and the scroll position is too far up, then scroll till the target is at the bottom of the window\n\t\t\t} else if(targetSize < currentSize && currentPos < (targetPos + targetSize - currentSize)) {\n\t\t\t\treturn targetPos + targetSize - currentSize;\n\t\t\t// If the target is big, then just scroll to the top\n\t\t\t} else if(currentPos < targetPos) {\n\t\t\t\treturn targetPos;\n\t\t\t// Otherwise, stay where we are\n\t\t\t} else {\n\t\t\t\treturn currentPos;\n\t\t\t}\n\t\t},\n\t\tendX = getEndPos(bounds.left,bounds.width,scrollPosition.x,this.outerDomNode.offsetWidth),\n\t\tendY = getEndPos(bounds.top,bounds.height,scrollPosition.y,this.outerDomNode.offsetHeight);\n\t// Only scroll if necessary\n\tif(endX !== scrollPosition.x || endY !== scrollPosition.y) {\n\t\tvar self = this,\n\t\t\tdrawFrame;\n\t\tdrawFrame = function () {\n\t\t\tvar t;\n\t\t\tif(duration <= 0) {\n\t\t\t\tt = 1;\n\t\t\t} else {\n\t\t\t\tt = ((Date.now()) - self.startTime) / duration;\t\n\t\t\t}\n\t\t\tif(t >= 1) {\n\t\t\t\tself.cancelScroll();\n\t\t\t\tt = 1;\n\t\t\t}\n\t\t\tt = $tw.utils.slowInSlowOut(t);\n\t\t\tself.outerDomNode.scrollLeft = scrollPosition.x + (endX - scrollPosition.x) * t;\n\t\t\tself.outerDomNode.scrollTop = scrollPosition.y + (endY - scrollPosition.y) * t;\n\t\t\tif(t < 1) {\n\t\t\t\tself.idRequestFrame = self.requestAnimationFrame.call(window,drawFrame);\n\t\t\t}\n\t\t};\n\t\tdrawFrame();\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nScrollableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create elements\n\tthis.outerDomNode = this.document.createElement(\"div\");\n\t$tw.utils.setStyle(this.outerDomNode,[\n\t\t{overflowY: \"auto\"},\n\t\t{overflowX: \"auto\"},\n\t\t{webkitOverflowScrolling: \"touch\"}\n\t]);\n\tthis.innerDomNode = this.document.createElement(\"div\");\n\tthis.outerDomNode.appendChild(this.innerDomNode);\n\t// Assign classes\n\tthis.outerDomNode.className = this[\"class\"] || \"\";\n\t// Insert element\n\tparent.insertBefore(this.outerDomNode,nextSibling);\n\tthis.renderChildren(this.innerDomNode,null);\n\tthis.domNodes.push(this.outerDomNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nScrollableWidget.prototype.execute = function() {\n\t// Get attributes\n\tthis.fallthrough = this.getAttribute(\"fallthrough\",\"yes\");\n\tthis[\"class\"] = this.getAttribute(\"class\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nScrollableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.scrollable = ScrollableWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/scrollable.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/select.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/select.js\ntype: application/javascript\nmodule-type: widget\n\nSelect widget:\n\n```\n<$select tiddler=\"MyTiddler\" field=\"text\">\n<$list filter=\"[tag[chapter]]\">\n<option value=<<currentTiddler>>>\n<$view field=\"description\"/>\n</option>\n</$list>\n</$select>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SelectWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSelectWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSelectWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n\tthis.setSelectValue();\n\t$tw.utils.addEventListeners(this.getSelectDomNode(),[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n};\n\n/*\nHandle a change event\n*/\nSelectWidget.prototype.handleChangeEvent = function(event) {\n\t// Get the new value and assign it to the tiddler\n\tif(this.selectMultiple == false) {\n\t\tvar value = this.getSelectDomNode().value;\n\t} else {\n\t\tvar value = this.getSelectValues()\n\t\t\t\tvalue = $tw.utils.stringifyList(value);\n\t}\n\tthis.wiki.setText(this.selectTitle,this.selectField,this.selectIndex,value);\n\t// Trigger actions\n\tif(this.selectActions) {\n\t\tthis.invokeActionString(this.selectActions,this,event);\n\t}\n};\n\n/*\nIf necessary, set the value of the select element to the current value\n*/\nSelectWidget.prototype.setSelectValue = function() {\n\tvar value = this.selectDefault;\n\t// Get the value\n\tif(this.selectIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.selectTitle,this.selectIndex);\n\t} else {\n\t\tvar tiddler = this.wiki.getTiddler(this.selectTitle);\n\t\tif(tiddler) {\n\t\t\tif(this.selectField === \"text\") {\n\t\t\t\t// Calling getTiddlerText() triggers lazy loading of skinny tiddlers\n\t\t\t\tvalue = this.wiki.getTiddlerText(this.selectTitle);\n\t\t\t} else {\n\t\t\t\tif($tw.utils.hop(tiddler.fields,this.selectField)) {\n\t\t\t\t\tvalue = tiddler.getFieldString(this.selectField);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif(this.selectField === \"title\") {\n\t\t\t\tvalue = this.selectTitle;\n\t\t\t}\n\t\t}\n\t}\n\t// Assign it to the select element if it's different than the current value\n\tif (this.selectMultiple) {\n\t\tvalue = value === undefined ? \"\" : value;\n\t\tvar select = this.getSelectDomNode();\n\t\tvar values = Array.isArray(value) ? value : $tw.utils.parseStringArray(value);\n\t\tfor(var i=0; i < select.children.length; i++){\n\t\t\tif(values.indexOf(select.children[i].value) != -1) {\n\t\t\t\tselect.children[i].selected = true;\n\t\t\t}\n\t\t}\n\t\t\n\t} else {\n\t\tvar domNode = this.getSelectDomNode();\n\t\tif(domNode.value !== value) {\n\t\t\tdomNode.value = value;\n\t\t}\n\t}\n};\n\n/*\nGet the DOM node of the select element\n*/\nSelectWidget.prototype.getSelectDomNode = function() {\n\treturn this.children[0].domNodes[0];\n};\n\n// Return an array of the selected opion values\n// select is an HTML select element\nSelectWidget.prototype.getSelectValues = function() {\n\tvar select, result, options, opt;\n\tselect = this.getSelectDomNode();\n\tresult = [];\n\toptions = select && select.options;\n\tfor (var i=0; i<options.length; i++) {\n\t\topt = options[i];\n\t\tif (opt.selected) {\n\t\t\tresult.push(opt.value || opt.text);\n\t\t}\n\t}\n\treturn result;\n}\n\n/*\nCompute the internal state of the widget\n*/\nSelectWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.selectActions = this.getAttribute(\"actions\");\n\tthis.selectTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.selectField = this.getAttribute(\"field\",\"text\");\n\tthis.selectIndex = this.getAttribute(\"index\");\n\tthis.selectClass = this.getAttribute(\"class\");\n\tthis.selectDefault = this.getAttribute(\"default\");\n\tthis.selectMultiple = this.getAttribute(\"multiple\", false);\n\tthis.selectSize = this.getAttribute(\"size\");\n\t// Make the child widgets\n\tvar selectNode = {\n\t\ttype: \"element\",\n\t\ttag: \"select\",\n\t\tchildren: this.parseTreeNode.children\n\t};\n\tif(this.selectClass) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"class\",this.selectClass);\n\t}\n\tif(this.selectMultiple) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"multiple\",\"multiple\");\n\t}\n\tif(this.selectSize) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"size\",this.selectSize);\n\t}\n\tthis.makeChildWidgets([selectNode]);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nSelectWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// If we're using a different tiddler/field/index then completely refresh ourselves\n\tif(changedAttributes.selectTitle || changedAttributes.selectField || changedAttributes.selectIndex) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t// If the target tiddler value has changed, just update setting and refresh the children\n\t} else {\n\t\tvar childrenRefreshed = this.refreshChildren(changedTiddlers);\n\t\tif(changedTiddlers[this.selectTitle] || childrenRefreshed) {\n\t\t\tthis.setSelectValue();\n\t\t} \n\t\treturn childrenRefreshed;\n\t}\n};\n\nexports.select = SelectWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/select.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/set.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/set.js\ntype: application/javascript\nmodule-type: widget\n\nSet variable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SetWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSetWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSetWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nSetWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.setName = this.getAttribute(\"name\",\"currentTiddler\");\n\tthis.setFilter = this.getAttribute(\"filter\");\n\tthis.setSelect = this.getAttribute(\"select\");\n\tthis.setValue = this.getAttribute(\"value\");\n\tthis.setEmptyValue = this.getAttribute(\"emptyValue\");\n\t// Set context variable\n\tthis.setVariable(this.setName,this.getValue(),this.parseTreeNode.params);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nGet the value to be assigned\n*/\nSetWidget.prototype.getValue = function() {\n\tvar value = this.setValue;\n\tif(this.setFilter) {\n\t\tvar results = this.wiki.filterTiddlers(this.setFilter,this);\n\t\tif(!this.setValue) {\n\t\t\tvar select;\n\t\t\tif(this.setSelect) {\n\t\t\t\tselect = parseInt(this.setSelect,10);\n\t\t\t}\n\t\t\tif(select !== undefined) {\n\t\t\t\tvalue = results[select] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = $tw.utils.stringifyList(results);\t\t\t\n\t\t\t}\n\t\t}\n\t\tif(results.length === 0 && this.setEmptyValue !== undefined) {\n\t\t\tvalue = this.setEmptyValue;\n\t\t}\n\t} else if(!value && this.setEmptyValue) {\n\t\tvalue = this.setEmptyValue;\n\t}\n\treturn value;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nSetWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name || changedAttributes.filter || changedAttributes.select ||changedAttributes.value || changedAttributes.emptyValue ||\n\t   (this.setFilter && this.getValue() != this.variables[this.setName].value)) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.setvariable = SetWidget;\nexports.set = SetWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/set.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/text.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/text.js\ntype: application/javascript\nmodule-type: widget\n\nText node widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TextNodeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTextNodeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTextNodeWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar text = this.getAttribute(\"text\",this.parseTreeNode.text || \"\");\n\ttext = text.replace(/\\r/mg,\"\");\n\tvar textNode = this.document.createTextNode(text);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTextNodeWidget.prototype.execute = function() {\n\t// Nothing to do for a text node\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTextNodeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.text) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.text = TextNodeWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/text.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/tiddler.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/tiddler.js\ntype: application/javascript\nmodule-type: widget\n\nTiddler widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTiddlerWidget.prototype.execute = function() {\n\tthis.tiddlerState = this.computeTiddlerState();\n\tthis.setVariable(\"currentTiddler\",this.tiddlerState.currentTiddler);\n\tthis.setVariable(\"missingTiddlerClass\",this.tiddlerState.missingTiddlerClass);\n\tthis.setVariable(\"shadowTiddlerClass\",this.tiddlerState.shadowTiddlerClass);\n\tthis.setVariable(\"systemTiddlerClass\",this.tiddlerState.systemTiddlerClass);\n\tthis.setVariable(\"tiddlerTagClasses\",this.tiddlerState.tiddlerTagClasses);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nCompute the tiddler state flags\n*/\nTiddlerWidget.prototype.computeTiddlerState = function() {\n\t// Get our parameters\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Compute the state\n\tvar state = {\n\t\tcurrentTiddler: this.tiddlerTitle || \"\",\n\t\tmissingTiddlerClass: (this.wiki.tiddlerExists(this.tiddlerTitle) || this.wiki.isShadowTiddler(this.tiddlerTitle)) ? \"tc-tiddler-exists\" : \"tc-tiddler-missing\",\n\t\tshadowTiddlerClass: this.wiki.isShadowTiddler(this.tiddlerTitle) ? \"tc-tiddler-shadow\" : \"\",\n\t\tsystemTiddlerClass: this.wiki.isSystemTiddler(this.tiddlerTitle) ? \"tc-tiddler-system\" : \"\",\n\t\ttiddlerTagClasses: this.getTagClasses()\n\t};\n\t// Compute a simple hash to make it easier to detect changes\n\tstate.hash = state.currentTiddler + state.missingTiddlerClass + state.shadowTiddlerClass + state.systemTiddlerClass + state.tiddlerTagClasses;\n\treturn state;\n};\n\n/*\nCreate a string of CSS classes derived from the tags of the current tiddler\n*/\nTiddlerWidget.prototype.getTagClasses = function() {\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle);\n\tif(tiddler) {\n\t\tvar tags = [];\n\t\t$tw.utils.each(tiddler.fields.tags,function(tag) {\n\t\t\ttags.push(\"tc-tagged-\" + encodeURIComponent(tag));\n\t\t});\n\t\treturn tags.join(\" \");\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\tnewTiddlerState = this.computeTiddlerState();\n\tif(changedAttributes.tiddler || newTiddlerState.hash !== this.tiddlerState.hash) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.tiddler = TiddlerWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/tiddler.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/transclude.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/transclude.js\ntype: application/javascript\nmodule-type: widget\n\nTransclude widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TranscludeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTranscludeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTranscludeWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTranscludeWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.transcludeTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.transcludeSubTiddler = this.getAttribute(\"subtiddler\");\n\tthis.transcludeField = this.getAttribute(\"field\");\n\tthis.transcludeIndex = this.getAttribute(\"index\");\n\tthis.transcludeMode = this.getAttribute(\"mode\");\n\t// Parse the text reference\n\tvar parseAsInline = !this.parseTreeNode.isBlock;\n\tif(this.transcludeMode === \"inline\") {\n\t\tparseAsInline = true;\n\t} else if(this.transcludeMode === \"block\") {\n\t\tparseAsInline = false;\n\t}\n\tvar parser = this.wiki.parseTextReference(\n\t\t\t\t\t\tthis.transcludeTitle,\n\t\t\t\t\t\tthis.transcludeField,\n\t\t\t\t\t\tthis.transcludeIndex,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tparseAsInline: parseAsInline,\n\t\t\t\t\t\t\tsubTiddler: this.transcludeSubTiddler\n\t\t\t\t\t\t}),\n\t\tparseTreeNodes = parser ? parser.tree : this.parseTreeNode.children;\n\t// Set context variables for recursion detection\n\tvar recursionMarker = this.makeRecursionMarker();\n\tthis.setVariable(\"transclusion\",recursionMarker);\n\t// Check for recursion\n\tif(parser) {\n\t\tif(this.parentWidget && this.parentWidget.hasVariable(\"transclusion\",recursionMarker)) {\n\t\t\tparseTreeNodes = [{type: \"element\", tag: \"span\", attributes: {\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-error\"}\n\t\t\t}, children: [\n\t\t\t\t{type: \"text\", text: $tw.language.getString(\"Error/RecursiveTransclusion\")}\n\t\t\t]}];\n\t\t}\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nCompose a string comprising the title, field and/or index to identify this transclusion for recursion detection\n*/\nTranscludeWidget.prototype.makeRecursionMarker = function() {\n\tvar output = [];\n\toutput.push(\"{\");\n\toutput.push(this.getVariable(\"currentTiddler\",{defaultValue: \"\"}));\n\toutput.push(\"|\");\n\toutput.push(this.transcludeTitle || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeField || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeIndex || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeSubTiddler || \"\");\n\toutput.push(\"}\");\n\treturn output.join(\"\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTranscludeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedTiddlers[this.transcludeTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.transclude = TranscludeWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/transclude.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/vars.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/vars.js\ntype: application/javascript\nmodule-type: widget\n\nThis widget allows multiple variables to be set in one go:\n\n```\n\\define helloworld() Hello world!\n<$vars greeting=\"Hi\" me={{!!title}} sentence=<<helloworld>>>\n  <<greeting>>! I am <<me>> and I say: <<sentence>>\n</$vars>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar VarsWidget = function(parseTreeNode,options) {\n\t// Call the constructor\n\tWidget.call(this);\n\t// Initialise\t\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nVarsWidget.prototype = Object.create(Widget.prototype);\n\n/*\nRender this widget into the DOM\n*/\nVarsWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nVarsWidget.prototype.execute = function() {\n\t// Parse variables\n\tvar self = this;\n\t$tw.utils.each(this.attributes,function(val,key) {\n\t\tif(key.charAt(0) !== \"$\") {\n\t\t\tself.setVariable(key,val);\n\t\t}\n\t});\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nVarsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(Object.keys(changedAttributes).length) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports[\"vars\"] = VarsWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/vars.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/view.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/view.js\ntype: application/javascript\nmodule-type: widget\n\nView widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ViewWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nViewWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nViewWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tif(this.text) {\n\t\tvar textNode = this.document.createTextNode(this.text);\n\t\tparent.insertBefore(textNode,nextSibling);\n\t\tthis.domNodes.push(textNode);\n\t} else {\n\t\tthis.makeChildWidgets();\n\t\tthis.renderChildren(parent,nextSibling);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nViewWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.viewTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.viewSubtiddler = this.getAttribute(\"subtiddler\");\n\tthis.viewField = this.getAttribute(\"field\",\"text\");\n\tthis.viewIndex = this.getAttribute(\"index\");\n\tthis.viewFormat = this.getAttribute(\"format\",\"text\");\n\tthis.viewTemplate = this.getAttribute(\"template\",\"\");\n\tswitch(this.viewFormat) {\n\t\tcase \"htmlwikified\":\n\t\t\tthis.text = this.getValueAsHtmlWikified();\n\t\t\tbreak;\n\t\tcase \"plainwikified\":\n\t\t\tthis.text = this.getValueAsPlainWikified();\n\t\t\tbreak;\n\t\tcase \"htmlencodedplainwikified\":\n\t\t\tthis.text = this.getValueAsHtmlEncodedPlainWikified();\n\t\t\tbreak;\n\t\tcase \"htmlencoded\":\n\t\t\tthis.text = this.getValueAsHtmlEncoded();\n\t\t\tbreak;\n\t\tcase \"urlencoded\":\n\t\t\tthis.text = this.getValueAsUrlEncoded();\n\t\t\tbreak;\n\t\tcase \"doubleurlencoded\":\n\t\t\tthis.text = this.getValueAsDoubleUrlEncoded();\n\t\t\tbreak;\n\t\tcase \"date\":\n\t\t\tthis.text = this.getValueAsDate(this.viewTemplate);\n\t\t\tbreak;\n\t\tcase \"relativedate\":\n\t\t\tthis.text = this.getValueAsRelativeDate();\n\t\t\tbreak;\n\t\tcase \"stripcomments\":\n\t\t\tthis.text = this.getValueAsStrippedComments();\n\t\t\tbreak;\n\t\tcase \"jsencoded\":\n\t\t\tthis.text = this.getValueAsJsEncoded();\n\t\t\tbreak;\n\t\tdefault: // \"text\"\n\t\t\tthis.text = this.getValueAsText();\n\t\t\tbreak;\n\t}\n};\n\n/*\nThe various formatter functions are baked into this widget for the moment. Eventually they will be replaced by macro functions\n*/\n\n/*\nRetrieve the value of the widget. Options are:\nasString: Optionally return the value as a string\n*/\nViewWidget.prototype.getValue = function(options) {\n\toptions = options || {};\n\tvar value = options.asString ? \"\" : undefined;\n\tif(this.viewIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.viewTitle,this.viewIndex);\n\t} else {\n\t\tvar tiddler;\n\t\tif(this.viewSubtiddler) {\n\t\t\ttiddler = this.wiki.getSubTiddler(this.viewTitle,this.viewSubtiddler);\t\n\t\t} else {\n\t\t\ttiddler = this.wiki.getTiddler(this.viewTitle);\n\t\t}\n\t\tif(tiddler) {\n\t\t\tif(this.viewField === \"text\" && !this.viewSubtiddler) {\n\t\t\t\t// Calling getTiddlerText() triggers lazy loading of skinny tiddlers\n\t\t\t\tvalue = this.wiki.getTiddlerText(this.viewTitle);\n\t\t\t} else {\n\t\t\t\tif($tw.utils.hop(tiddler.fields,this.viewField)) {\n\t\t\t\t\tif(options.asString) {\n\t\t\t\t\t\tvalue = tiddler.getFieldString(this.viewField);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalue = tiddler.fields[this.viewField];\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif(this.viewField === \"title\") {\n\t\t\t\tvalue = this.viewTitle;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n\nViewWidget.prototype.getValueAsText = function() {\n\treturn this.getValue({asString: true});\n};\n\nViewWidget.prototype.getValueAsHtmlWikified = function() {\n\treturn this.wiki.renderText(\"text/html\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{parentWidget: this});\n};\n\nViewWidget.prototype.getValueAsPlainWikified = function() {\n\treturn this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{parentWidget: this});\n};\n\nViewWidget.prototype.getValueAsHtmlEncodedPlainWikified = function() {\n\treturn $tw.utils.htmlEncode(this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{parentWidget: this}));\n};\n\nViewWidget.prototype.getValueAsHtmlEncoded = function() {\n\treturn $tw.utils.htmlEncode(this.getValueAsText());\n};\n\nViewWidget.prototype.getValueAsUrlEncoded = function() {\n\treturn encodeURIComponent(this.getValueAsText());\n};\n\nViewWidget.prototype.getValueAsDoubleUrlEncoded = function() {\n\treturn encodeURIComponent(encodeURIComponent(this.getValueAsText()));\n};\n\nViewWidget.prototype.getValueAsDate = function(format) {\n\tformat = format || \"YYYY MM DD 0hh:0mm\";\n\tvar value = $tw.utils.parseDate(this.getValue());\n\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\treturn $tw.utils.formatDateString(value,format);\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\nViewWidget.prototype.getValueAsRelativeDate = function(format) {\n\tvar value = $tw.utils.parseDate(this.getValue());\n\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\treturn $tw.utils.getRelativeDate((new Date()) - (new Date(value))).description;\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\nViewWidget.prototype.getValueAsStrippedComments = function() {\n\tvar lines = this.getValueAsText().split(\"\\n\"),\n\t\tout = [];\n\tfor(var line=0; line<lines.length; line++) {\n\t\tvar text = lines[line];\n\t\tif(!/^\\s*\\/\\/#/.test(text)) {\n\t\t\tout.push(text);\n\t\t}\n\t}\n\treturn out.join(\"\\n\");\n};\n\nViewWidget.prototype.getValueAsJsEncoded = function() {\n\treturn $tw.utils.stringify(this.getValueAsText());\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nViewWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.template || changedAttributes.format || changedTiddlers[this.viewTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.view = ViewWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/view.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/widget.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/widget.js\ntype: application/javascript\nmodule-type: widget\n\nWidget base class\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreate a widget object for a parse tree node\n\tparseTreeNode: reference to the parse tree node to be rendered\n\toptions: see below\nOptions include:\n\twiki: mandatory reference to wiki associated with this render tree\n\tparentWidget: optional reference to a parent renderer node for the context chain\n\tdocument: optional document object to use instead of global document\n*/\nvar Widget = function(parseTreeNode,options) {\n\tif(arguments.length > 0) {\n\t\tthis.initialise(parseTreeNode,options);\n\t}\n};\n\n/*\nInitialise widget properties. These steps are pulled out of the constructor so that we can reuse them in subclasses\n*/\nWidget.prototype.initialise = function(parseTreeNode,options) {\n\toptions = options || {};\n\t// Save widget info\n\tthis.parseTreeNode = parseTreeNode;\n\tthis.wiki = options.wiki;\n\tthis.parentWidget = options.parentWidget;\n\tthis.variablesConstructor = function() {};\n\tthis.variablesConstructor.prototype = this.parentWidget ? this.parentWidget.variables : {};\n\tthis.variables = new this.variablesConstructor();\n\tthis.document = options.document;\n\tthis.attributes = {};\n\tthis.children = [];\n\tthis.domNodes = [];\n\tthis.eventListeners = {};\n\t// Hashmap of the widget classes\n\tif(!this.widgetClasses) {\n\t\tWidget.prototype.widgetClasses = $tw.modules.applyMethods(\"widget\");\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nWidget.prototype.execute = function() {\n\tthis.makeChildWidgets();\n};\n\n/*\nSet the value of a context variable\nname: name of the variable\nvalue: value of the variable\nparams: array of {name:, default:} for each parameter\n*/\nWidget.prototype.setVariable = function(name,value,params) {\n\tthis.variables[name] = {value: value, params: params};\n};\n\n/*\nGet the prevailing value of a context variable\nname: name of variable\noptions: see below\nOptions include\nparams: array of {name:, value:} for each parameter\ndefaultValue: default value if the variable is not defined\n*/\nWidget.prototype.getVariable = function(name,options) {\n\toptions = options || {};\n\tvar actualParams = options.params || [],\n\t\tparentWidget = this.parentWidget;\n\t// Check for the variable defined in the parent widget (or an ancestor in the prototype chain)\n\tif(parentWidget && name in parentWidget.variables) {\n\t\tvar variable = parentWidget.variables[name],\n\t\t\tvalue = variable.value;\n\t\t// Substitute any parameters specified in the definition\n\t\tvalue = this.substituteVariableParameters(value,variable.params,actualParams);\n\t\tvalue = this.substituteVariableReferences(value);\n\t\treturn value;\n\t}\n\t// If the variable doesn't exist in the parent widget then look for a macro module\n\treturn this.evaluateMacroModule(name,actualParams,options.defaultValue);\n};\n\nWidget.prototype.substituteVariableParameters = function(text,formalParams,actualParams) {\n\tif(formalParams) {\n\t\tvar nextAnonParameter = 0, // Next candidate anonymous parameter in macro call\n\t\t\tparamInfo, paramValue;\n\t\t// Step through each of the parameters in the macro definition\n\t\tfor(var p=0; p<formalParams.length; p++) {\n\t\t\t// Check if we've got a macro call parameter with the same name\n\t\t\tparamInfo = formalParams[p];\n\t\t\tparamValue = undefined;\n\t\t\tfor(var m=0; m<actualParams.length; m++) {\n\t\t\t\tif(actualParams[m].name === paramInfo.name) {\n\t\t\t\t\tparamValue = actualParams[m].value;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If not, use the next available anonymous macro call parameter\n\t\t\twhile(nextAnonParameter < actualParams.length && actualParams[nextAnonParameter].name) {\n\t\t\t\tnextAnonParameter++;\n\t\t\t}\n\t\t\tif(paramValue === undefined && nextAnonParameter < actualParams.length) {\n\t\t\t\tparamValue = actualParams[nextAnonParameter++].value;\n\t\t\t}\n\t\t\t// If we've still not got a value, use the default, if any\n\t\t\tparamValue = paramValue || paramInfo[\"default\"] || \"\";\n\t\t\t// Replace any instances of this parameter\n\t\t\ttext = $tw.utils.replaceString(text,new RegExp(\"\\\\$\" + $tw.utils.escapeRegExp(paramInfo.name) + \"\\\\$\",\"mg\"),paramValue);\n\t\t}\n\t}\n\treturn text;\n};\n\nWidget.prototype.substituteVariableReferences = function(text) {\n\tvar self = this;\n\treturn (text || \"\").replace(/\\$\\(([^\\)\\$]+)\\)\\$/g,function(match,p1,offset,string) {\n\t\treturn self.getVariable(p1,{defaultValue: \"\"});\n\t});\n};\n\nWidget.prototype.evaluateMacroModule = function(name,actualParams,defaultValue) {\n\tif($tw.utils.hop($tw.macros,name)) {\n\t\tvar macro = $tw.macros[name],\n\t\t\targs = [];\n\t\tif(macro.params.length > 0) {\n\t\t\tvar nextAnonParameter = 0, // Next candidate anonymous parameter in macro call\n\t\t\t\tparamInfo, paramValue;\n\t\t\t// Step through each of the parameters in the macro definition\n\t\t\tfor(var p=0; p<macro.params.length; p++) {\n\t\t\t\t// Check if we've got a macro call parameter with the same name\n\t\t\t\tparamInfo = macro.params[p];\n\t\t\t\tparamValue = undefined;\n\t\t\t\tfor(var m=0; m<actualParams.length; m++) {\n\t\t\t\t\tif(actualParams[m].name === paramInfo.name) {\n\t\t\t\t\t\tparamValue = actualParams[m].value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// If not, use the next available anonymous macro call parameter\n\t\t\t\twhile(nextAnonParameter < actualParams.length && actualParams[nextAnonParameter].name) {\n\t\t\t\t\tnextAnonParameter++;\n\t\t\t\t}\n\t\t\t\tif(paramValue === undefined && nextAnonParameter < actualParams.length) {\n\t\t\t\t\tparamValue = actualParams[nextAnonParameter++].value;\n\t\t\t\t}\n\t\t\t\t// If we've still not got a value, use the default, if any\n\t\t\t\tparamValue = paramValue || paramInfo[\"default\"] || \"\";\n\t\t\t\t// Save the parameter\n\t\t\t\targs.push(paramValue);\n\t\t\t}\n\t\t}\n\t\telse for(var i=0; i<actualParams.length; ++i) {\n\t\t\targs.push(actualParams[i].value);\n\t\t}\n\t\treturn (macro.run.apply(this,args) || \"\").toString();\n\t} else {\n\t\treturn defaultValue;\n\t}\n};\n\n/*\nCheck whether a given context variable value exists in the parent chain\n*/\nWidget.prototype.hasVariable = function(name,value) {\n\tvar node = this;\n\twhile(node) {\n\t\tif($tw.utils.hop(node.variables,name) && node.variables[name].value === value) {\n\t\t\treturn true;\n\t\t}\n\t\tnode = node.parentWidget;\n\t}\n\treturn false;\n};\n\n/*\nConstruct a qualifying string based on a hash of concatenating the values of a given variable in the parent chain\n*/\nWidget.prototype.getStateQualifier = function(name) {\n\tthis.qualifiers = this.qualifiers || Object.create(null);\n\tname = name || \"transclusion\";\n\tif(this.qualifiers[name]) {\n\t\treturn this.qualifiers[name];\n\t} else {\n\t\tvar output = [],\n\t\t\tnode = this;\n\t\twhile(node && node.parentWidget) {\n\t\t\tif($tw.utils.hop(node.parentWidget.variables,name)) {\n\t\t\t\toutput.push(node.getVariable(name));\n\t\t\t}\n\t\t\tnode = node.parentWidget;\n\t\t}\n\t\tvar value = $tw.utils.hashString(output.join(\"\"));\n\t\tthis.qualifiers[name] = value;\n\t\treturn value;\n\t}\n};\n\n/*\nCompute the current values of the attributes of the widget. Returns a hashmap of the names of the attributes that have changed\n*/\nWidget.prototype.computeAttributes = function() {\n\tvar changedAttributes = {},\n\t\tself = this,\n\t\tvalue;\n\t$tw.utils.each(this.parseTreeNode.attributes,function(attribute,name) {\n\t\tif(attribute.type === \"filtered\") {\n\t\t\tvalue = self.wiki.filterTiddlers(attribute.filter,self)[0] || \"\";\n\t\t} else if(attribute.type === \"indirect\") {\n\t\t\tvalue = self.wiki.getTextReference(attribute.textReference,\"\",self.getVariable(\"currentTiddler\"));\n\t\t} else if(attribute.type === \"macro\") {\n\t\t\tvalue = self.getVariable(attribute.value.name,{params: attribute.value.params});\n\t\t} else { // String attribute\n\t\t\tvalue = attribute.value;\n\t\t}\n\t\t// Check whether the attribute has changed\n\t\tif(self.attributes[name] !== value) {\n\t\t\tself.attributes[name] = value;\n\t\t\tchangedAttributes[name] = true;\n\t\t}\n\t});\n\treturn changedAttributes;\n};\n\n/*\nCheck for the presence of an attribute\n*/\nWidget.prototype.hasAttribute = function(name) {\n\treturn $tw.utils.hop(this.attributes,name);\n};\n\n/*\nGet the value of an attribute\n*/\nWidget.prototype.getAttribute = function(name,defaultText) {\n\tif($tw.utils.hop(this.attributes,name)) {\n\t\treturn this.attributes[name];\n\t} else {\n\t\treturn defaultText;\n\t}\n};\n\n/*\nAssign the computed attributes of the widget to a domNode\noptions include:\nexcludeEventAttributes: ignores attributes whose name begins with \"on\"\n*/\nWidget.prototype.assignAttributes = function(domNode,options) {\n\toptions = options || {};\n\tvar self = this;\n\t$tw.utils.each(this.attributes,function(v,a) {\n\t\t// Check exclusions\n\t\tif(options.excludeEventAttributes && a.substr(0,2) === \"on\") {\n\t\t\tv = undefined;\n\t\t}\n\t\tif(v !== undefined) {\n\t\t\tvar b = a.split(\":\");\n\t\t\t// Setting certain attributes can cause a DOM error (eg xmlns on the svg element)\n\t\t\ttry {\n\t\t\t\tif (b.length == 2 && b[0] == \"xlink\"){\n\t\t\t\t\tdomNode.setAttributeNS(\"http://www.w3.org/1999/xlink\",b[1],v);\n\t\t\t\t} else {\n\t\t\t\t\tdomNode.setAttributeNS(null,a,v);\n\t\t\t\t}\n\t\t\t} catch(e) {\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nMake child widgets correspondng to specified parseTreeNodes\n*/\nWidget.prototype.makeChildWidgets = function(parseTreeNodes) {\n\tthis.children = [];\n\tvar self = this;\n\t$tw.utils.each(parseTreeNodes || (this.parseTreeNode && this.parseTreeNode.children),function(childNode) {\n\t\tself.children.push(self.makeChildWidget(childNode));\n\t});\n};\n\n/*\nConstruct the widget object for a parse tree node\n*/\nWidget.prototype.makeChildWidget = function(parseTreeNode) {\n\tvar WidgetClass = this.widgetClasses[parseTreeNode.type];\n\tif(!WidgetClass) {\n\t\tWidgetClass = this.widgetClasses.text;\n\t\tparseTreeNode = {type: \"text\", text: \"Undefined widget '\" + parseTreeNode.type + \"'\"};\n\t}\n\treturn new WidgetClass(parseTreeNode,{\n\t\twiki: this.wiki,\n\t\tvariables: {},\n\t\tparentWidget: this,\n\t\tdocument: this.document\n\t});\n};\n\n/*\nGet the next sibling of this widget\n*/\nWidget.prototype.nextSibling = function() {\n\tif(this.parentWidget) {\n\t\tvar index = this.parentWidget.children.indexOf(this);\n\t\tif(index !== -1 && index < this.parentWidget.children.length-1) {\n\t\t\treturn this.parentWidget.children[index+1];\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nGet the previous sibling of this widget\n*/\nWidget.prototype.previousSibling = function() {\n\tif(this.parentWidget) {\n\t\tvar index = this.parentWidget.children.indexOf(this);\n\t\tif(index !== -1 && index > 0) {\n\t\t\treturn this.parentWidget.children[index-1];\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRender the children of this widget into the DOM\n*/\nWidget.prototype.renderChildren = function(parent,nextSibling) {\n\t$tw.utils.each(this.children,function(childWidget) {\n\t\tchildWidget.render(parent,nextSibling);\n\t});\n};\n\n/*\nAdd a list of event listeners from an array [{type:,handler:},...]\n*/\nWidget.prototype.addEventListeners = function(listeners) {\n\tvar self = this;\n\t$tw.utils.each(listeners,function(listenerInfo) {\n\t\tself.addEventListener(listenerInfo.type,listenerInfo.handler);\n\t});\n};\n\n/*\nAdd an event listener\n*/\nWidget.prototype.addEventListener = function(type,handler) {\n\tvar self = this;\n\tif(typeof handler === \"string\") { // The handler is a method name on this widget\n\t\tthis.eventListeners[type] = function(event) {\n\t\t\treturn self[handler].call(self,event);\n\t\t};\n\t} else { // The handler is a function\n\t\tthis.eventListeners[type] = function(event) {\n\t\t\treturn handler.call(self,event);\n\t\t};\n\t}\n};\n\n/*\nDispatch an event to a widget. If the widget doesn't handle the event then it is also dispatched to the parent widget\n*/\nWidget.prototype.dispatchEvent = function(event) {\n\t// Dispatch the event if this widget handles it\n\tvar listener = this.eventListeners[event.type];\n\tif(listener) {\n\t\t// Don't propagate the event if the listener returned false\n\t\tif(!listener(event)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t// Dispatch the event to the parent widget\n\tif(this.parentWidget) {\n\t\treturn this.parentWidget.dispatchEvent(event);\n\t}\n\treturn true;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nRebuild a previously rendered widget\n*/\nWidget.prototype.refreshSelf = function() {\n\tvar nextSibling = this.findNextSiblingDomNode();\n\tthis.removeChildDomNodes();\n\tthis.render(this.parentDomNode,nextSibling);\n};\n\n/*\nRefresh all the children of a widget\n*/\nWidget.prototype.refreshChildren = function(changedTiddlers) {\n\tvar self = this,\n\t\trefreshed = false;\n\t$tw.utils.each(this.children,function(childWidget) {\n\t\trefreshed = childWidget.refresh(changedTiddlers) || refreshed;\n\t});\n\treturn refreshed;\n};\n\n/*\nFind the next sibling in the DOM to this widget. This is done by scanning the widget tree through all next siblings and their descendents that share the same parent DOM node\n*/\nWidget.prototype.findNextSiblingDomNode = function(startIndex) {\n\t// Refer to this widget by its index within its parents children\n\tvar parent = this.parentWidget,\n\t\tindex = startIndex !== undefined ? startIndex : parent.children.indexOf(this);\nif(index === -1) {\n\tthrow \"node not found in parents children\";\n}\n\t// Look for a DOM node in the later siblings\n\twhile(++index < parent.children.length) {\n\t\tvar domNode = parent.children[index].findFirstDomNode();\n\t\tif(domNode) {\n\t\t\treturn domNode;\n\t\t}\n\t}\n\t// Go back and look for later siblings of our parent if it has the same parent dom node\n\tvar grandParent = parent.parentWidget;\n\tif(grandParent && parent.parentDomNode === this.parentDomNode) {\n\t\tindex = grandParent.children.indexOf(parent);\n\t\tif(index !== -1) {\n\t\t\treturn parent.findNextSiblingDomNode(index);\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nFind the first DOM node generated by a widget or its children\n*/\nWidget.prototype.findFirstDomNode = function() {\n\t// Return the first dom node of this widget, if we've got one\n\tif(this.domNodes.length > 0) {\n\t\treturn this.domNodes[0];\n\t}\n\t// Otherwise, recursively call our children\n\tfor(var t=0; t<this.children.length; t++) {\n\t\tvar domNode = this.children[t].findFirstDomNode();\n\t\tif(domNode) {\n\t\t\treturn domNode;\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRemove any DOM nodes created by this widget or its children\n*/\nWidget.prototype.removeChildDomNodes = function() {\n\t// If this widget has directly created DOM nodes, delete them and exit. This assumes that any child widgets are contained within the created DOM nodes, which would normally be the case\n\tif(this.domNodes.length > 0) {\n\t\t$tw.utils.each(this.domNodes,function(domNode) {\n\t\t\tdomNode.parentNode.removeChild(domNode);\n\t\t});\n\t\tthis.domNodes = [];\n\t} else {\n\t\t// Otherwise, ask the child widgets to delete their DOM nodes\n\t\t$tw.utils.each(this.children,function(childWidget) {\n\t\t\tchildWidget.removeChildDomNodes();\n\t\t});\n\t}\n};\n\n/*\nInvoke the action widgets that are descendents of the current widget.\n*/\nWidget.prototype.invokeActions = function(triggeringWidget,event) {\n\tvar handled = false;\n\t// For each child widget\n\tfor(var t=0; t<this.children.length; t++) {\n\t\tvar child = this.children[t];\n\t\t// Invoke the child if it is an action widget\n\t\tif(child.invokeAction) {\n\t\t\tchild.refreshSelf();\n\t\t\tif(child.invokeAction(triggeringWidget,event)) {\n\t\t\t\thandled = true;\n\t\t\t}\n\t\t}\n\t\t// Propagate through through the child if it permits it\n\t\tif(child.allowActionPropagation() && child.invokeActions(triggeringWidget,event)) {\n\t\t\thandled = true;\n\t\t}\n\t}\n\treturn handled;\n};\n\n/*\nInvoke the action widgets defined in a string\n*/\nWidget.prototype.invokeActionString = function(actions,triggeringWidget,event,variables) {\n\tactions = actions || \"\";\n\tvar parser = this.wiki.parseText(\"text/vnd.tiddlywiki\",actions,{\n\t\t\tparentWidget: this,\n\t\t\tdocument: this.document\n\t\t}),\n\t\twidgetNode = this.wiki.makeWidget(parser,{\n\t\t\tparentWidget: this,\n\t\t\tdocument: this.document,\n\t\t\tvariables: variables\n\t\t});\n\tvar container = this.document.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn widgetNode.invokeActions(this,event);\n};\n\nWidget.prototype.allowActionPropagation = function() {\n\treturn true;\n};\n\nexports.widget = Widget;\n\n})();\n",
            "title": "$:/core/modules/widgets/widget.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/wikify.js": {
            "text": "/*\\\ntitle: $:/core/modules/widgets/wikify.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to wikify text into a variable\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar WikifyWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nWikifyWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nWikifyWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nWikifyWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.wikifyName = this.getAttribute(\"name\");\n\tthis.wikifyText = this.getAttribute(\"text\");\n\tthis.wikifyType = this.getAttribute(\"type\");\n\tthis.wikifyMode = this.getAttribute(\"mode\",\"block\");\n\tthis.wikifyOutput = this.getAttribute(\"output\",\"text\");\n\t// Create the parse tree\n\tthis.wikifyParser = this.wiki.parseText(this.wikifyType,this.wikifyText,{\n\t\t\tparseAsInline: this.wikifyMode === \"inline\"\n\t\t});\n\t// Create the widget tree \n\tthis.wikifyWidgetNode = this.wiki.makeWidget(this.wikifyParser,{\n\t\t\tdocument: $tw.fakeDocument,\n\t\t\tparentWidget: this\n\t\t});\n\t// Render the widget tree to the container\n\tthis.wikifyContainer = $tw.fakeDocument.createElement(\"div\");\n\tthis.wikifyWidgetNode.render(this.wikifyContainer,null);\n\tthis.wikifyResult = this.getResult();\n\t// Set context variable\n\tthis.setVariable(this.wikifyName,this.wikifyResult);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nReturn the result string\n*/\nWikifyWidget.prototype.getResult = function() {\n\tvar result;\n\tswitch(this.wikifyOutput) {\n\t\tcase \"text\":\n\t\t\tresult = this.wikifyContainer.textContent;\n\t\t\tbreak;\n\t\tcase \"formattedtext\":\n\t\t\tresult = this.wikifyContainer.formattedTextContent;\n\t\t\tbreak;\n\t\tcase \"html\":\n\t\t\tresult = this.wikifyContainer.innerHTML;\n\t\t\tbreak;\n\t\tcase \"parsetree\":\n\t\t\tresult = JSON.stringify(this.wikifyParser.tree,0,$tw.config.preferences.jsonSpaces);\n\t\t\tbreak;\n\t\tcase \"widgettree\":\n\t\t\tresult = JSON.stringify(this.getWidgetTree(),0,$tw.config.preferences.jsonSpaces);\n\t\t\tbreak;\n\t}\n\treturn result;\n};\n\n/*\nReturn a string of the widget tree\n*/\nWikifyWidget.prototype.getWidgetTree = function() {\n\tvar copyNode = function(widgetNode,resultNode) {\n\t\t\tvar type = widgetNode.parseTreeNode.type;\n\t\t\tresultNode.type = type;\n\t\t\tswitch(type) {\n\t\t\t\tcase \"element\":\n\t\t\t\t\tresultNode.tag = widgetNode.parseTreeNode.tag;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"text\":\n\t\t\t\t\tresultNode.text = widgetNode.parseTreeNode.text;\n\t\t\t\t\tbreak;\t\n\t\t\t}\n\t\t\tif(Object.keys(widgetNode.attributes || {}).length > 0) {\n\t\t\t\tresultNode.attributes = {};\n\t\t\t\t$tw.utils.each(widgetNode.attributes,function(attr,attrName) {\n\t\t\t\t\tresultNode.attributes[attrName] = widgetNode.getAttribute(attrName);\n\t\t\t\t});\n\t\t\t}\n\t\t\tif(Object.keys(widgetNode.children || {}).length > 0) {\n\t\t\t\tresultNode.children = [];\n\t\t\t\t$tw.utils.each(widgetNode.children,function(widgetChildNode) {\n\t\t\t\t\tvar node = {};\n\t\t\t\t\tresultNode.children.push(node);\n\t\t\t\t\tcopyNode(widgetChildNode,node);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tresults = {};\n\tcopyNode(this.wikifyWidgetNode,results);\n\treturn results;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nWikifyWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// Refresh ourselves entirely if any of our attributes have changed\n\tif(changedAttributes.name || changedAttributes.text || changedAttributes.type || changedAttributes.mode || changedAttributes.output) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\t// Refresh the widget tree\n\t\tif(this.wikifyWidgetNode.refresh(changedTiddlers)) {\n\t\t\t// Check if there was any change\n\t\t\tvar result = this.getResult();\n\t\t\tif(result !== this.wikifyResult) {\n\t\t\t\t// If so, save the change\n\t\t\t\tthis.wikifyResult = result;\n\t\t\t\tthis.setVariable(this.wikifyName,this.wikifyResult);\n\t\t\t\t// Refresh each of our child widgets\n\t\t\t\t$tw.utils.each(this.children,function(childWidget) {\n\t\t\t\t\tchildWidget.refreshSelf();\n\t\t\t\t});\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t// Just refresh the children\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.wikify = WikifyWidget;\n\n})();\n",
            "title": "$:/core/modules/widgets/wikify.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/wiki-bulkops.js": {
            "text": "/*\\\ntitle: $:/core/modules/wiki-bulkops.js\ntype: application/javascript\nmodule-type: wikimethod\n\nBulk tiddler operations such as rename.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRename a tiddler, and relink any tags or lists that reference it.\n*/\nfunction renameTiddler(fromTitle,toTitle,options) {\n\tfromTitle = (fromTitle || \"\").trim();\n\ttoTitle = (toTitle || \"\").trim();\n\toptions = options || {};\n\tif(fromTitle && toTitle && fromTitle !== toTitle) {\n\t\t// Rename the tiddler itself\n\t\tvar oldTiddler = this.getTiddler(fromTitle),\n\t\t\tnewTiddler = new $tw.Tiddler(oldTiddler,{title: toTitle},this.getModificationFields());\n\t\tnewTiddler = $tw.hooks.invokeHook(\"th-renaming-tiddler\",newTiddler,oldTiddler);\n\t\tthis.addTiddler(newTiddler);\n\t\tthis.deleteTiddler(fromTitle);\n\t\t// Rename any tags or lists that reference it\n\t\tthis.relinkTiddler(fromTitle,toTitle,options)\n\t}\n}\n\n/*\nRelink any tags or lists that reference a given tiddler\n*/\nfunction relinkTiddler(fromTitle,toTitle,options) {\n\tvar self = this;\n\tfromTitle = (fromTitle || \"\").trim();\n\ttoTitle = (toTitle || \"\").trim();\n\toptions = options || {};\n\tif(fromTitle && toTitle && fromTitle !== toTitle) {\n\t\tthis.each(function(tiddler,title) {\n\t\t\tvar type = tiddler.fields.type || \"\";\n\t\t\t// Don't touch plugins or JavaScript modules\n\t\t\tif(!tiddler.fields[\"plugin-type\"] && type !== \"application/javascript\") {\n\t\t\t\tvar tags = (tiddler.fields.tags || []).slice(0),\n\t\t\t\t\tlist = (tiddler.fields.list || []).slice(0),\n\t\t\t\t\tisModified = false;\n\t\t\t\tif(!options.dontRenameInTags) {\n\t\t\t\t\t// Rename tags\n\t\t\t\t\t$tw.utils.each(tags,function (title,index) {\n\t\t\t\t\t\tif(title === fromTitle) {\nconsole.log(\"Renaming tag '\" + tags[index] + \"' to '\" + toTitle + \"' of tiddler '\" + tiddler.fields.title + \"'\");\n\t\t\t\t\t\t\ttags[index] = toTitle;\n\t\t\t\t\t\t\tisModified = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif(!options.dontRenameInLists) {\n\t\t\t\t\t// Rename lists\n\t\t\t\t\t$tw.utils.each(list,function (title,index) {\n\t\t\t\t\t\tif(title === fromTitle) {\nconsole.log(\"Renaming list item '\" + list[index] + \"' to '\" + toTitle + \"' of tiddler '\" + tiddler.fields.title + \"'\");\n\t\t\t\t\t\t\tlist[index] = toTitle;\n\t\t\t\t\t\t\tisModified = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif(isModified) {\n\t\t\t\t\tvar newTiddler = new $tw.Tiddler(tiddler,{tags: tags, list: list},self.getModificationFields())\n\t\t\t\t\tnewTiddler = $tw.hooks.invokeHook(\"th-relinking-tiddler\",newTiddler,tiddler);\n\t\t\t\t\tself.addTiddler(newTiddler);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\nexports.renameTiddler = renameTiddler;\nexports.relinkTiddler = relinkTiddler;\n\n})();\n",
            "title": "$:/core/modules/wiki-bulkops.js",
            "type": "application/javascript",
            "module-type": "wikimethod"
        },
        "$:/core/modules/wiki.js": {
            "text": "/*\\\ntitle: $:/core/modules/wiki.js\ntype: application/javascript\nmodule-type: wikimethod\n\nExtension methods for the $tw.Wiki object\n\nAdds the following properties to the wiki object:\n\n* `eventListeners` is a hashmap by type of arrays of listener functions\n* `changedTiddlers` is a hashmap describing changes to named tiddlers since wiki change events were last dispatched. Each entry is a hashmap containing two fields:\n\tmodified: true/false\n\tdeleted: true/false\n* `changeCount` is a hashmap by tiddler title containing a numerical index that starts at zero and is incremented each time a tiddler is created changed or deleted\n* `caches` is a hashmap by tiddler title containing a further hashmap of named cache objects. Caches are automatically cleared when a tiddler is modified or deleted\n* `globalCache` is a hashmap by cache name of cache objects that are cleared whenever any tiddler change occurs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nvar USER_NAME_TITLE = \"$:/status/UserName\",\n\tTIMESTAMP_DISABLE_TITLE = \"$:/config/TimestampDisable\";\n\n/*\nGet the value of a text reference. Text references can have any of these forms:\n\t<tiddlertitle>\n\t<tiddlertitle>!!<fieldname>\n\t!!<fieldname> - specifies a field of the current tiddlers\n\t<tiddlertitle>##<index>\n*/\nexports.getTextReference = function(textRef,defaultText,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle = tr.title || currTiddlerTitle;\n\tif(tr.field) {\n\t\tvar tiddler = this.getTiddler(title);\n\t\tif(tr.field === \"title\") { // Special case so we can return the title of a non-existent tiddler\n\t\t\treturn title;\n\t\t} else if(tiddler && $tw.utils.hop(tiddler.fields,tr.field)) {\n\t\t\treturn tiddler.getFieldString(tr.field);\n\t\t} else {\n\t\t\treturn defaultText;\n\t\t}\n\t} else if(tr.index) {\n\t\treturn this.extractTiddlerDataItem(title,tr.index,defaultText);\n\t} else {\n\t\treturn this.getTiddlerText(title,defaultText);\n\t}\n};\n\nexports.setTextReference = function(textRef,value,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle = tr.title || currTiddlerTitle;\n\tthis.setText(title,tr.field,tr.index,value);\n};\n\nexports.setText = function(title,field,index,value,options) {\n\toptions = options || {};\n\tvar creationFields = options.suppressTimestamp ? {} : this.getCreationFields(),\n\t\tmodificationFields = options.suppressTimestamp ? {} : this.getModificationFields();\n\t// Check if it is a reference to a tiddler field\n\tif(index) {\n\t\tvar data = this.getTiddlerData(title,Object.create(null));\n\t\tif(value !== undefined) {\n\t\t\tdata[index] = value;\n\t\t} else {\n\t\t\tdelete data[index];\n\t\t}\n\t\tthis.setTiddlerData(title,data,modificationFields);\n\t} else {\n\t\tvar tiddler = this.getTiddler(title),\n\t\t\tfields = {title: title};\n\t\tfields[field || \"text\"] = value;\n\t\tthis.addTiddler(new $tw.Tiddler(creationFields,tiddler,fields,modificationFields));\n\t}\n};\n\nexports.deleteTextReference = function(textRef,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle,tiddler,fields;\n\t// Check if it is a reference to a tiddler\n\tif(tr.title && !tr.field) {\n\t\tthis.deleteTiddler(tr.title);\n\t// Else check for a field reference\n\t} else if(tr.field) {\n\t\ttitle = tr.title || currTiddlerTitle;\n\t\ttiddler = this.getTiddler(title);\n\t\tif(tiddler && $tw.utils.hop(tiddler.fields,tr.field)) {\n\t\t\tfields = Object.create(null);\n\t\t\tfields[tr.field] = undefined;\n\t\t\tthis.addTiddler(new $tw.Tiddler(tiddler,fields,this.getModificationFields()));\n\t\t}\n\t}\n};\n\nexports.addEventListener = function(type,listener) {\n\tthis.eventListeners = this.eventListeners || {};\n\tthis.eventListeners[type] = this.eventListeners[type]  || [];\n\tthis.eventListeners[type].push(listener);\t\n};\n\nexports.removeEventListener = function(type,listener) {\n\tvar listeners = this.eventListeners[type];\n\tif(listeners) {\n\t\tvar p = listeners.indexOf(listener);\n\t\tif(p !== -1) {\n\t\t\tlisteners.splice(p,1);\n\t\t}\n\t}\n};\n\nexports.dispatchEvent = function(type /*, args */) {\n\tvar args = Array.prototype.slice.call(arguments,1),\n\t\tlisteners = this.eventListeners[type];\n\tif(listeners) {\n\t\tfor(var p=0; p<listeners.length; p++) {\n\t\t\tvar listener = listeners[p];\n\t\t\tlistener.apply(listener,args);\n\t\t}\n\t}\n};\n\n/*\nCauses a tiddler to be marked as changed, incrementing the change count, and triggers event handlers.\nThis method should be called after the changes it describes have been made to the wiki.tiddlers[] array.\n\ttitle: Title of tiddler\n\tisDeleted: defaults to false (meaning the tiddler has been created or modified),\n\t\ttrue if the tiddler has been deleted\n*/\nexports.enqueueTiddlerEvent = function(title,isDeleted) {\n\t// Record the touch in the list of changed tiddlers\n\tthis.changedTiddlers = this.changedTiddlers || Object.create(null);\n\tthis.changedTiddlers[title] = this.changedTiddlers[title] || Object.create(null);\n\tthis.changedTiddlers[title][isDeleted ? \"deleted\" : \"modified\"] = true;\n\t// Increment the change count\n\tthis.changeCount = this.changeCount || Object.create(null);\n\tif($tw.utils.hop(this.changeCount,title)) {\n\t\tthis.changeCount[title]++;\n\t} else {\n\t\tthis.changeCount[title] = 1;\n\t}\n\t// Trigger events\n\tthis.eventListeners = this.eventListeners || {};\n\tif(!this.eventsTriggered) {\n\t\tvar self = this;\n\t\t$tw.utils.nextTick(function() {\n\t\t\tvar changes = self.changedTiddlers;\n\t\t\tself.changedTiddlers = Object.create(null);\n\t\t\tself.eventsTriggered = false;\n\t\t\tif($tw.utils.count(changes) > 0) {\n\t\t\t\tself.dispatchEvent(\"change\",changes);\n\t\t\t}\n\t\t});\n\t\tthis.eventsTriggered = true;\n\t}\n};\n\nexports.getSizeOfTiddlerEventQueue = function() {\n\treturn $tw.utils.count(this.changedTiddlers);\n};\n\nexports.clearTiddlerEventQueue = function() {\n\tthis.changedTiddlers = Object.create(null);\n\tthis.changeCount = Object.create(null);\n};\n\nexports.getChangeCount = function(title) {\n\tthis.changeCount = this.changeCount || Object.create(null);\n\tif($tw.utils.hop(this.changeCount,title)) {\n\t\treturn this.changeCount[title];\n\t} else {\n\t\treturn 0;\n\t}\n};\n\n/*\nGenerate an unused title from the specified base\n*/\nexports.generateNewTitle = function(baseTitle,options) {\n\toptions = options || {};\n\tvar c = 0,\n\t\ttitle = baseTitle;\n\twhile(this.tiddlerExists(title) || this.isShadowTiddler(title) || this.findDraft(title)) {\n\t\ttitle = baseTitle + \n\t\t\t(options.prefix || \" \") + \n\t\t\t(++c);\n\t}\n\treturn title;\n};\n\nexports.isSystemTiddler = function(title) {\n\treturn title && title.indexOf(\"$:/\") === 0;\n};\n\nexports.isTemporaryTiddler = function(title) {\n\treturn title && title.indexOf(\"$:/temp/\") === 0;\n};\n\nexports.isImageTiddler = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\t\t\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/vnd.tiddlywiki\"];\n\t\treturn !!contentTypeInfo && contentTypeInfo.flags.indexOf(\"image\") !== -1;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLike addTiddler() except it will silently reject any plugin tiddlers that are older than the currently loaded version. Returns true if the tiddler was imported\n*/\nexports.importTiddler = function(tiddler) {\n\tvar existingTiddler = this.getTiddler(tiddler.fields.title);\n\t// Check if we're dealing with a plugin\n\tif(tiddler && tiddler.hasField(\"plugin-type\") && tiddler.hasField(\"version\") && existingTiddler && existingTiddler.hasField(\"plugin-type\") && existingTiddler.hasField(\"version\")) {\n\t\t// Reject the incoming plugin if it is older\n\t\tif(!$tw.utils.checkVersions(tiddler.fields.version,existingTiddler.fields.version)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t// Fall through to adding the tiddler\n\tthis.addTiddler(tiddler);\n\treturn true;\n};\n\n/*\nReturn a hashmap of the fields that should be set when a tiddler is created\n*/\nexports.getCreationFields = function() {\n\tif(this.getTiddlerText(TIMESTAMP_DISABLE_TITLE,\"\").toLowerCase() !== \"yes\") {\n\t\tvar fields = {\n\t\t\t\tcreated: new Date()\n\t\t\t},\n\t\t\tcreator = this.getTiddlerText(USER_NAME_TITLE);\n\t\tif(creator) {\n\t\t\tfields.creator = creator;\n\t\t}\n\t\treturn fields;\n\t} else {\n\t\treturn {};\n\t}\n};\n\n/*\nReturn a hashmap of the fields that should be set when a tiddler is modified\n*/\nexports.getModificationFields = function() {\n\tif(this.getTiddlerText(TIMESTAMP_DISABLE_TITLE,\"\").toLowerCase() !== \"yes\") {\n\t\tvar fields = Object.create(null),\n\t\t\tmodifier = this.getTiddlerText(USER_NAME_TITLE);\n\t\tfields.modified = new Date();\n\t\tif(modifier) {\n\t\t\tfields.modifier = modifier;\n\t\t}\n\t\treturn fields;\n\t} else {\n\t\treturn {};\n\t}\n};\n\n/*\nReturn a sorted array of tiddler titles.  Options include:\nsortField: field to sort by\nexcludeTag: tag to exclude\nincludeSystem: whether to include system tiddlers (defaults to false)\n*/\nexports.getTiddlers = function(options) {\n\toptions = options || Object.create(null);\n\tvar self = this,\n\t\tsortField = options.sortField || \"title\",\n\t\ttiddlers = [], t, titles = [];\n\tthis.each(function(tiddler,title) {\n\t\tif(options.includeSystem || !self.isSystemTiddler(title)) {\n\t\t\tif(!options.excludeTag || !tiddler.hasTag(options.excludeTag)) {\n\t\t\t\ttiddlers.push(tiddler);\n\t\t\t}\n\t\t}\n\t});\n\ttiddlers.sort(function(a,b) {\n\t\tvar aa = a.fields[sortField].toLowerCase() || \"\",\n\t\t\tbb = b.fields[sortField].toLowerCase() || \"\";\n\t\tif(aa < bb) {\n\t\t\treturn -1;\n\t\t} else {\n\t\t\tif(aa > bb) {\n\t\t\t\treturn 1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t});\n\tfor(t=0; t<tiddlers.length; t++) {\n\t\ttitles.push(tiddlers[t].fields.title);\n\t}\n\treturn titles;\n};\n\nexports.countTiddlers = function(excludeTag) {\n\tvar tiddlers = this.getTiddlers({excludeTag: excludeTag});\n\treturn $tw.utils.count(tiddlers);\n};\n\n/*\nReturns a function iterator(callback) that iterates through the specified titles, and invokes the callback with callback(tiddler,title)\n*/\nexports.makeTiddlerIterator = function(titles) {\n\tvar self = this;\n\tif(!$tw.utils.isArray(titles)) {\n\t\ttitles = Object.keys(titles);\n\t} else {\n\t\ttitles = titles.slice(0);\n\t}\n\treturn function(callback) {\n\t\ttitles.forEach(function(title) {\n\t\t\tcallback(self.getTiddler(title),title);\n\t\t});\n\t};\n};\n\n/*\nSort an array of tiddler titles by a specified field\n\ttitles: array of titles (sorted in place)\n\tsortField: name of field to sort by\n\tisDescending: true if the sort should be descending\n\tisCaseSensitive: true if the sort should consider upper and lower case letters to be different\n*/\nexports.sortTiddlers = function(titles,sortField,isDescending,isCaseSensitive,isNumeric) {\n\tvar self = this;\n\ttitles.sort(function(a,b) {\n\t\tvar x,y,\n\t\t\tcompareNumbers = function(x,y) {\n\t\t\t\tvar result = \n\t\t\t\t\tisNaN(x) && !isNaN(y) ? (isDescending ? -1 : 1) :\n\t\t\t\t\t!isNaN(x) && isNaN(y) ? (isDescending ? 1 : -1) :\n\t\t\t\t\t\t\t\t\t\t\t(isDescending ? y - x :  x - y);\n\t\t\t\treturn result;\n\t\t\t};\n\t\tif(sortField !== \"title\") {\n\t\t\tvar tiddlerA = self.getTiddler(a),\n\t\t\t\ttiddlerB = self.getTiddler(b);\n\t\t\tif(tiddlerA) {\n\t\t\t\ta = tiddlerA.fields[sortField] || \"\";\n\t\t\t} else {\n\t\t\t\ta = \"\";\n\t\t\t}\n\t\t\tif(tiddlerB) {\n\t\t\t\tb = tiddlerB.fields[sortField] || \"\";\n\t\t\t} else {\n\t\t\t\tb = \"\";\n\t\t\t}\n\t\t}\n\t\tx = Number(a);\n\t\ty = Number(b);\n\t\tif(isNumeric && (!isNaN(x) || !isNaN(y))) {\n\t\t\treturn compareNumbers(x,y);\n\t\t} else if($tw.utils.isDate(a) && $tw.utils.isDate(b)) {\n\t\t\treturn isDescending ? b - a : a - b;\n\t\t} else {\n\t\t\ta = String(a);\n\t\t\tb = String(b);\n\t\t\tif(!isCaseSensitive) {\n\t\t\t\ta = a.toLowerCase();\n\t\t\t\tb = b.toLowerCase();\n\t\t\t}\n\t\t\treturn isDescending ? b.localeCompare(a) : a.localeCompare(b);\n\t\t}\n\t});\n};\n\n/*\nFor every tiddler invoke a callback(title,tiddler) with `this` set to the wiki object. Options include:\nsortField: field to sort by\nexcludeTag: tag to exclude\nincludeSystem: whether to include system tiddlers (defaults to false)\n*/\nexports.forEachTiddler = function(/* [options,]callback */) {\n\tvar arg = 0,\n\t\toptions = arguments.length >= 2 ? arguments[arg++] : {},\n\t\tcallback = arguments[arg++],\n\t\ttitles = this.getTiddlers(options),\n\t\tt, tiddler;\n\tfor(t=0; t<titles.length; t++) {\n\t\ttiddler = this.getTiddler(titles[t]);\n\t\tif(tiddler) {\n\t\t\tcallback.call(this,tiddler.fields.title,tiddler);\n\t\t}\n\t}\n};\n\n/*\nReturn an array of tiddler titles that are directly linked from the specified tiddler\n*/\nexports.getTiddlerLinks = function(title) {\n\tvar self = this;\n\t// We'll cache the links so they only get computed if the tiddler changes\n\treturn this.getCacheForTiddler(title,\"links\",function() {\n\t\t// Parse the tiddler\n\t\tvar parser = self.parseTiddler(title);\n\t\t// Count up the links\n\t\tvar links = [],\n\t\t\tcheckParseTree = function(parseTree) {\n\t\t\t\tfor(var t=0; t<parseTree.length; t++) {\n\t\t\t\t\tvar parseTreeNode = parseTree[t];\n\t\t\t\t\tif(parseTreeNode.type === \"link\" && parseTreeNode.attributes.to && parseTreeNode.attributes.to.type === \"string\") {\n\t\t\t\t\t\tvar value = parseTreeNode.attributes.to.value;\n\t\t\t\t\t\tif(links.indexOf(value) === -1) {\n\t\t\t\t\t\t\tlinks.push(value);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif(parseTreeNode.children) {\n\t\t\t\t\t\tcheckParseTree(parseTreeNode.children);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\tif(parser) {\n\t\t\tcheckParseTree(parser.tree);\n\t\t}\n\t\treturn links;\n\t});\n};\n\n/*\nReturn an array of tiddler titles that link to the specified tiddler\n*/\nexports.getTiddlerBacklinks = function(targetTitle) {\n\tvar self = this,\n\t\tbacklinks = [];\n\tthis.forEachTiddler(function(title,tiddler) {\n\t\tvar links = self.getTiddlerLinks(title);\n\t\tif(links.indexOf(targetTitle) !== -1) {\n\t\t\tbacklinks.push(title);\n\t\t}\n\t});\n\treturn backlinks;\n};\n\n/*\nReturn a hashmap of tiddler titles that are referenced but not defined. Each value is the number of times the missing tiddler is referenced\n*/\nexports.getMissingTitles = function() {\n\tvar self = this,\n\t\tmissing = [];\n// We should cache the missing tiddler list, even if we recreate it every time any tiddler is modified\n\tthis.forEachTiddler(function(title,tiddler) {\n\t\tvar links = self.getTiddlerLinks(title);\n\t\t$tw.utils.each(links,function(link) {\n\t\t\tif((!self.tiddlerExists(link) && !self.isShadowTiddler(link)) && missing.indexOf(link) === -1) {\n\t\t\t\tmissing.push(link);\n\t\t\t}\n\t\t});\n\t});\n\treturn missing;\n};\n\nexports.getOrphanTitles = function() {\n\tvar self = this,\n\t\torphans = this.getTiddlers();\n\tthis.forEachTiddler(function(title,tiddler) {\n\t\tvar links = self.getTiddlerLinks(title);\n\t\t$tw.utils.each(links,function(link) {\n\t\t\tvar p = orphans.indexOf(link);\n\t\t\tif(p !== -1) {\n\t\t\t\torphans.splice(p,1);\n\t\t\t}\n\t\t});\n\t});\n\treturn orphans; // Todo\n};\n\n/*\nRetrieves a list of the tiddler titles that are tagged with a given tag\n*/\nexports.getTiddlersWithTag = function(tag) {\n\tvar self = this;\n\treturn this.getGlobalCache(\"taglist-\" + tag,function() {\n\t\tvar tagmap = self.getTagMap();\n\t\treturn self.sortByList(tagmap[tag],tag);\n\t});\n};\n\n/*\nGet a hashmap by tag of arrays of tiddler titles\n*/\nexports.getTagMap = function() {\n\tvar self = this;\n\treturn this.getGlobalCache(\"tagmap\",function() {\n\t\tvar tags = Object.create(null),\n\t\t\tstoreTags = function(tagArray,title) {\n\t\t\t\tif(tagArray) {\n\t\t\t\t\tfor(var index=0; index<tagArray.length; index++) {\n\t\t\t\t\t\tvar tag = tagArray[index];\n\t\t\t\t\t\tif($tw.utils.hop(tags,tag)) {\n\t\t\t\t\t\t\ttags[tag].push(title);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttags[tag] = [title];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\ttitle, tiddler;\n\t\t// Collect up all the tags\n\t\tself.eachShadow(function(tiddler,title) {\n\t\t\tif(!self.tiddlerExists(title)) {\n\t\t\t\ttiddler = self.getTiddler(title);\n\t\t\t\tstoreTags(tiddler.fields.tags,title);\n\t\t\t}\n\t\t});\n\t\tself.each(function(tiddler,title) {\n\t\t\tstoreTags(tiddler.fields.tags,title);\n\t\t});\n\t\treturn tags;\n\t});\n};\n\n/*\nLookup a given tiddler and return a list of all the tiddlers that include it in the specified list field\n*/\nexports.findListingsOfTiddler = function(targetTitle,fieldName) {\n\tfieldName = fieldName || \"list\";\n\tvar titles = [];\n\tthis.each(function(tiddler,title) {\n\t\tvar list = $tw.utils.parseStringArray(tiddler.fields[fieldName]);\n\t\tif(list && list.indexOf(targetTitle) !== -1) {\n\t\t\ttitles.push(title);\n\t\t}\n\t});\n\treturn titles;\n};\n\n/*\nSorts an array of tiddler titles according to an ordered list\n*/\nexports.sortByList = function(array,listTitle) {\n\tvar list = this.getTiddlerList(listTitle);\n\tif(!array || array.length === 0) {\n\t\treturn [];\n\t} else {\n\t\tvar titles = [], t, title;\n\t\t// First place any entries that are present in the list\n\t\tfor(t=0; t<list.length; t++) {\n\t\t\ttitle = list[t];\n\t\t\tif(array.indexOf(title) !== -1) {\n\t\t\t\ttitles.push(title);\n\t\t\t}\n\t\t}\n\t\t// Then place any remaining entries\n\t\tfor(t=0; t<array.length; t++) {\n\t\t\ttitle = array[t];\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\ttitles.push(title);\n\t\t\t}\n\t\t}\n\t\t// Finally obey the list-before and list-after fields of each tiddler in turn\n\t\tvar sortedTitles = titles.slice(0);\n\t\tfor(t=0; t<sortedTitles.length; t++) {\n\t\t\ttitle = sortedTitles[t];\n\t\t\tvar currPos = titles.indexOf(title),\n\t\t\t\tnewPos = -1,\n\t\t\t\ttiddler = this.getTiddler(title);\n\t\t\tif(tiddler) {\n\t\t\t\tvar beforeTitle = tiddler.fields[\"list-before\"],\n\t\t\t\t\tafterTitle = tiddler.fields[\"list-after\"];\n\t\t\t\tif(beforeTitle === \"\") {\n\t\t\t\t\tnewPos = 0;\n\t\t\t\t} else if(beforeTitle) {\n\t\t\t\t\tnewPos = titles.indexOf(beforeTitle);\n\t\t\t\t} else if(afterTitle) {\n\t\t\t\t\tnewPos = titles.indexOf(afterTitle);\n\t\t\t\t\tif(newPos >= 0) {\n\t\t\t\t\t\t++newPos;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(newPos === -1) {\n\t\t\t\t\tnewPos = currPos;\n\t\t\t\t}\n\t\t\t\tif(newPos !== currPos) {\n\t\t\t\t\ttitles.splice(currPos,1);\n\t\t\t\t\tif(newPos >= currPos) {\n\t\t\t\t\t\tnewPos--;\n\t\t\t\t\t}\n\t\t\t\t\ttitles.splice(newPos,0,title);\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t\treturn titles;\n\t}\n};\n\nexports.getSubTiddler = function(title,subTiddlerTitle) {\n\tvar bundleInfo = this.getPluginInfo(title) || this.getTiddlerDataCached(title);\n\tif(bundleInfo && bundleInfo.tiddlers) {\n\t\tvar subTiddler = bundleInfo.tiddlers[subTiddlerTitle];\n\t\tif(subTiddler) {\n\t\t\treturn new $tw.Tiddler(subTiddler);\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRetrieve a tiddler as a JSON string of the fields\n*/\nexports.getTiddlerAsJson = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\n\t\tvar fields = Object.create(null);\n\t\t$tw.utils.each(tiddler.fields,function(value,name) {\n\t\t\tfields[name] = tiddler.getFieldString(name);\n\t\t});\n\t\treturn JSON.stringify(fields);\n\t} else {\n\t\treturn JSON.stringify({title: title});\n\t}\n};\n\n/*\nGet the content of a tiddler as a JavaScript object. How this is done depends on the type of the tiddler:\n\napplication/json: the tiddler JSON is parsed into an object\napplication/x-tiddler-dictionary: the tiddler is parsed as sequence of name:value pairs\n\nOther types currently just return null.\n\ntitleOrTiddler: string tiddler title or a tiddler object\ndefaultData: default data to be returned if the tiddler is missing or doesn't contain data\n\nNote that the same value is returned for repeated calls for the same tiddler data. The value is frozen to prevent modification; otherwise modifications would be visible to all callers\n*/\nexports.getTiddlerDataCached = function(titleOrTiddler,defaultData) {\n\tvar self = this,\n\t\ttiddler = titleOrTiddler;\n\tif(!(tiddler instanceof $tw.Tiddler)) {\n\t\ttiddler = this.getTiddler(tiddler);\t\n\t}\n\tif(tiddler) {\n\t\treturn this.getCacheForTiddler(tiddler.fields.title,\"data\",function() {\n\t\t\t// Return the frozen value\n\t\t\tvar value = self.getTiddlerData(tiddler.fields.title,undefined);\n\t\t\t$tw.utils.deepFreeze(value);\n\t\t\treturn value;\n\t\t}) || defaultData;\n\t} else {\n\t\treturn defaultData;\n\t}\n};\n\n/*\nAlternative, uncached version of getTiddlerDataCached(). The return value can be mutated freely and reused\n*/\nexports.getTiddlerData = function(titleOrTiddler,defaultData) {\n\tvar tiddler = titleOrTiddler,\n\t\tdata;\n\tif(!(tiddler instanceof $tw.Tiddler)) {\n\t\ttiddler = this.getTiddler(tiddler);\t\n\t}\n\tif(tiddler && tiddler.fields.text) {\n\t\tswitch(tiddler.fields.type) {\n\t\t\tcase \"application/json\":\n\t\t\t\t// JSON tiddler\n\t\t\t\ttry {\n\t\t\t\t\tdata = JSON.parse(tiddler.fields.text);\n\t\t\t\t} catch(ex) {\n\t\t\t\t\treturn defaultData;\n\t\t\t\t}\n\t\t\t\treturn data;\n\t\t\tcase \"application/x-tiddler-dictionary\":\n\t\t\t\treturn $tw.utils.parseFields(tiddler.fields.text);\n\t\t}\n\t}\n\treturn defaultData;\n};\n\n/*\nExtract an indexed field from within a data tiddler\n*/\nexports.extractTiddlerDataItem = function(titleOrTiddler,index,defaultText) {\n\tvar data = this.getTiddlerDataCached(titleOrTiddler,Object.create(null)),\n\t\ttext;\n\tif(data && $tw.utils.hop(data,index)) {\n\t\ttext = data[index];\n\t}\n\tif(typeof text === \"string\" || typeof text === \"number\") {\n\t\treturn text.toString();\n\t} else {\n\t\treturn defaultText;\n\t}\n};\n\n/*\nSet a tiddlers content to a JavaScript object. Currently this is done by setting the tiddler's type to \"application/json\" and setting the text to the JSON text of the data.\ntitle: title of tiddler\ndata: object that can be serialised to JSON\nfields: optional hashmap of additional tiddler fields to be set\n*/\nexports.setTiddlerData = function(title,data,fields) {\n\tvar existingTiddler = this.getTiddler(title),\n\t\tnewFields = {\n\t\t\ttitle: title\n\t};\n\tif(existingTiddler && existingTiddler.fields.type === \"application/x-tiddler-dictionary\") {\n\t\tnewFields.text = $tw.utils.makeTiddlerDictionary(data);\n\t} else {\n\t\tnewFields.type = \"application/json\";\n\t\tnewFields.text = JSON.stringify(data,null,$tw.config.preferences.jsonSpaces);\n\t}\n\tthis.addTiddler(new $tw.Tiddler(this.getCreationFields(),existingTiddler,fields,newFields,this.getModificationFields()));\n};\n\n/*\nReturn the content of a tiddler as an array containing each line\n*/\nexports.getTiddlerList = function(title,field,index) {\n\tif(index) {\n\t\treturn $tw.utils.parseStringArray(this.extractTiddlerDataItem(title,index,\"\"));\n\t}\n\tfield = field || \"list\";\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\n\t\treturn ($tw.utils.parseStringArray(tiddler.fields[field]) || []).slice(0);\n\t}\n\treturn [];\n};\n\n// Return a named global cache object. Global cache objects are cleared whenever a tiddler change occurs\nexports.getGlobalCache = function(cacheName,initializer) {\n\tthis.globalCache = this.globalCache || Object.create(null);\n\tif($tw.utils.hop(this.globalCache,cacheName)) {\n\t\treturn this.globalCache[cacheName];\n\t} else {\n\t\tthis.globalCache[cacheName] = initializer();\n\t\treturn this.globalCache[cacheName];\n\t}\n};\n\nexports.clearGlobalCache = function() {\n\tthis.globalCache = Object.create(null);\n};\n\n// Return the named cache object for a tiddler. If the cache doesn't exist then the initializer function is invoked to create it\nexports.getCacheForTiddler = function(title,cacheName,initializer) {\n\tthis.caches = this.caches || Object.create(null);\n\tvar caches = this.caches[title];\n\tif(caches && caches[cacheName]) {\n\t\treturn caches[cacheName];\n\t} else {\n\t\tif(!caches) {\n\t\t\tcaches = Object.create(null);\n\t\t\tthis.caches[title] = caches;\n\t\t}\n\t\tcaches[cacheName] = initializer();\n\t\treturn caches[cacheName];\n\t}\n};\n\n// Clear all caches associated with a particular tiddler, or, if the title is null, clear all the caches for all the tiddlers\nexports.clearCache = function(title) {\n\tif(title) {\n\t\tthis.caches = this.caches || Object.create(null);\n\t\tif($tw.utils.hop(this.caches,title)) {\n\t\t\tdelete this.caches[title];\n\t\t}\n\t} else {\n\t\tthis.caches = Object.create(null);\n\t}\n};\n\nexports.initParsers = function(moduleType) {\n\t// Install the parser modules\n\t$tw.Wiki.parsers = {};\n\tvar self = this;\n\t$tw.modules.forEachModuleOfType(\"parser\",function(title,module) {\n\t\tfor(var f in module) {\n\t\t\tif($tw.utils.hop(module,f)) {\n\t\t\t\t$tw.Wiki.parsers[f] = module[f]; // Store the parser class\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nParse a block of text of a specified MIME type\n\ttype: content type of text to be parsed\n\ttext: text\n\toptions: see below\nOptions include:\n\tparseAsInline: if true, the text of the tiddler will be parsed as an inline run\n\t_canonical_uri: optional string of the canonical URI of this content\n*/\nexports.parseText = function(type,text,options) {\n\ttext = text || \"\";\n\toptions = options || {};\n\t// Select a parser\n\tvar Parser = $tw.Wiki.parsers[type];\n\tif(!Parser && $tw.utils.getFileExtensionInfo(type)) {\n\t\tParser = $tw.Wiki.parsers[$tw.utils.getFileExtensionInfo(type).type];\n\t}\n\tif(!Parser) {\n\t\tParser = $tw.Wiki.parsers[options.defaultType || \"text/vnd.tiddlywiki\"];\n\t}\n\tif(!Parser) {\n\t\treturn null;\n\t}\n\t// Return the parser instance\n\treturn new Parser(type,text,{\n\t\tparseAsInline: options.parseAsInline,\n\t\twiki: this,\n\t\t_canonical_uri: options._canonical_uri\n\t});\n};\n\n/*\nParse a tiddler according to its MIME type\n*/\nexports.parseTiddler = function(title,options) {\n\toptions = $tw.utils.extend({},options);\n\tvar cacheType = options.parseAsInline ? \"inlineParseTree\" : \"blockParseTree\",\n\t\ttiddler = this.getTiddler(title),\n\t\tself = this;\n\treturn tiddler ? this.getCacheForTiddler(title,cacheType,function() {\n\t\t\tif(tiddler.hasField(\"_canonical_uri\")) {\n\t\t\t\toptions._canonical_uri = tiddler.fields._canonical_uri;\n\t\t\t}\n\t\t\treturn self.parseText(tiddler.fields.type,tiddler.fields.text,options);\n\t\t}) : null;\n};\n\nexports.parseTextReference = function(title,field,index,options) {\n\tvar tiddler,text;\n\tif(options.subTiddler) {\n\t\ttiddler = this.getSubTiddler(title,options.subTiddler);\n\t} else {\n\t\ttiddler = this.getTiddler(title);\n\t\tif(field === \"text\" || (!field && !index)) {\n\t\t\tthis.getTiddlerText(title); // Force the tiddler to be lazily loaded\n\t\t\treturn this.parseTiddler(title,options);\n\t\t}\n\t}\n\tif(field === \"text\" || (!field && !index)) {\n\t\tif(tiddler && tiddler.fields) {\n\t\t\treturn this.parseText(tiddler.fields.type || \"text/vnd.tiddlywiki\",tiddler.fields.text,options);\t\t\t\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t} else if(field) {\n\t\tif(field === \"title\") {\n\t\t\ttext = title;\n\t\t} else {\n\t\t\tif(!tiddler || !tiddler.hasField(field)) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\ttext = tiddler.fields[field];\n\t\t}\n\t\treturn this.parseText(\"text/vnd.tiddlywiki\",text.toString(),options);\n\t} else if(index) {\n\t\tthis.getTiddlerText(title); // Force the tiddler to be lazily loaded\n\t\ttext = this.extractTiddlerDataItem(tiddler,index,undefined);\n\t\tif(text === undefined) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this.parseText(\"text/vnd.tiddlywiki\",text,options);\n\t}\n};\n\n/*\nMake a widget tree for a parse tree\nparser: parser object\noptions: see below\nOptions include:\ndocument: optional document to use\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.makeWidget = function(parser,options) {\n\toptions = options || {};\n\tvar widgetNode = {\n\t\t\ttype: \"widget\",\n\t\t\tchildren: []\n\t\t},\n\t\tcurrWidgetNode = widgetNode;\n\t// Create set variable widgets for each variable\n\t$tw.utils.each(options.variables,function(value,name) {\n\t\tvar setVariableWidget = {\n\t\t\ttype: \"set\",\n\t\t\tattributes: {\n\t\t\t\tname: {type: \"string\", value: name},\n\t\t\t\tvalue: {type: \"string\", value: value}\n\t\t\t},\n\t\t\tchildren: []\n\t\t};\n\t\tcurrWidgetNode.children = [setVariableWidget];\n\t\tcurrWidgetNode = setVariableWidget;\n\t});\n\t// Add in the supplied parse tree nodes\n\tcurrWidgetNode.children = parser ? parser.tree : [];\n\t// Create the widget\n\treturn new widget.widget(widgetNode,{\n\t\twiki: this,\n\t\tdocument: options.document || $tw.fakeDocument,\n\t\tparentWidget: options.parentWidget\n\t});\n};\n\n/*\nMake a widget tree for transclusion\ntitle: target tiddler title\noptions: as for wiki.makeWidget() plus:\noptions.field: optional field to transclude (defaults to \"text\")\noptions.mode: transclusion mode \"inline\" or \"block\"\noptions.children: optional array of children for the transclude widget\noptions.importVariables: optional importvariables filter string for macros to be included\noptions.importPageMacros: optional boolean; if true, equivalent to passing \"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\" to options.importVariables\n*/\nexports.makeTranscludeWidget = function(title,options) {\n\toptions = options || {};\n\tvar parseTreeDiv = {tree: [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"div\",\n\t\t\tchildren: []}]},\n\t\tparseTreeImportVariables = {\n\t\t\ttype: \"importvariables\",\n\t\t\tattributes: {\n\t\t\t\tfilter: {\n\t\t\t\t\tname: \"filter\",\n\t\t\t\t\ttype: \"string\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tisBlock: false,\n\t\t\tchildren: []},\n\t\tparseTreeTransclude = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {\n\t\t\t\t\tname: \"tiddler\",\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: title}},\n\t\t\tisBlock: !options.parseAsInline};\n\tif(options.importVariables || options.importPageMacros) {\n\t\tif(options.importVariables) {\n\t\t\tparseTreeImportVariables.attributes.filter.value = options.importVariables;\n\t\t} else if(options.importPageMacros) {\n\t\t\tparseTreeImportVariables.attributes.filter.value = \"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\";\n\t\t}\n\t\tparseTreeDiv.tree[0].children.push(parseTreeImportVariables);\n\t\tparseTreeImportVariables.children.push(parseTreeTransclude);\n\t} else {\n\t\tparseTreeDiv.tree[0].children.push(parseTreeTransclude);\n\t}\n\tif(options.field) {\n\t\tparseTreeTransclude.attributes.field = {type: \"string\", value: options.field};\n\t}\n\tif(options.mode) {\n\t\tparseTreeTransclude.attributes.mode = {type: \"string\", value: options.mode};\n\t}\n\tif(options.children) {\n\t\tparseTreeTransclude.children = options.children;\n\t}\n\treturn $tw.wiki.makeWidget(parseTreeDiv,options);\n};\n\n/*\nParse text in a specified format and render it into another format\n\toutputType: content type for the output\n\ttextType: content type of the input text\n\ttext: input text\n\toptions: see below\nOptions include:\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.renderText = function(outputType,textType,text,options) {\n\toptions = options || {};\n\tvar parser = this.parseText(textType,text,options),\n\t\twidgetNode = this.makeWidget(parser,options);\n\tvar container = $tw.fakeDocument.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn outputType === \"text/html\" ? container.innerHTML : container.textContent;\n};\n\n/*\nParse text from a tiddler and render it into another format\n\toutputType: content type for the output\n\ttitle: title of the tiddler to be rendered\n\toptions: see below\nOptions include:\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.renderTiddler = function(outputType,title,options) {\n\toptions = options || {};\n\tvar parser = this.parseTiddler(title,options),\n\t\twidgetNode = this.makeWidget(parser,options);\n\tvar container = $tw.fakeDocument.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn outputType === \"text/html\" ? container.innerHTML : (outputType === \"text/plain-formatted\" ? container.formattedTextContent : container.textContent);\n};\n\n/*\nReturn an array of tiddler titles that match a search string\n\ttext: The text string to search for\n\toptions: see below\nOptions available:\n\tsource: an iterator function for the source tiddlers, called source(iterator), where iterator is called as iterator(tiddler,title)\n\texclude: An array of tiddler titles to exclude from the search\n\tinvert: If true returns tiddlers that do not contain the specified string\n\tcaseSensitive: If true forces a case sensitive search\n\tliteral: If true, searches for literal string, rather than separate search terms\n\tfield: If specified, restricts the search to the specified field\n*/\nexports.search = function(text,options) {\n\toptions = options || {};\n\tvar self = this,\n\t\tt,\n\t\tinvert = !!options.invert;\n\t// Convert the search string into a regexp for each term\n\tvar terms, searchTermsRegExps,\n\t\tflags = options.caseSensitive ? \"\" : \"i\";\n\tif(options.literal) {\n\t\tif(text.length === 0) {\n\t\t\tsearchTermsRegExps = null;\n\t\t} else {\n\t\t\tsearchTermsRegExps = [new RegExp(\"(\" + $tw.utils.escapeRegExp(text) + \")\",flags)];\n\t\t}\n\t} else {\n\t\tterms = text.split(/ +/);\n\t\tif(terms.length === 1 && terms[0] === \"\") {\n\t\t\tsearchTermsRegExps = null;\n\t\t} else {\n\t\t\tsearchTermsRegExps = [];\n\t\t\tfor(t=0; t<terms.length; t++) {\n\t\t\t\tsearchTermsRegExps.push(new RegExp(\"(\" + $tw.utils.escapeRegExp(terms[t]) + \")\",flags));\n\t\t\t}\n\t\t}\n\t}\n\t// Function to check a given tiddler for the search term\n\tvar searchTiddler = function(title) {\n\t\tif(!searchTermsRegExps) {\n\t\t\treturn true;\n\t\t}\n\t\tvar tiddler = self.getTiddler(title);\n\t\tif(!tiddler) {\n\t\t\ttiddler = new $tw.Tiddler({title: title, text: \"\", type: \"text/vnd.tiddlywiki\"});\n\t\t}\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type] || $tw.config.contentTypeInfo[\"text/vnd.tiddlywiki\"],\n\t\t\tmatch;\n\t\tfor(var t=0; t<searchTermsRegExps.length; t++) {\n\t\t\tmatch = false;\n\t\t\tif(options.field) {\n\t\t\t\tmatch = searchTermsRegExps[t].test(tiddler.getFieldString(options.field));\n\t\t\t} else {\n\t\t\t\t// Search title, tags and body\n\t\t\t\tif(contentTypeInfo.encoding === \"utf8\") {\n\t\t\t\t\tmatch = match || searchTermsRegExps[t].test(tiddler.fields.text);\n\t\t\t\t}\n\t\t\t\tvar tags = tiddler.fields.tags ? tiddler.fields.tags.join(\"\\0\") : \"\";\n\t\t\t\tmatch = match || searchTermsRegExps[t].test(tags) || searchTermsRegExps[t].test(tiddler.fields.title);\n\t\t\t}\n\t\t\tif(!match) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t};\n\t// Loop through all the tiddlers doing the search\n\tvar results = [],\n\t\tsource = options.source || this.each;\n\tsource(function(tiddler,title) {\n\t\tif(searchTiddler(title) !== options.invert) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\t// Remove any of the results we have to exclude\n\tif(options.exclude) {\n\t\tfor(t=0; t<options.exclude.length; t++) {\n\t\t\tvar p = results.indexOf(options.exclude[t]);\n\t\t\tif(p !== -1) {\n\t\t\t\tresults.splice(p,1);\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n};\n\n/*\nTrigger a load for a tiddler if it is skinny. Returns the text, or undefined if the tiddler is missing, null if the tiddler is being lazily loaded.\n*/\nexports.getTiddlerText = function(title,defaultText) {\n\tvar tiddler = this.getTiddler(title);\n\t// Return undefined if the tiddler isn't found\n\tif(!tiddler) {\n\t\treturn defaultText;\n\t}\n\tif(tiddler.fields.text !== undefined) {\n\t\t// Just return the text if we've got it\n\t\treturn tiddler.fields.text;\n\t} else {\n\t\t// Tell any listeners about the need to lazily load this tiddler\n\t\tthis.dispatchEvent(\"lazyLoad\",title);\n\t\t// Indicate that the text is being loaded\n\t\treturn null;\n\t}\n};\n\n/*\nCheck whether the text of a tiddler matches a given value. By default, the comparison is case insensitive, and any spaces at either end of the tiddler text is trimmed\n*/\nexports.checkTiddlerText = function(title,targetText,options) {\n\toptions = options || {};\n\tvar text = this.getTiddlerText(title,\"\");\n\tif(!options.noTrim) {\n\t\ttext = text.trim();\n\t}\n\tif(!options.caseSensitive) {\n\t\ttext = text.toLowerCase();\n\t\ttargetText = targetText.toLowerCase();\n\t}\n\treturn text === targetText;\n}\n\n/*\nRead an array of browser File objects, invoking callback(tiddlerFieldsArray) once they're all read\n*/\nexports.readFiles = function(files,callback) {\n\tvar result = [],\n\t\toutstanding = files.length;\n\tfor(var f=0; f<files.length; f++) {\n\t\tthis.readFile(files[f],function(tiddlerFieldsArray) {\n\t\t\tresult.push.apply(result,tiddlerFieldsArray);\n\t\t\tif(--outstanding === 0) {\n\t\t\t\tcallback(result);\n\t\t\t}\n\t\t});\n\t}\n\treturn files.length;\n};\n\n/*\nRead a browser File object, invoking callback(tiddlerFieldsArray) with an array of tiddler fields objects\n*/\nexports.readFile = function(file,callback) {\n\t// Get the type, falling back to the filename extension\n\tvar self = this,\n\t\ttype = file.type;\n\tif(type === \"\" || !type) {\n\t\tvar dotPos = file.name.lastIndexOf(\".\");\n\t\tif(dotPos !== -1) {\n\t\t\tvar fileExtensionInfo = $tw.utils.getFileExtensionInfo(file.name.substr(dotPos));\n\t\t\tif(fileExtensionInfo) {\n\t\t\t\ttype = fileExtensionInfo.type;\n\t\t\t}\n\t\t}\n\t}\n\t// Figure out if we're reading a binary file\n\tvar contentTypeInfo = $tw.config.contentTypeInfo[type],\n\t\tisBinary = contentTypeInfo ? contentTypeInfo.encoding === \"base64\" : false;\n\t// Log some debugging information\n\tif($tw.log.IMPORT) {\n\t\tconsole.log(\"Importing file '\" + file.name + \"', type: '\" + type + \"', isBinary: \" + isBinary);\n\t}\n\t// Create the FileReader\n\tvar reader = new FileReader();\n\t// Onload\n\treader.onload = function(event) {\n\t\tvar text = event.target.result,\n\t\t\ttiddlerFields = {title: file.name || \"Untitled\", type: type};\n\t\tif(isBinary) {\n\t\t\tvar commaPos = text.indexOf(\",\");\n\t\t\tif(commaPos !== -1) {\n\t\t\t\ttext = text.substr(commaPos + 1);\n\t\t\t}\n\t\t}\n\t\t// Check whether this is an encrypted TiddlyWiki file\n\t\tvar encryptedJson = $tw.utils.extractEncryptedStoreArea(text);\n\t\tif(encryptedJson) {\n\t\t\t// If so, attempt to decrypt it with the current password\n\t\t\t$tw.utils.decryptStoreAreaInteractive(encryptedJson,function(tiddlers) {\n\t\t\t\tcallback(tiddlers);\n\t\t\t});\n\t\t} else {\n\t\t\t// Otherwise, just try to deserialise any tiddlers in the file\n\t\t\tcallback(self.deserializeTiddlers(type,text,tiddlerFields));\n\t\t}\n\t};\n\t// Kick off the read\n\tif(isBinary) {\n\t\treader.readAsDataURL(file);\n\t} else {\n\t\treader.readAsText(file);\n\t}\n};\n\n/*\nFind any existing draft of a specified tiddler\n*/\nexports.findDraft = function(targetTitle) {\n\tvar draftTitle = undefined;\n\tthis.forEachTiddler({includeSystem: true},function(title,tiddler) {\n\t\tif(tiddler.fields[\"draft.title\"] && tiddler.fields[\"draft.of\"] === targetTitle) {\n\t\t\tdraftTitle = title;\n\t\t}\n\t});\n\treturn draftTitle;\n}\n\n/*\nCheck whether the specified draft tiddler has been modified.\nIf the original tiddler doesn't exist, create  a vanilla tiddler variable,\nto check if additional fields have been added.\n*/\nexports.isDraftModified = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(!tiddler.isDraft()) {\n\t\treturn false;\n\t}\n\tvar ignoredFields = [\"created\", \"modified\", \"title\", \"draft.title\", \"draft.of\"],\n\t\torigTiddler = this.getTiddler(tiddler.fields[\"draft.of\"]) || new $tw.Tiddler({text:\"\", tags:[]}),\n\t\ttitleModified = tiddler.fields[\"draft.title\"] !== tiddler.fields[\"draft.of\"];\n\treturn titleModified || !tiddler.isEqual(origTiddler,ignoredFields);\n};\n\n/*\nAdd a new record to the top of the history stack\ntitle: a title string or an array of title strings\nfromPageRect: page coordinates of the origin of the navigation\nhistoryTitle: title of history tiddler (defaults to $:/HistoryList)\n*/\nexports.addToHistory = function(title,fromPageRect,historyTitle) {\n\tvar story = new $tw.Story({wiki: this, historyTitle: historyTitle});\n\tstory.addToHistory(title,fromPageRect);\n};\n\n/*\nInvoke the available upgrader modules\ntitles: array of tiddler titles to be processed\ntiddlers: hashmap by title of tiddler fields of pending import tiddlers. These can be modified by the upgraders. An entry with no fields indicates a tiddler that was pending import has been suppressed. When entries are added to the pending import the tiddlers hashmap may have entries that are not present in the titles array\nReturns a hashmap of messages keyed by tiddler title.\n*/\nexports.invokeUpgraders = function(titles,tiddlers) {\n\t// Collect up the available upgrader modules\n\tvar self = this;\n\tif(!this.upgraderModules) {\n\t\tthis.upgraderModules = [];\n\t\t$tw.modules.forEachModuleOfType(\"upgrader\",function(title,module) {\n\t\t\tif(module.upgrade) {\n\t\t\t\tself.upgraderModules.push(module);\n\t\t\t}\n\t\t});\n\t}\n\t// Invoke each upgrader in turn\n\tvar messages = {};\n\tfor(var t=0; t<this.upgraderModules.length; t++) {\n\t\tvar upgrader = this.upgraderModules[t],\n\t\t\tupgraderMessages = upgrader.upgrade(this,titles,tiddlers);\n\t\t$tw.utils.extend(messages,upgraderMessages);\n\t}\n\treturn messages;\n};\n\n})();\n\n",
            "title": "$:/core/modules/wiki.js",
            "type": "application/javascript",
            "module-type": "wikimethod"
        },
        "$:/palettes/Blanca": {
            "title": "$:/palettes/Blanca",
            "name": "Blanca",
            "description": "A clean white palette to let you focus",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #66cccc\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #ffffff\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #7897f3\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ccc\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #ffffff\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #7897f3\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #eeeeee\ntab-border-selected: #cccccc\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ffeedd\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: #eee\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #ff9900\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/Blue": {
            "title": "$:/palettes/Blue",
            "name": "Blue",
            "description": "A blue theme",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #fff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour foreground>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333353\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #ddddff\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ffffff\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: <<colour page-background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #5959c0\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: #ccccdd\ntab-border-selected: #ccccdd\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #eeeeff\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #666666\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #ffffff\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #ffffff\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #5959c0\ntoolbar-new-button: #5eb95e\ntoolbar-options-button: rgb(128, 88, 165)\ntoolbar-save-button: #0e90d2\ntoolbar-info-button: #0e90d2\ntoolbar-edit-button: rgb(243, 123, 29)\ntoolbar-close-button: #dd514c\ntoolbar-delete-button: #dd514c\ntoolbar-cancel-button: rgb(243, 123, 29)\ntoolbar-done-button: #5eb95e\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/Muted": {
            "title": "$:/palettes/Muted",
            "name": "Muted",
            "description": "Bright tiddlers on a muted background",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #bbb\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #6f6f70\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #29a6ee\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #c2c1c2\nsidebar-foreground-shadow: rgba(255,255,255,0)\nsidebar-foreground: #d3d2d4\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #6f6f70\nsidebar-tab-background: #666667\nsidebar-tab-border-selected: #999\nsidebar-tab-border: #515151\nsidebar-tab-divider: #999\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: #999\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #d1d0d2\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #d5ad34\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/ContrastLight": {
            "title": "$:/palettes/ContrastLight",
            "name": "Contrast (Light)",
            "description": "High contrast and unambiguous (light version)",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #f00\nalert-border: <<colour background>>\nalert-highlight: <<colour foreground>>\nalert-muted-foreground: #800\nbackground: #fff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: <<colour background>>\nbutton-foreground: <<colour foreground>>\nbutton-border: <<colour foreground>>\ncode-background: <<colour background>>\ncode-border: <<colour foreground>>\ncode-foreground: <<colour foreground>>\ndirty-indicator: #f00\ndownload-background: #080\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: <<colour foreground>>\ndropdown-tab-background: <<colour foreground>>\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #00a\nexternal-link-foreground: #00e\nforeground: #000\nmessage-background: <<colour foreground>>\nmessage-border: <<colour background>>\nmessage-foreground: <<colour background>>\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour foreground>>\nmodal-header-border: <<colour foreground>>\nmuted-foreground: <<colour foreground>>\nnotification-background: <<colour background>>\nnotification-border: <<colour foreground>>\npage-background: <<colour background>>\npre-background: <<colour background>>\npre-border: <<colour foreground>>\nprimary: #00f\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: <<colour background>>\nsidebar-controls-foreground: <<colour foreground>>\nsidebar-foreground-shadow: rgba(0,0,0, 0)\nsidebar-foreground: <<colour foreground>>\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: <<colour foreground>>\nsidebar-tab-background-selected: <<colour background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: <<colour foreground>>\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: <<colour foreground>>\nsidebar-tiddler-link-foreground: <<colour primary>>\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: <<colour foreground>>\ntab-border-selected: <<colour foreground>>\ntab-border: <<colour foreground>>\ntab-divider: <<colour foreground>>\ntab-foreground-selected: <<colour foreground>>\ntab-foreground: <<colour background>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #000\ntag-foreground: #fff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour foreground>>\ntiddler-controls-foreground-hover: #ddd\ntiddler-controls-foreground-selected: #fdd\ntiddler-controls-foreground: <<colour foreground>>\ntiddler-editor-background: <<colour background>>\ntiddler-editor-border-image: <<colour foreground>>\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: <<colour background>>\ntiddler-editor-fields-odd: <<colour background>>\ntiddler-info-background: <<colour background>>\ntiddler-info-border: <<colour foreground>>\ntiddler-info-tab-background: <<colour background>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour foreground>>\ntiddler-title-foreground: <<colour foreground>>\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour foreground>>\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/ContrastDark": {
            "title": "$:/palettes/ContrastDark",
            "name": "Contrast (Dark)",
            "description": "High contrast and unambiguous (dark version)",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #f00\nalert-border: <<colour background>>\nalert-highlight: <<colour foreground>>\nalert-muted-foreground: #800\nbackground: #000\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: <<colour background>>\nbutton-foreground: <<colour foreground>>\nbutton-border: <<colour foreground>>\ncode-background: <<colour background>>\ncode-border: <<colour foreground>>\ncode-foreground: <<colour foreground>>\ndirty-indicator: #f00\ndownload-background: #080\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: <<colour foreground>>\ndropdown-tab-background: <<colour foreground>>\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #00a\nexternal-link-foreground: #00e\nforeground: #fff\nmessage-background: <<colour foreground>>\nmessage-border: <<colour background>>\nmessage-foreground: <<colour background>>\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour foreground>>\nmodal-header-border: <<colour foreground>>\nmuted-foreground: <<colour foreground>>\nnotification-background: <<colour background>>\nnotification-border: <<colour foreground>>\npage-background: <<colour background>>\npre-background: <<colour background>>\npre-border: <<colour foreground>>\nprimary: #00f\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: <<colour background>>\nsidebar-controls-foreground: <<colour foreground>>\nsidebar-foreground-shadow: rgba(0,0,0, 0)\nsidebar-foreground: <<colour foreground>>\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: <<colour foreground>>\nsidebar-tab-background-selected: <<colour background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: <<colour foreground>>\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: <<colour foreground>>\nsidebar-tiddler-link-foreground: <<colour primary>>\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: <<colour foreground>>\ntab-border-selected: <<colour foreground>>\ntab-border: <<colour foreground>>\ntab-divider: <<colour foreground>>\ntab-foreground-selected: <<colour foreground>>\ntab-foreground: <<colour background>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #fff\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour foreground>>\ntiddler-controls-foreground-hover: #ddd\ntiddler-controls-foreground-selected: #fdd\ntiddler-controls-foreground: <<colour foreground>>\ntiddler-editor-background: <<colour background>>\ntiddler-editor-border-image: <<colour foreground>>\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: <<colour background>>\ntiddler-editor-fields-odd: <<colour background>>\ntiddler-info-background: <<colour background>>\ntiddler-info-border: <<colour foreground>>\ntiddler-info-tab-background: <<colour background>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour foreground>>\ntiddler-title-foreground: <<colour foreground>>\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour foreground>>\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/DarkPhotos": {
            "created": "20150402111612188",
            "description": "Good with dark photo backgrounds",
            "modified": "20150402112344080",
            "name": "DarkPhotos",
            "tags": "$:/tags/Palette",
            "title": "$:/palettes/DarkPhotos",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: \nbutton-foreground: \nbutton-border: \ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #ddd\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #336438\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #ccf\nsidebar-controls-foreground: #fff\nsidebar-foreground-shadow: rgba(0,0,0, 0.5)\nsidebar-foreground: #fff\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #eee\nsidebar-tab-background-selected: rgba(255,255,255, 0.8)\nsidebar-tab-background: rgba(255,255,255, 0.4)\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: rgba(255,255,255, 0.2)\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #aaf\nsidebar-tiddler-link-foreground: #ddf\nsite-title-foreground: #fff\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ec6\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/Rocker": {
            "title": "$:/palettes/Rocker",
            "name": "Rocker",
            "description": "A dark theme",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #000\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #cc0000\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ffffff\nsidebar-foreground-shadow: rgba(255,255,255, 0.0)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #000\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #ffbb99\nsidebar-tiddler-link-foreground: #cc0000\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ffbb99\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #cc0000\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/SolarFlare": {
            "title": "$:/palettes/SolarFlare",
            "name": "Solar Flare",
            "description": "Warm, relaxing earth colours",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": ": Background Tones\n\nbase03: #002b36\nbase02: #073642\n\n: Content Tones\n\nbase01: #586e75\nbase00: #657b83\nbase0: #839496\nbase1: #93a1a1\n\n: Background Tones\n\nbase2: #eee8d5\nbase3: #fdf6e3\n\n: Accent Colors\n\nyellow: #b58900\norange: #cb4b16\nred: #dc322f\nmagenta: #d33682\nviolet: #6c71c4\nblue: #268bd2\ncyan: #2aa198\ngreen: #859900\n\n: Additional Tones (RA)\n\nbase10: #c0c4bb\nviolet-muted: #7c81b0\nblue-muted: #4e7baa\n\nyellow-hot: #ffcc44\norange-hot: #eb6d20\nred-hot: #ff2222\nblue-hot: #2298ee\ngreen-hot: #98ee22\n\n: Palette\n\n: Do not use colour macro for background and foreground\nbackground: #fdf6e3\n    download-foreground: <<colour background>>\n    dragger-foreground: <<colour background>>\n    dropdown-background: <<colour background>>\n    modal-background: <<colour background>>\n    sidebar-foreground-shadow: <<colour background>>\n    tiddler-background: <<colour background>>\n    tiddler-border: <<colour background>>\n    tiddler-link-background: <<colour background>>\n    tab-background-selected: <<colour background>>\n        dropdown-tab-background-selected: <<colour tab-background-selected>>\nforeground: #657b83\n    dragger-background: <<colour foreground>>\n    tab-foreground: <<colour foreground>>\n        tab-foreground-selected: <<colour tab-foreground>>\n            sidebar-tab-foreground-selected: <<colour tab-foreground-selected>>\n        sidebar-tab-foreground: <<colour tab-foreground>>\n    sidebar-button-foreground: <<colour foreground>>\n    sidebar-controls-foreground: <<colour foreground>>\n    sidebar-foreground: <<colour foreground>>\n: base03\n: base02\n: base01\n    alert-muted-foreground: <<colour base01>>\n: base00\n    code-foreground: <<colour base00>>\n    message-foreground: <<colour base00>>\n    tag-foreground: <<colour base00>>\n: base0\n    sidebar-tiddler-link-foreground: <<colour base0>>\n: base1\n    muted-foreground: <<colour base1>>\n        blockquote-bar: <<colour muted-foreground>>\n        dropdown-border: <<colour muted-foreground>>\n        sidebar-muted-foreground: <<colour muted-foreground>>\n        tiddler-title-foreground: <<colour muted-foreground>>\n            site-title-foreground: <<colour tiddler-title-foreground>>\n: base2\n    modal-footer-background: <<colour base2>>\n    page-background: <<colour base2>>\n        modal-backdrop: <<colour page-background>>\n        notification-background: <<colour page-background>>\n        code-background: <<colour page-background>>\n            code-border: <<colour code-background>>\n        pre-background: <<colour page-background>>\n            pre-border: <<colour pre-background>>\n        sidebar-tab-background-selected: <<colour page-background>>\n    table-header-background: <<colour base2>>\n    tag-background: <<colour base2>>\n    tiddler-editor-background: <<colour base2>>\n    tiddler-info-background: <<colour base2>>\n    tiddler-info-tab-background: <<colour base2>>\n    tab-background: <<colour base2>>\n        dropdown-tab-background: <<colour tab-background>>\n: base3\n    alert-background: <<colour base3>>\n    message-background: <<colour base3>>\n: yellow\n: orange\n: red\n: magenta\n    alert-highlight: <<colour magenta>>\n: violet\n    external-link-foreground: <<colour violet>>\n: blue\n: cyan\n: green\n: base10\n    tiddler-controls-foreground: <<colour base10>>\n: violet-muted\n    external-link-foreground-visited: <<colour violet-muted>>\n: blue-muted\n    primary: <<colour blue-muted>>\n        download-background: <<colour primary>>\n        tiddler-link-foreground: <<colour primary>>\n\nalert-border: #b99e2f\ndirty-indicator: #ff0000\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nmessage-border: #cfd6e6\nmodal-border: #999999\nsidebar-controls-foreground-hover:\nsidebar-muted-foreground-hover:\nsidebar-tab-background: #ded8c5\nsidebar-tiddler-link-foreground-hover:\nstatic-alert-foreground: #aaaaaa\ntab-border: #cccccc\n    modal-footer-border: <<colour tab-border>>\n    modal-header-border: <<colour tab-border>>\n    notification-border: <<colour tab-border>>\n    sidebar-tab-border: <<colour tab-border>>\n    tab-border-selected: <<colour tab-border>>\n        sidebar-tab-border-selected: <<colour tab-border-selected>>\ntab-divider: #d8d8d8\n    sidebar-tab-divider: <<colour tab-divider>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-border: #dddddd\ntiddler-subtitle-foreground: #c0c0c0\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/Vanilla": {
            "title": "$:/palettes/Vanilla",
            "name": "Vanilla",
            "description": "Pale and unobtrusive",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #bbb\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #f4f4f4\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #aaaaaa\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #f4f4f4\nsidebar-tab-background: #e0e0e0\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: #e4e4e4\nsidebar-tab-foreground-selected:\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #999999\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ec6\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/core/readme": {
            "title": "$:/core/readme",
            "text": "This plugin contains TiddlyWiki's core components, comprising:\n\n* JavaScript code modules\n* Icons\n* Templates needed to create TiddlyWiki's user interface\n* British English (''en-GB'') translations of the localisable strings used by the core\n"
        },
        "$:/library/sjcl.js/license": {
            "title": "$:/library/sjcl.js/license",
            "type": "text/plain",
            "text": "SJCL is open. You can use, modify and redistribute it under a BSD\nlicense or under the GNU GPL, version 2.0.\n\n---------------------------------------------------------------------\n\nhttp://opensource.org/licenses/BSD-2-Clause\n\nCopyright (c) 2009-2015, Emily Stark, Mike Hamburg and Dan Boneh at\nStanford University. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n1. Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright\nnotice, this list of conditions and the following disclaimer in the\ndocumentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\nIS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\nTO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\nPARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nHOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n---------------------------------------------------------------------\n\nhttp://opensource.org/licenses/GPL-2.0\n\nThe Stanford Javascript Crypto Library (hosted here on GitHub) is a\nproject by the Stanford Computer Security Lab to build a secure,\npowerful, fast, small, easy-to-use, cross-browser library for\ncryptography in Javascript.\n\nCopyright (c) 2009-2015, Emily Stark, Mike Hamburg and Dan Boneh at\nStanford University.\n\nThis program is free software; you can redistribute it and/or modify it\nunder the terms of the GNU General Public License as published by the\nFree Software Foundation; either version 2 of the License, or (at your\noption) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General\nPublic License for more details.\n\nYou should have received a copy of the GNU General Public License along\nwith this program; if not, write to the Free Software Foundation, Inc.,\n59 Temple Place, Suite 330, Boston, MA 02111-1307 USA"
        },
        "$:/core/templates/MOTW.html": {
            "title": "$:/core/templates/MOTW.html",
            "text": "\\rules only filteredtranscludeinline transcludeinline entity\n<!-- The following comment is called a MOTW comment and is necessary for the TiddlyIE Internet Explorer extension -->\n<!-- saved from url=(0021)http://tiddlywiki.com -->&#13;&#10;"
        },
        "$:/core/templates/alltiddlers.template.html": {
            "title": "$:/core/templates/alltiddlers.template.html",
            "type": "text/vnd.tiddlywiki-html",
            "text": "<!-- This template is provided for backwards compatibility with older versions of TiddlyWiki -->\n\n<$set name=\"exportFilter\" value=\"[!is[system]sort[title]]\">\n\n{{$:/core/templates/exporters/StaticRiver}}\n\n</$set>\n"
        },
        "$:/core/templates/canonical-uri-external-image": {
            "title": "$:/core/templates/canonical-uri-external-image",
            "text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external images.\n\nChange the `./images/` part to a different base URI. The URI can be relative or absolute.\n\n-->\n./images/<$view field=\"title\" format=\"doubleurlencoded\"/>"
        },
        "$:/core/templates/canonical-uri-external-text": {
            "title": "$:/core/templates/canonical-uri-external-text",
            "text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external text files.\n\nChange the `./text/` part to a different base URI. The URI can be relative or absolute.\n\n-->\n./text/<$view field=\"title\" format=\"doubleurlencoded\"/>.tid"
        },
        "$:/core/templates/css-tiddler": {
            "title": "$:/core/templates/css-tiddler",
            "text": "<!--\n\nThis template is used for saving CSS tiddlers as a style tag with data attributes representing the tiddler fields.\n\n-->`<style`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/css\">`<$view field=\"text\" format=\"text\" />`</style>`"
        },
        "$:/core/templates/exporters/CsvFile": {
            "title": "$:/core/templates/exporters/CsvFile",
            "tags": "$:/tags/Exporter",
            "description": "{{$:/language/Exporters/CsvFile}}",
            "extension": ".csv",
            "text": "\\define renderContent()\n<$text text=<<csvtiddlers filter:\"\"\"$(exportFilter)$\"\"\" format:\"quoted-comma-sep\">>/>\n\\end\n<<renderContent>>\n"
        },
        "$:/core/templates/exporters/JsonFile": {
            "title": "$:/core/templates/exporters/JsonFile",
            "tags": "$:/tags/Exporter",
            "description": "{{$:/language/Exporters/JsonFile}}",
            "extension": ".json",
            "text": "\\define renderContent()\n<$text text=<<jsontiddlers filter:\"\"\"$(exportFilter)$\"\"\">>/>\n\\end\n<<renderContent>>\n"
        },
        "$:/core/templates/exporters/StaticRiver": {
            "title": "$:/core/templates/exporters/StaticRiver",
            "tags": "$:/tags/Exporter",
            "description": "{{$:/language/Exporters/StaticRiver}}",
            "extension": ".html",
            "text": "\\define tv-wikilink-template() #$uri_encoded$\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<style type=\"text/css\">\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n</style>\n</head>\n<body class=\"tc-body\">\n{{$:/StaticBanner||$:/core/templates/html-tiddler}}\n<section class=\"tc-story-river\">\n{{$:/core/templates/exporters/StaticRiver/Content||$:/core/templates/html-tiddler}}\n</section>\n</body>\n</html>\n"
        },
        "$:/core/templates/exporters/StaticRiver/Content": {
            "title": "$:/core/templates/exporters/StaticRiver/Content",
            "text": "\\define renderContent()\n{{{ $(exportFilter)$ ||$:/core/templates/static-tiddler}}}\n\\end\n<$importvariables filter=\"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\">\n<<renderContent>>\n</$importvariables>\n"
        },
        "$:/core/templates/exporters/TidFile": {
            "title": "$:/core/templates/exporters/TidFile",
            "tags": "$:/tags/Exporter",
            "description": "{{$:/language/Exporters/TidFile}}",
            "extension": ".tid",
            "text": "\\define renderContent()\n{{{ $(exportFilter)$ +[limit[1]] ||$:/core/templates/tid-tiddler}}}\n\\end\n<$importvariables filter=\"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\"><<renderContent>></$importvariables>"
        },
        "$:/core/templates/html-div-tiddler": {
            "title": "$:/core/templates/html-div-tiddler",
            "text": "<!--\n\nThis template is used for saving tiddlers as an HTML DIV tag with attributes representing the tiddler fields.\n\n-->`<div`<$fields template=' $name$=\"$encoded_value$\"'></$fields>`>\n<pre>`<$view field=\"text\" format=\"htmlencoded\" />`</pre>\n</div>`\n"
        },
        "$:/core/templates/html-tiddler": {
            "title": "$:/core/templates/html-tiddler",
            "text": "<!--\n\nThis template is used for saving tiddlers as raw HTML\n\n--><$view field=\"text\" format=\"htmlwikified\" />"
        },
        "$:/core/templates/javascript-tiddler": {
            "title": "$:/core/templates/javascript-tiddler",
            "text": "<!--\n\nThis template is used for saving JavaScript tiddlers as a script tag with data attributes representing the tiddler fields.\n\n-->`<script`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/javascript\">`<$view field=\"text\" format=\"text\" />`</script>`"
        },
        "$:/core/templates/json-tiddler": {
            "title": "$:/core/templates/json-tiddler",
            "text": "<!--\n\nThis template is used for saving tiddlers as raw JSON\n\n--><$text text=<<jsontiddler>>/>"
        },
        "$:/core/templates/module-tiddler": {
            "title": "$:/core/templates/module-tiddler",
            "text": "<!--\n\nThis template is used for saving JavaScript tiddlers as a script tag with data attributes representing the tiddler fields. The body of the tiddler is wrapped in a call to the `$tw.modules.define` function in order to define the body of the tiddler as a module\n\n-->`<script`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/javascript\" data-module=\"yes\">$tw.modules.define(\"`<$view field=\"title\" format=\"jsencoded\" />`\",\"`<$view field=\"module-type\" format=\"jsencoded\" />`\",function(module,exports,require) {`<$view field=\"text\" format=\"text\" />`});\n</script>`"
        },
        "$:/core/templates/plain-text-tiddler": {
            "title": "$:/core/templates/plain-text-tiddler",
            "text": "<$view field=\"text\" format=\"text\" />"
        },
        "$:/core/templates/raw-static-tiddler": {
            "title": "$:/core/templates/raw-static-tiddler",
            "text": "<!--\n\nThis template is used for saving tiddlers as static HTML\n\n--><$view field=\"text\" format=\"plainwikified\" />"
        },
        "$:/core/save/all": {
            "title": "$:/core/save/all",
            "text": "\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] $(publishFilter)$\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
        },
        "$:/core/save/empty": {
            "title": "$:/core/save/empty",
            "text": "\\define saveTiddlerFilter()\n[is[system]] -[prefix[$:/state/popup/]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
        },
        "$:/core/save/lazy-all": {
            "title": "$:/core/save/lazy-all",
            "text": "\\define saveTiddlerFilter()\n[is[system]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] \n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
        },
        "$:/core/save/lazy-images": {
            "title": "$:/core/save/lazy-images",
            "text": "\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] -[!is[system]is[image]] +[sort[title]] \n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
        },
        "$:/core/templates/single.tiddler.window": {
            "title": "$:/core/templates/single.tiddler.window",
            "text": "<$set name=\"themeTitle\" value={{$:/view}}>\n\n<$set name=\"tempCurrentTiddler\" value=<<currentTiddler>>>\n\n<$set name=\"currentTiddler\" value={{$:/language}}>\n\n<$set name=\"languageTitle\" value={{!!name}}>\n\n<$set name=\"currentTiddler\" value=<<tempCurrentTiddler>>>\n\n<$importvariables filter=\"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\">\n\n<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\">\n\n<$transclude mode=\"block\"/>\n\n</$navigator>\n\n</$importvariables>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n"
        },
        "$:/core/templates/split-recipe": {
            "title": "$:/core/templates/split-recipe",
            "text": "<$list filter=\"[!is[system]]\">\ntiddler: <$view field=\"title\" format=\"urlencoded\"/>.tid\n</$list>\n"
        },
        "$:/core/templates/static-tiddler": {
            "title": "$:/core/templates/static-tiddler",
            "text": "<a name=<<currentTiddler>>>\n<$transclude tiddler=\"$:/core/ui/ViewTemplate\"/>\n</a>"
        },
        "$:/core/templates/static.area": {
            "title": "$:/core/templates/static.area",
            "text": "<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawStaticContent]!has[draft.of]] ||$:/core/templates/raw-static-tiddler}}}\n{{$:/core/templates/static.content||$:/core/templates/html-tiddler}}\n</$reveal>\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\nThis file contains an encrypted ~TiddlyWiki. Enable ~JavaScript and enter the decryption password when prompted.\n</$reveal>\n"
        },
        "$:/core/templates/static.content": {
            "title": "$:/core/templates/static.content",
            "type": "text/vnd.tiddlywiki",
            "text": "<!-- For Google, and people without JavaScript-->\nThis [[TiddlyWiki|http://tiddlywiki.com]] contains the following tiddlers:\n\n<ul>\n<$list filter=<<saveTiddlerFilter>>>\n<li><$view field=\"title\" format=\"text\"></$view></li>\n</$list>\n</ul>\n"
        },
        "$:/core/templates/static.template.css": {
            "title": "$:/core/templates/static.template.css",
            "text": "{{$:/boot/boot.css||$:/core/templates/plain-text-tiddler}}\n\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n"
        },
        "$:/core/templates/static.template.html": {
            "title": "$:/core/templates/static.template.html",
            "type": "text/vnd.tiddlywiki-html",
            "text": "\\define tv-wikilink-template() static/$uri_doubleencoded$.html\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<style type=\"text/css\">\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n</style>\n</head>\n<body class=\"tc-body\">\n{{$:/StaticBanner||$:/core/templates/html-tiddler}}\n{{$:/core/ui/PageTemplate||$:/core/templates/html-tiddler}}\n</body>\n</html>\n"
        },
        "$:/core/templates/static.tiddler.html": {
            "title": "$:/core/templates/static.tiddler.html",
            "text": "\\define tv-wikilink-template() $uri_doubleencoded$.html\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n`<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"`{{$:/core/templates/version}}`\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<link rel=\"stylesheet\" href=\"static.css\">\n<title>`<$view field=\"caption\"><$view field=\"title\"/></$view>: {{$:/core/wiki/title}}`</title>\n</head>\n<body class=\"tc-body\">\n`{{$:/StaticBanner||$:/core/templates/html-tiddler}}`\n<section class=\"tc-story-river\">\n`<$importvariables filter=\"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\">\n<$view tiddler=\"$:/core/ui/ViewTemplate\" format=\"htmlwikified\"/>\n</$importvariables>`\n</section>\n</body>\n</html>\n`"
        },
        "$:/core/templates/store.area.template.html": {
            "title": "$:/core/templates/store.area.template.html",
            "text": "<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n`<div id=\"storeArea\" style=\"display:none;\">`\n<$list filter=<<saveTiddlerFilter>> template=\"$:/core/templates/html-div-tiddler\"/>\n`</div>`\n</$reveal>\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\n`<!--~~ Encrypted tiddlers ~~-->`\n`<pre id=\"encryptedStoreArea\" type=\"text/plain\" style=\"display:none;\">`\n<$encrypt filter=<<saveTiddlerFilter>>/>\n`</pre>`\n</$reveal>"
        },
        "$:/core/templates/tid-tiddler": {
            "title": "$:/core/templates/tid-tiddler",
            "text": "<!--\n\nThis template is used for saving tiddlers in TiddlyWeb *.tid format\n\n--><$fields exclude='text bag' template='$name$: $value$\n'></$fields>`\n`<$view field=\"text\" format=\"text\" />"
        },
        "$:/core/templates/tiddler-metadata": {
            "title": "$:/core/templates/tiddler-metadata",
            "text": "<!--\n\nThis template is used for saving tiddler metadata *.meta files\n\n--><$fields exclude='text bag' template='$name$: $value$\n'></$fields>"
        },
        "$:/core/templates/tiddlywiki5.html": {
            "title": "$:/core/templates/tiddlywiki5.html",
            "text": "\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n{{$:/core/templates/MOTW.html}}<html>\n<head>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\">\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"application-name\" content=\"TiddlyWiki\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\" />\n<meta name=\"copyright\" content=\"{{$:/core/copyright.txt}}\" />\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<!--~~ This is a Tiddlywiki file. The points of interest in the file are marked with this pattern ~~-->\n\n<!--~~ Raw markup ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/core/wiki/rawmarkup]] [all[shadows+tiddlers]tag[$:/tags/RawMarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified]] ||$:/core/templates/raw-static-tiddler}}}\n</head>\n<body class=\"tc-body\">\n<!--~~ Static styles ~~-->\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<!--~~ Static content for Google and browsers without JavaScript ~~-->\n<noscript>\n<div id=\"splashArea\">\n{{$:/core/templates/static.area}}\n</div>\n</noscript>\n<!--~~ Ordinary tiddlers ~~-->\n{{$:/core/templates/store.area.template.html}}\n<!--~~ Library modules ~~-->\n<div id=\"libraryModules\" style=\"display:none;\">\n{{{ [is[system]type[application/javascript]library[yes]] ||$:/core/templates/javascript-tiddler}}}\n</div>\n<!--~~ Boot kernel prologue ~~-->\n<div id=\"bootKernelPrefix\" style=\"display:none;\">\n{{ $:/boot/bootprefix.js ||$:/core/templates/javascript-tiddler}}\n</div>\n<!--~~ Boot kernel ~~-->\n<div id=\"bootKernel\" style=\"display:none;\">\n{{ $:/boot/boot.js ||$:/core/templates/javascript-tiddler}}\n</div>\n</body>\n</html>\n"
        },
        "$:/core/templates/version": {
            "title": "$:/core/templates/version",
            "text": "<<version>>"
        },
        "$:/core/templates/wikified-tiddler": {
            "title": "$:/core/templates/wikified-tiddler",
            "text": "<$transclude />"
        },
        "$:/core/ui/AboveStory/tw2-plugin-check": {
            "title": "$:/core/ui/AboveStory/tw2-plugin-check",
            "tags": "$:/tags/AboveStory",
            "text": "\\define lingo-base() $:/language/AboveStory/ClassicPlugin/\n<$list filter=\"[all[system+tiddlers]tag[systemConfig]limit[1]]\">\n\n<div class=\"tc-message-box\">\n\n<<lingo Warning>>\n\n<ul>\n\n<$list filter=\"[all[system+tiddlers]tag[systemConfig]]\">\n\n<li>\n\n<$link><$view field=\"title\"/></$link>\n\n</li>\n\n</$list>\n\n</ul>\n\n</div>\n\n</$list>\n"
        },
        "$:/core/ui/AdvancedSearch/Filter": {
            "title": "$:/core/ui/AdvancedSearch/Filter",
            "tags": "$:/tags/AdvancedSearch",
            "caption": "{{$:/language/Search/Filter/Caption}}",
            "text": "\\define lingo-base() $:/language/Search/\n<<lingo Filter/Hint>>\n\n<div class=\"tc-search tc-advanced-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\"/>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch/FilterButton]!has[draft.of]]\"><$transclude/></$list>\n</div>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter={{$:/temp/advancedsearch}}/>\"\"\">\n<div class=\"tc-search-results\">\n<<lingo Filter/Matches>>\n<$list filter={{$:/temp/advancedsearch}} template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$set>\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/Filter/FilterButtons/clear": {
            "title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/clear",
            "tags": "$:/tags/AdvancedSearch/FilterButton",
            "text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/Filter/FilterButtons/delete": {
            "title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/delete",
            "tags": "$:/tags/AdvancedSearch/FilterButton",
            "text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button popup=<<qualify \"$:/state/filterDeleteDropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/delete-button}}\n</$button>\n</$reveal>\n\n<$reveal state=<<qualify \"$:/state/filterDeleteDropdown\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<div class=\"tc-dropdown-item-plain\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter={{$:/temp/advancedsearch}}/>\"\"\">\nAre you sure you wish to delete <<resultCount>> tiddler(s)?\n</$set>\n</div>\n<div class=\"tc-dropdown-item-plain\">\n<$button class=\"tc-btn\">\n<$action-deletetiddler $filter={{$:/temp/advancedsearch}}/>\nDelete these tiddlers\n</$button>\n</div>\n</div>\n</div>\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown": {
            "title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown",
            "tags": "$:/tags/AdvancedSearch/FilterButton",
            "text": "<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/filterDropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n</span>\n\n<$reveal state=<<qualify \"$:/state/filterDropdown\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Filter]]\"><$link to={{!!filter}}><$transclude field=\"description\"/></$link>\n</$list>\n</div>\n</div>\n</$linkcatcher>\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/Filter/FilterButtons/export": {
            "title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/export",
            "tags": "$:/tags/AdvancedSearch/FilterButton",
            "text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$macrocall $name=\"exportButton\" exportFilter={{$:/temp/advancedsearch}} lingoBase=\"$:/language/Buttons/ExportTiddlers/\"/>\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/Shadows": {
            "title": "$:/core/ui/AdvancedSearch/Shadows",
            "tags": "$:/tags/AdvancedSearch",
            "caption": "{{$:/language/Search/Shadows/Caption}}",
            "text": "\\define lingo-base() $:/language/Search/\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n\n<<lingo Shadows/Hint>>\n\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\"/>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n</$linkcatcher>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[all[shadows]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]]\"/>\"\"\">\n\n<div class=\"tc-search-results\">\n\n<<lingo Shadows/Matches>>\n\n<$list filter=\"[all[shadows]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n</div>\n\n</$set>\n\n</$list>\n\n</$reveal>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"match\" text=\"\">\n\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/Standard": {
            "title": "$:/core/ui/AdvancedSearch/Standard",
            "tags": "$:/tags/AdvancedSearch",
            "caption": "{{$:/language/Search/Standard/Caption}}",
            "text": "\\define lingo-base() $:/language/Search/\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n\n<<lingo Standard/Hint>>\n\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\"/>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n</$linkcatcher>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$set name=\"searchTiddler\" value=\"$:/temp/advancedsearch\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\">\n<$transclude/>\n</$list>\n\"\"\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}}/>\n</$list>\n</$set>\n</$list>\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/System": {
            "title": "$:/core/ui/AdvancedSearch/System",
            "tags": "$:/tags/AdvancedSearch",
            "caption": "{{$:/language/Search/System/Caption}}",
            "text": "\\define lingo-base() $:/language/Search/\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n\n<<lingo System/Hint>>\n\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\"/>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n</$linkcatcher>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[is[system]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]]\"/>\"\"\">\n\n<div class=\"tc-search-results\">\n\n<<lingo System/Matches>>\n\n<$list filter=\"[is[system]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n</div>\n\n</$set>\n\n</$list>\n\n</$reveal>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"match\" text=\"\">\n\n</$reveal>\n"
        },
        "$:/AdvancedSearch": {
            "title": "$:/AdvancedSearch",
            "icon": "$:/core/images/advanced-search-button",
            "color": "#bbb",
            "text": "<div class=\"tc-advanced-search\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch]!has[draft.of]]\" \"$:/core/ui/AdvancedSearch/System\">>\n</div>\n"
        },
        "$:/core/ui/AlertTemplate": {
            "title": "$:/core/ui/AlertTemplate",
            "text": "<div class=\"tc-alert\">\n<div class=\"tc-alert-toolbar\">\n<$button class=\"tc-btn-invisible\"><$action-deletetiddler $tiddler=<<currentTiddler>>/>{{$:/core/images/delete-button}}</$button>\n</div>\n<div class=\"tc-alert-subtitle\">\n<$view field=\"component\"/> - <$view field=\"modified\" format=\"date\" template=\"0hh:0mm:0ss DD MM YYYY\"/> <$reveal type=\"nomatch\" state=\"!!count\" text=\"\"><span class=\"tc-alert-highlight\">({{$:/language/Count}}: <$view field=\"count\"/>)</span></$reveal>\n</div>\n<div class=\"tc-alert-body\">\n\n<$transclude/>\n\n</div>\n</div>\n"
        },
        "$:/core/ui/BinaryWarning": {
            "title": "$:/core/ui/BinaryWarning",
            "text": "\\define lingo-base() $:/language/BinaryWarning/\n<div class=\"tc-binary-warning\">\n\n<<lingo Prompt>>\n\n</div>\n"
        },
        "$:/core/ui/Components/plugin-info": {
            "title": "$:/core/ui/Components/plugin-info",
            "text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n\\define popup-state-macro()\n$(qualified-state)$-$(currentTiddler)$\n\\end\n\n\\define tabs-state-macro()\n$(popup-state)$-$(pluginInfoType)$\n\\end\n\n\\define plugin-icon-title()\n$(currentTiddler)$/icon\n\\end\n\n\\define plugin-disable-title()\n$:/config/Plugins/Disabled/$(currentTiddler)$\n\\end\n\n\\define plugin-table-body(type,disabledMessage,default-popup-state)\n<div class=\"tc-plugin-info-chunk tc-small-icon\">\n<$reveal type=\"nomatch\" state=<<popup-state>> text=\"yes\" default=\"\"\"$default-popup-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"yes\">\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<popup-state>> text=\"yes\" default=\"\"\"$default-popup-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"no\">\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n</div>\n<div class=\"tc-plugin-info-chunk\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<plugin-icon-title>>>\n<$transclude tiddler=\"$:/core/images/plugin-generic-$type$\"/>\n</$transclude>\n</div>\n<div class=\"tc-plugin-info-chunk\">\n<h1>\n''<$view field=\"description\"><$view field=\"title\"/></$view>'' $disabledMessage$\n</h1>\n<h2>\n<$view field=\"title\"/>\n</h2>\n<h2>\n<div><em><$view field=\"version\"/></em></div>\n</h2>\n</div>\n\\end\n\n\\define plugin-info(type,default-popup-state)\n<$set name=\"popup-state\" value=<<popup-state-macro>>>\n<$reveal type=\"nomatch\" state=<<plugin-disable-title>> text=\"yes\">\n<$link to={{!!title}} class=\"tc-plugin-info\">\n<<plugin-table-body type:\"$type$\" default-popup-state:\"\"\"$default-popup-state$\"\"\">>\n</$link>\n</$reveal>\n<$reveal type=\"match\" state=<<plugin-disable-title>> text=\"yes\">\n<$link to={{!!title}} class=\"tc-plugin-info tc-plugin-info-disabled\">\n<<plugin-table-body type:\"$type$\" default-popup-state:\"\"\"$default-popup-state$\"\"\" disabledMessage:\"<$macrocall $name='lingo' title='Disabled/Status'/>\">>\n</$link>\n</$reveal>\n<$reveal type=\"match\" text=\"yes\" state=<<popup-state>> default=\"\"\"$default-popup-state$\"\"\">\n<div class=\"tc-plugin-info-dropdown\">\n<div class=\"tc-plugin-info-dropdown-body\">\n<$list filter=\"[all[current]] -[[$:/core]]\">\n<div style=\"float:right;\">\n<$reveal type=\"nomatch\" state=<<plugin-disable-title>> text=\"yes\">\n<$button set=<<plugin-disable-title>> setTo=\"yes\" tooltip={{$:/language/ControlPanel/Plugins/Disable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Disable/Caption}}>\n<<lingo Disable/Caption>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<plugin-disable-title>> text=\"yes\">\n<$button set=<<plugin-disable-title>> setTo=\"no\" tooltip={{$:/language/ControlPanel/Plugins/Enable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Enable/Caption}}>\n<<lingo Enable/Caption>>\n</$button>\n</$reveal>\n</div>\n</$list>\n<$reveal type=\"nomatch\" text=\"\" state=\"!!list\">\n<$set name=\"tabsList\" filter=\"[<currentTiddler>list[]] contents\">\n<$macrocall $name=\"tabs\" state=<<tabs-state-macro>> tabsList=<<tabsList>> default=\"readme\" template=\"$:/core/ui/PluginInfo\"/>\n</$set>\n</$reveal>\n<$reveal type=\"match\" text=\"\" state=\"!!list\">\n<<lingo NoInformation/Hint>>\n</$reveal>\n</div>\n</div>\n</$reveal>\n</$set>\n\\end\n\n<$macrocall $name=\"plugin-info\" type=<<plugin-type>> default-popup-state=<<default-popup-state>>/>\n"
        },
        "$:/core/ui/Components/tag-link": {
            "title": "$:/core/ui/Components/tag-link",
            "text": "<$link>\n<$set name=\"backgroundColor\" value={{!!color}}>\n<span style=<<tag-styles>> class=\"tc-tag-label\">\n<$view field=\"title\" format=\"text\"/>\n</span>\n</$set>\n</$link>"
        },
        "$:/core/ui/ControlPanel/Advanced": {
            "title": "$:/core/ui/ControlPanel/Advanced",
            "tags": "$:/tags/ControlPanel/Info",
            "caption": "{{$:/language/ControlPanel/Advanced/Caption}}",
            "text": "{{$:/language/ControlPanel/Advanced/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Advanced]!has[draft.of]]\" \"$:/core/ui/ControlPanel/TiddlerFields\">>\n</div>\n"
        },
        "$:/core/ui/ControlPanel/Appearance": {
            "title": "$:/core/ui/ControlPanel/Appearance",
            "tags": "$:/tags/ControlPanel",
            "caption": "{{$:/language/ControlPanel/Appearance/Caption}}",
            "text": "{{$:/language/ControlPanel/Appearance/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Appearance]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Theme\">>\n</div>\n"
        },
        "$:/core/ui/ControlPanel/Basics": {
            "title": "$:/core/ui/ControlPanel/Basics",
            "tags": "$:/tags/ControlPanel/Info",
            "caption": "{{$:/language/ControlPanel/Basics/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Basics/\n\n\\define show-filter-count(filter)\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $value=\"\"\"$filter$\"\"\"/>\n<$action-setfield $tiddler=\"$:/state/tab--1498284803\" $value=\"$:/core/ui/AdvancedSearch/Filter\"/>\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n''<$count filter=\"\"\"$filter$\"\"\"/>''\n{{$:/core/images/advanced-search-button}}\n</$button>\n\\end\n\n|<<lingo Version/Prompt>> |''<<version>>'' |\n|<$link to=\"$:/SiteTitle\"><<lingo Title/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/SiteSubtitle\"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/status/UserName\"><<lingo Username/Prompt>></$link> |<$edit-text tiddler=\"$:/status/UserName\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/AnimationDuration\"><<lingo AnimDuration/Prompt>></$link> |<$edit-text tiddler=\"$:/config/AnimationDuration\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/DefaultTiddlers\"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\" class=\"tc-edit-texteditor\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n|<$link to=\"$:/config/NewJournal/Title\"><<lingo NewJournal/Title/Prompt>></$link> |<$edit-text tiddler=\"$:/config/NewJournal/Title\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/NewJournal/Text\"><<lingo NewJournal/Text/Prompt>></$link> |<$edit tiddler=\"$:/config/NewJournal/Text\" tag=\"textarea\" class=\"tc-edit-texteditor\" default=\"\"/> |\n|<$link to=\"$:/config/NewJournal/Tags\"><<lingo NewJournal/Tags/Prompt>></$link> |<$edit-text tiddler=\"$:/config/NewJournal/Tags\" default=\"\" tag=\"input\"/> |\n|<<lingo Language/Prompt>> |{{$:/snippets/minilanguageswitcher}} |\n|<<lingo Tiddlers/Prompt>> |<<show-filter-count \"[!is[system]sort[title]]\">> |\n|<<lingo Tags/Prompt>> |<<show-filter-count \"[tags[]sort[title]]\">> |\n|<<lingo SystemTiddlers/Prompt>> |<<show-filter-count \"[is[system]sort[title]]\">> |\n|<<lingo ShadowTiddlers/Prompt>> |<<show-filter-count \"[all[shadows]sort[title]]\">> |\n|<<lingo OverriddenShadowTiddlers/Prompt>> |<<show-filter-count \"[is[tiddler]is[shadow]sort[title]]\">> |\n"
        },
        "$:/core/ui/ControlPanel/EditorTypes": {
            "title": "$:/core/ui/ControlPanel/EditorTypes",
            "tags": "$:/tags/ControlPanel/Advanced",
            "caption": "{{$:/language/ControlPanel/EditorTypes/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/EditorTypes/\n\n<<lingo Hint>>\n\n<table>\n<tbody>\n<tr>\n<th><<lingo Type/Caption>></th>\n<th><<lingo Editor/Caption>></th>\n</tr>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/config/EditorTypeMappings/]sort[title]]\">\n<tr>\n<td>\n<$link>\n<$list filter=\"[all[current]removeprefix[$:/config/EditorTypeMappings/]]\">\n<$text text={{!!title}}/>\n</$list>\n</$link>\n</td>\n<td>\n<$view field=\"text\"/>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
        },
        "$:/core/ui/ControlPanel/Info": {
            "title": "$:/core/ui/ControlPanel/Info",
            "tags": "$:/tags/ControlPanel",
            "caption": "{{$:/language/ControlPanel/Info/Caption}}",
            "text": "{{$:/language/ControlPanel/Info/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Info]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Basics\">>\n</div>\n"
        },
        "$:/core/ui/ControlPanel/KeyboardShortcuts": {
            "title": "$:/core/ui/ControlPanel/KeyboardShortcuts",
            "tags": "$:/tags/ControlPanel",
            "caption": "{{$:/language/ControlPanel/KeyboardShortcuts/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/KeyboardShortcuts/\n\n\\define new-shortcut(title)\n<div class=\"tc-dropdown-item-plain\">\n<$edit-shortcut tiddler=\"$title$\" placeholder={{$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt}} style=\"width:auto;\"/> <$button>\n<<lingo Add/Caption>>\n<$action-listops\n\t$tiddler=\"$(shortcutTitle)$\"\n\t$field=\"text\"\n\t$subfilter=\"[{$title$}]\"\n/>\n<$action-deletetiddler\n\t$tiddler=\"$title$\"\n/>\n</$button>\n</div>\n\\end\n\n\\define shortcut-list-item(caption)\n<td>\n</td>\n<td style=\"text-align:right;font-size:0.7em;\">\n<<lingo Platform/$caption$>>\n</td>\n<td>\n<div style=\"position:relative;\">\n<$button popup=<<qualify \"$:/state/dropdown/$(shortcutTitle)$\">> class=\"tc-btn-invisible\">\n{{$:/core/images/edit-button}}\n</$button>\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts={{$(shortcutTitle)$}} prefix=\"<kbd>\" separator=\"</kbd> <kbd>\" suffix=\"</kbd>\"/>\n\n<$reveal state=<<qualify \"$:/state/dropdown/$(shortcutTitle)$\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown tc-popup-keep\">\n<$list filter=\"[list[$(shortcutTitle)$!!text]sort[title]]\" variable=\"shortcut\" emptyMessage=\"\"\"\n<div class=\"tc-dropdown-item-plain\">\n//<<lingo NoShortcuts/Caption>>//\n</div>\n\"\"\">\n<div class=\"tc-dropdown-item-plain\">\n<$button class=\"tc-btn-invisible\" tooltip=<<lingo Remove/Hint>>>\n<$action-listops\n\t$tiddler=\"$(shortcutTitle)$\"\n\t$field=\"text\"\n\t$subfilter=\"+[remove<shortcut>]\"\n/>\n&times;\n</$button>\n<kbd>\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts=<<shortcut>>/>\n</kbd>\n</div>\n</$list>\n<hr/>\n<$macrocall $name=\"new-shortcut\" title=<<qualify \"$:/state/new-shortcut/$(shortcutTitle)$\">>/>\n</div>\n</div>\n</$reveal>\n</div>\n</td>\n\\end\n\n\\define shortcut-list(caption,prefix)\n<tr>\n<$list filter=\"[all[tiddlers+shadows][$prefix$$(shortcutName)$]]\" variable=\"shortcutTitle\">\n<<shortcut-list-item \"$caption$\">>\n</$list>\n</tr>\n\\end\n\n\\define shortcut-editor()\n<<shortcut-list \"All\" \"$:/config/shortcuts/\">>\n<<shortcut-list \"Mac\" \"$:/config/shortcuts-mac/\">>\n<<shortcut-list \"NonMac\" \"$:/config/shortcuts-not-mac/\">>\n<<shortcut-list \"Linux\" \"$:/config/shortcuts-linux/\">>\n<<shortcut-list \"NonLinux\" \"$:/config/shortcuts-not-linux/\">>\n<<shortcut-list \"Windows\" \"$:/config/shortcuts-windows/\">>\n<<shortcut-list \"NonWindows\" \"$:/config/shortcuts-not-windows/\">>\n\\end\n\n\\define shortcut-preview()\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts={{$(shortcutPrefix)$$(shortcutName)$}} prefix=\"<kbd>\" separator=\"</kbd> <kbd>\" suffix=\"</kbd>\"/>\n\\end\n\n\\define shortcut-item-inner()\n<tr>\n<td>\n<$reveal type=\"nomatch\" state=<<dropdownStateTitle>> text=\"open\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield\n\t$tiddler=<<dropdownStateTitle>>\n\t$value=\"open\"\n/>\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<dropdownStateTitle>> text=\"open\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield\n\t$tiddler=<<dropdownStateTitle>>\n\t$value=\"close\"\n/>\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n''<$text text=<<shortcutName>>/>''\n</td>\n<td>\n<$transclude tiddler=\"$:/config/ShortcutInfo/$(shortcutName)$\"/>\n</td>\n<td>\n<$list filter=\"$:/config/shortcuts/ $:/config/shortcuts-mac/ $:/config/shortcuts-not-mac/ $:/config/shortcuts-linux/ $:/config/shortcuts-not-linux/ $:/config/shortcuts-windows/ $:/config/shortcuts-not-windows/\" variable=\"shortcutPrefix\">\n<<shortcut-preview>>\n</$list>\n</td>\n</tr>\n<$set name=\"dropdownState\" value={{$(dropdownStateTitle)$}}>\n<$list filter=\"[<dropdownState>prefix[open]]\" variable=\"listItem\">\n<<shortcut-editor>>\n</$list>\n</$set>\n\\end\n\n\\define shortcut-item()\n<$set name=\"dropdownStateTitle\" value=<<qualify \"$:/state/dropdown/keyboardshortcut/$(shortcutName)$\">>>\n<<shortcut-item-inner>>\n</$set>\n\\end\n\n<table>\n<tbody>\n<$list filter=\"[all[shadows+tiddlers]removeprefix[$:/config/ShortcutInfo/]]\" variable=\"shortcutName\">\n<<shortcut-item>>\n</$list>\n</tbody>\n</table>\n"
        },
        "$:/core/ui/ControlPanel/LoadedModules": {
            "title": "$:/core/ui/ControlPanel/LoadedModules",
            "tags": "$:/tags/ControlPanel/Advanced",
            "caption": "{{$:/language/ControlPanel/LoadedModules/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/\n<<lingo LoadedModules/Hint>>\n\n{{$:/snippets/modules}}\n"
        },
        "$:/core/ui/ControlPanel/Modals/AddPlugins": {
            "title": "$:/core/ui/ControlPanel/Modals/AddPlugins",
            "subtitle": "{{$:/core/images/download-button}} {{$:/language/ControlPanel/Plugins/Add/Caption}}",
            "text": "\\define install-plugin-button()\n<$button>\n<$action-sendmessage $message=\"tm-load-plugin-from-library\" url={{!!url}} title={{$(assetInfo)$!!original-title}}/>\n<$list filter=\"[<assetInfo>get[original-title]get[version]]\" variable=\"installedVersion\" emptyMessage=\"\"\"{{$:/language/ControlPanel/Plugins/Install/Caption}}\"\"\">\n{{$:/language/ControlPanel/Plugins/Reinstall/Caption}}\n</$list>\n</$button>\n\\end\n\n\\define popup-state-macro()\n$:/state/add-plugin-info/$(connectionTiddler)$/$(assetInfo)$\n\\end\n\n\\define display-plugin-info(type)\n<$set name=\"popup-state\" value=<<popup-state-macro>>>\n<div class=\"tc-plugin-info\">\n<div class=\"tc-plugin-info-chunk tc-small-icon\">\n<$reveal type=\"nomatch\" state=<<popup-state>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"yes\">\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<popup-state>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"no\">\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n</div>\n<div class=\"tc-plugin-info-chunk\">\n<$list filter=\"[<assetInfo>has[icon]]\" emptyMessage=\"\"\"<$transclude tiddler=\"$:/core/images/plugin-generic-$type$\"/>\"\"\">\n<img src={{$(assetInfo)$!!icon}}/>\n</$list>\n</div>\n<div class=\"tc-plugin-info-chunk\">\n<h1><$view tiddler=<<assetInfo>> field=\"description\"/></h1>\n<h2><$view tiddler=<<assetInfo>> field=\"original-title\"/></h2>\n<div><em><$view tiddler=<<assetInfo>> field=\"version\"/></em></div>\n</div>\n<div class=\"tc-plugin-info-chunk\">\n<<install-plugin-button>>\n</div>\n</div>\n<$reveal type=\"match\" text=\"yes\" state=<<popup-state>>>\n<div class=\"tc-plugin-info-dropdown\">\n<div class=\"tc-plugin-info-dropdown-message\">\n<$list filter=\"[<assetInfo>get[original-title]get[version]]\" variable=\"installedVersion\" emptyMessage=\"\"\"{{$:/language/ControlPanel/Plugins/NotInstalled/Hint}}\"\"\">\n<em>\n{{$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint}}\n</em>\n</$list>\n</div>\n<div class=\"tc-plugin-info-dropdown-body\">\n<$transclude tiddler=<<assetInfo>> field=\"readme\" mode=\"block\"/>\n</div>\n</div>\n</$reveal>\n</$set>\n\\end\n\n\\define load-plugin-library-button()\n<$button class=\"tc-btn-big-green\">\n<$action-sendmessage $message=\"tm-load-plugin-library\" url={{!!url}} infoTitlePrefix=\"$:/temp/RemoteAssetInfo/\"/>\n{{$:/core/images/chevron-right}} {{$:/language/ControlPanel/Plugins/OpenPluginLibrary}}\n</$button>\n\\end\n\n\\define display-server-assets(type)\n{{$:/language/Search/Search}}: <$edit-text tiddler=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" default=\"\" type=\"search\" tag=\"input\"/>\n<$reveal state=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n<div class=\"tc-plugin-library-listing\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]search{$:/temp/RemoteAssetSearch/$(currentTiddler)$}sort[description]]\" variable=\"assetInfo\">\n<<display-plugin-info \"$type$\">>\n</$list>\n</div>\n\\end\n\n\\define display-server-connection()\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/ServerConnection]suffix{!!url}]\" variable=\"connectionTiddler\" emptyMessage=<<load-plugin-library-button>>>\n\n<<tabs \"[[$:/core/ui/ControlPanel/Plugins/Add/Plugins]] [[$:/core/ui/ControlPanel/Plugins/Add/Themes]] [[$:/core/ui/ControlPanel/Plugins/Add/Languages]]\" \"$:/core/ui/ControlPanel/Plugins/Add/Plugins\">>\n\n</$list>\n\\end\n\n\\define close-library-button()\n<$reveal type='nomatch' state='$:/temp/ServerConnection/$(PluginLibraryURL)$' text=''>\n<$button class='tc-btn-big-green'>\n<$action-sendmessage $message=\"tm-unload-plugin-library\" url={{!!url}}/>\n{{$:/core/images/chevron-left}} {{$:/language/ControlPanel/Plugins/ClosePluginLibrary}}\n<$action-deletetiddler $filter=\"[prefix[$:/temp/ServerConnection/$(PluginLibraryURL)$]][prefix[$:/temp/RemoteAssetInfo/$(PluginLibraryURL)$]]\"/>\n</$button>\n</$reveal>\n\\end\n\n\\define plugin-library-listing()\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/PluginLibrary]]\">\n<div class=\"tc-plugin-library\">\n\n!! <$link><$transclude field=\"caption\"><$view field=\"title\"/></$transclude></$link>\n\n//<$view field=\"url\"/>//\n\n<$transclude/>\n\n<$set name=PluginLibraryURL value={{!!url}}>\n<<close-library-button>>\n</$set>\n\n<<display-server-connection>>\n</div>\n</$list>\n\\end\n\n<$importvariables filter=\"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\">\n\n<div>\n<<plugin-library-listing>>\n</div>\n\n</$importvariables>\n"
        },
        "$:/core/ui/ControlPanel/Palette": {
            "title": "$:/core/ui/ControlPanel/Palette",
            "tags": "$:/tags/ControlPanel/Appearance",
            "caption": "{{$:/language/ControlPanel/Palette/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Palette/\n\n{{$:/snippets/paletteswitcher}}\n\n<$reveal type=\"nomatch\" state=\"$:/state/ShowPaletteEditor\" text=\"yes\">\n\n<$button set=\"$:/state/ShowPaletteEditor\" setTo=\"yes\"><<lingo ShowEditor/Caption>></$button>\n\n</$reveal>\n\n<$reveal type=\"match\" state=\"$:/state/ShowPaletteEditor\" text=\"yes\">\n\n<$button set=\"$:/state/ShowPaletteEditor\" setTo=\"no\"><<lingo HideEditor/Caption>></$button>\n{{$:/snippets/paletteeditor}}\n\n</$reveal>\n\n"
        },
        "$:/core/ui/ControlPanel/Parsing": {
            "title": "$:/core/ui/ControlPanel/Parsing",
            "tags": "$:/tags/ControlPanel/Advanced",
            "caption": "{{$:/language/ControlPanel/Parsing/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Parsing/\n\n\\define toggle(Type)\n<$checkbox\ntiddler=\"\"\"$:/config/WikiParserRules/$Type$/$(rule)$\"\"\"\nfield=\"text\"\nchecked=\"enable\"\nunchecked=\"disable\"\ndefault=\"enable\">\n<<rule>>\n</$checkbox>\n\\end\n\n\\define rules(type,Type)\n<$list filter=\"[wikiparserrules[$type$]]\" variable=\"rule\">\n<dd><<toggle $Type$>></dd>\n</$list>\n\\end\n\n<<lingo Hint>>\n\n<dl>\n<dt><<lingo Pragma/Caption>></dt>\n<<rules pragma Pragma>>\n<dt><<lingo Inline/Caption>></dt>\n<<rules inline Inline>>\n<dt><<lingo Block/Caption>></dt>\n<<rules block Block>>\n</dl>"
        },
        "$:/core/ui/ControlPanel/Plugins/Add/Languages": {
            "title": "$:/core/ui/ControlPanel/Plugins/Add/Languages",
            "caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}} (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[language]]\"/>)",
            "text": "<<display-server-assets language>>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/Add/Plugins": {
            "title": "$:/core/ui/ControlPanel/Plugins/Add/Plugins",
            "caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}}  (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[plugin]]\"/>)",
            "text": "<<display-server-assets plugin>>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/Add/Themes": {
            "title": "$:/core/ui/ControlPanel/Plugins/Add/Themes",
            "caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}}  (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[theme]]\"/>)",
            "text": "<<display-server-assets theme>>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/AddPlugins": {
            "title": "$:/core/ui/ControlPanel/Plugins/AddPlugins",
            "text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n<$button message=\"tm-modal\" param=\"$:/core/ui/ControlPanel/Modals/AddPlugins\" tooltip={{$:/language/ControlPanel/Plugins/Add/Hint}} class=\"tc-btn-big-green\" style=\"background:blue;\">\n{{$:/core/images/download-button}} <<lingo Add/Caption>>\n</$button>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/Installed/Languages": {
            "title": "$:/core/ui/ControlPanel/Plugins/Installed/Languages",
            "caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[language]]\"/>)",
            "text": "<<plugin-table language>>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/Installed/Plugins": {
            "title": "$:/core/ui/ControlPanel/Plugins/Installed/Plugins",
            "caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[plugin]]\"/>)",
            "text": "<<plugin-table plugin>>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/Installed/Themes": {
            "title": "$:/core/ui/ControlPanel/Plugins/Installed/Themes",
            "caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[theme]]\"/>)",
            "text": "<<plugin-table theme>>\n"
        },
        "$:/core/ui/ControlPanel/Plugins": {
            "title": "$:/core/ui/ControlPanel/Plugins",
            "tags": "$:/tags/ControlPanel",
            "caption": "{{$:/language/ControlPanel/Plugins/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n\\define plugin-table(type)\n<$set name=\"plugin-type\" value=\"\"\"$type$\"\"\">\n<$set name=\"qualified-state\" value=<<qualify \"$:/state/plugin-info\">>>\n<$list filter=\"[!has[draft.of]plugin-type[$type$]sort[description]]\" emptyMessage=<<lingo \"Empty/Hint\">> template=\"$:/core/ui/Components/plugin-info\"/>\n</$set>\n</$set>\n\\end\n\n{{$:/core/ui/ControlPanel/Plugins/AddPlugins}}\n\n<<lingo Installed/Hint>>\n\n<<tabs \"[[$:/core/ui/ControlPanel/Plugins/Installed/Plugins]] [[$:/core/ui/ControlPanel/Plugins/Installed/Themes]] [[$:/core/ui/ControlPanel/Plugins/Installed/Languages]]\" \"$:/core/ui/ControlPanel/Plugins/Installed/Plugins\">>\n"
        },
        "$:/core/ui/ControlPanel/Saving/DownloadSaver": {
            "title": "$:/core/ui/ControlPanel/Saving/DownloadSaver",
            "tags": "$:/tags/ControlPanel/Saving",
            "caption": "{{$:/language/ControlPanel/Saving/DownloadSaver/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Saving/DownloadSaver/\n\n<<lingo Hint>>\n\n!! <$link to=\"$:/config/DownloadSaver/AutoSave\"><<lingo AutoSave/Hint>></$link>\n\n<$checkbox tiddler=\"$:/config/DownloadSaver/AutoSave\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <<lingo AutoSave/Description>> </$checkbox>\n"
        },
        "$:/core/ui/ControlPanel/Saving/General": {
            "title": "$:/core/ui/ControlPanel/Saving/General",
            "tags": "$:/tags/ControlPanel/Saving",
            "caption": "{{$:/language/ControlPanel/Saving/General/Caption}}",
            "list-before": "",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/\n\n{{$:/language/ControlPanel/Saving/General/Hint}}\n\n!! <$link to=\"$:/config/AutoSave\"><<lingo AutoSave/Caption>></$link>\n\n<<lingo AutoSave/Hint>>\n\n<$radio tiddler=\"$:/config/AutoSave\" value=\"yes\"> <<lingo AutoSave/Enabled/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/AutoSave\" value=\"no\"> <<lingo AutoSave/Disabled/Description>> </$radio>\n"
        },
        "$:/core/ui/ControlPanel/Saving/TiddlySpot": {
            "title": "$:/core/ui/ControlPanel/Saving/TiddlySpot",
            "tags": "$:/tags/ControlPanel/Saving",
            "caption": "{{$:/language/ControlPanel/Saving/TiddlySpot/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Saving/TiddlySpot/\n\n\\define backupURL()\nhttp://$(userName)$.tiddlyspot.com/backup/\n\\end\n\\define backupLink()\n<$reveal type=\"nomatch\" state=\"$:/UploadName\" text=\"\">\n<$set name=\"userName\" value={{$:/UploadName}}>\n<$reveal type=\"match\" state=\"$:/UploadURL\" text=\"\">\n<<backupURL>>\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/UploadURL\" text=\"\">\n<$macrocall $name=resolvePath source={{$:/UploadBackupDir}} root={{$:/UploadURL}}>>\n</$reveal>\n</$set>\n</$reveal>\n\\end\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/UploadName\" default=\"\" tag=\"input\"/> |\n|<<lingo Password>> |<$password name=\"upload\"/> |\n|<<lingo Backups>> |<<backupLink>> |\n\n''<<lingo Advanced/Heading>>''\n\n|<<lingo ServerURL>>  |<$edit-text tiddler=\"$:/UploadURL\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/UploadFilename\" default=\"index.html\" tag=\"input\"/> |\n|<<lingo UploadDir>> |<$edit-text tiddler=\"$:/UploadDir\" default=\".\" tag=\"input\"/> |\n|<<lingo BackupDir>> |<$edit-text tiddler=\"$:/UploadBackupDir\" default=\".\" tag=\"input\"/> |\n\n<<lingo TiddlySpot/Hint>>"
        },
        "$:/core/ui/ControlPanel/Saving": {
            "title": "$:/core/ui/ControlPanel/Saving",
            "tags": "$:/tags/ControlPanel",
            "caption": "{{$:/language/ControlPanel/Saving/Caption}}",
            "text": "{{$:/language/ControlPanel/Saving/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Saving]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Saving/General\">>\n</div>\n"
        },
        "$:/core/buttonstyles/Borderless": {
            "title": "$:/core/buttonstyles/Borderless",
            "tags": "$:/tags/ToolbarButtonStyle",
            "caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless}}",
            "text": "tc-btn-invisible"
        },
        "$:/core/buttonstyles/Boxed": {
            "title": "$:/core/buttonstyles/Boxed",
            "tags": "$:/tags/ToolbarButtonStyle",
            "caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed}}",
            "text": "tc-btn-boxed"
        },
        "$:/core/buttonstyles/Rounded": {
            "title": "$:/core/buttonstyles/Rounded",
            "tags": "$:/tags/ToolbarButtonStyle",
            "caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded}}",
            "text": "tc-btn-rounded"
        },
        "$:/core/ui/ControlPanel/Settings/CamelCase": {
            "title": "$:/core/ui/ControlPanel/Settings/CamelCase",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/CamelCase/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/CamelCase/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/WikiParserRules/Inline/wikilink\" field=\"text\" checked=\"enable\" unchecked=\"disable\" default=\"enable\"> <$link to=\"$:/config/WikiParserRules/Inline/wikilink\"><<lingo Description>></$link> </$checkbox>\n"
        },
        "$:/core/ui/ControlPanel/Settings/DefaultSidebarTab": {
            "caption": "{{$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption}}",
            "tags": "$:/tags/ControlPanel/Settings",
            "title": "$:/core/ui/ControlPanel/Settings/DefaultSidebarTab",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/DefaultSidebarTab/\n\n<$link to=\"$:/config/DefaultSidebarTab\"><<lingo Hint>></$link>\n\n<$select tiddler=\"$:/config/DefaultSidebarTab\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\">\n<option value=<<currentTiddler>>><$transclude field=\"caption\"><$text text=<<currentTiddler>>/></$transclude></option>\n</$list>\n</$select>\n"
        },
        "$:/core/ui/ControlPanel/Settings/EditorToolbar": {
            "title": "$:/core/ui/ControlPanel/Settings/EditorToolbar",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/EditorToolbar/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/EditorToolbar/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/TextEditor/EnableToolbar\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/TextEditor/EnableToolbar\"><<lingo Description>></$link> </$checkbox>\n\n"
        },
        "$:/core/ui/ControlPanel/Settings/InfoPanelMode": {
            "title": "$:/core/ui/ControlPanel/Settings/InfoPanelMode",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/InfoPanelMode/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/InfoPanelMode/\n<$link to=\"$:/config/TiddlerInfo/Mode\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/TiddlerInfo/Mode\" value=\"popup\"> <<lingo Popup/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/TiddlerInfo/Mode\" value=\"sticky\"> <<lingo Sticky/Description>> </$radio>\n"
        },
        "$:/core/ui/ControlPanel/Settings/LinkToBehaviour": {
            "title": "$:/core/ui/ControlPanel/Settings/LinkToBehaviour",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/LinkToBehaviour/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/LinkToBehaviour/\n\n<$link to=\"$:/config/Navigation/openLinkFromInsideRiver\"><<lingo \"InsideRiver/Hint\">></$link>\n\n<$select tiddler=\"$:/config/Navigation/openLinkFromInsideRiver\">\n  <option value=\"above\"><<lingo \"OpenAbove\">></option>\n  <option value=\"below\"><<lingo \"OpenBelow\">></option>\n  <option value=\"top\"><<lingo \"OpenAtTop\">></option>\n  <option value=\"bottom\"><<lingo \"OpenAtBottom\">></option>\n</$select>\n\n<$link to=\"$:/config/Navigation/openLinkFromOutsideRiver\"><<lingo \"OutsideRiver/Hint\">></$link>\n\n<$select tiddler=\"$:/config/Navigation/openLinkFromOutsideRiver\">\n  <option value=\"top\"><<lingo \"OpenAtTop\">></option>\n  <option value=\"bottom\"><<lingo \"OpenAtBottom\">></option>\n</$select>\n"
        },
        "$:/core/ui/ControlPanel/Settings/MissingLinks": {
            "title": "$:/core/ui/ControlPanel/Settings/MissingLinks",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/MissingLinks/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/MissingLinks/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/MissingLinks\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/MissingLinks\"><<lingo Description>></$link> </$checkbox>\n\n"
        },
        "$:/core/ui/ControlPanel/Settings/NavigationAddressBar": {
            "title": "$:/core/ui/ControlPanel/Settings/NavigationAddressBar",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/NavigationAddressBar/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationAddressBar/\n\n<$link to=\"$:/config/Navigation/UpdateAddressBar\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"permaview\"> <<lingo Permaview/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"permalink\"> <<lingo Permalink/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
        },
        "$:/core/ui/ControlPanel/Settings/NavigationHistory": {
            "title": "$:/core/ui/ControlPanel/Settings/NavigationHistory",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/NavigationHistory/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationHistory/\n<$link to=\"$:/config/Navigation/UpdateHistory\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateHistory\" value=\"yes\"> <<lingo Yes/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateHistory\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
        },
        "$:/core/ui/ControlPanel/Settings/PerformanceInstrumentation": {
            "title": "$:/core/ui/ControlPanel/Settings/PerformanceInstrumentation",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/PerformanceInstrumentation/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Performance/Instrumentation\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <$link to=\"$:/config/Performance/Instrumentation\"><<lingo Description>></$link> </$checkbox>\n"
        },
        "$:/core/ui/ControlPanel/Settings/TitleLinks": {
            "title": "$:/core/ui/ControlPanel/Settings/TitleLinks",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/TitleLinks/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/TitleLinks/\n<$link to=\"$:/config/Tiddlers/TitleLinks\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Tiddlers/TitleLinks\" value=\"yes\"> <<lingo Yes/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Tiddlers/TitleLinks\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
        },
        "$:/core/ui/ControlPanel/Settings/ToolbarButtonStyle": {
            "title": "$:/core/ui/ControlPanel/Settings/ToolbarButtonStyle",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/ToolbarButtonStyle/\n<$link to=\"$:/config/Toolbar/ButtonClass\"><<lingo \"Hint\">></$link>\n\n<$select tiddler=\"$:/config/Toolbar/ButtonClass\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ToolbarButtonStyle]]\">\n<option value={{!!text}}>{{!!caption}}</option>\n</$list>\n</$select>\n"
        },
        "$:/core/ui/ControlPanel/Settings/ToolbarButtons": {
            "title": "$:/core/ui/ControlPanel/Settings/ToolbarButtons",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/ToolbarButtons/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/ToolbarButtons/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Toolbar/Icons\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Toolbar/Icons\"><<lingo Icons/Description>></$link> </$checkbox>\n\n<$checkbox tiddler=\"$:/config/Toolbar/Text\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <$link to=\"$:/config/Toolbar/Text\"><<lingo Text/Description>></$link> </$checkbox>\n"
        },
        "$:/core/ui/ControlPanel/Settings": {
            "title": "$:/core/ui/ControlPanel/Settings",
            "tags": "$:/tags/ControlPanel",
            "caption": "{{$:/language/ControlPanel/Settings/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/\n\n<<lingo Hint>>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Settings]]\">\n\n<div style=\"border-top:1px solid #eee;\">\n\n!! <$link><$transclude field=\"caption\"/></$link>\n\n<$transclude/>\n\n</div>\n\n</$list>\n"
        },
        "$:/core/ui/ControlPanel/StoryView": {
            "title": "$:/core/ui/ControlPanel/StoryView",
            "tags": "$:/tags/ControlPanel/Appearance",
            "caption": "{{$:/language/ControlPanel/StoryView/Caption}}",
            "text": "{{$:/snippets/viewswitcher}}\n"
        },
        "$:/core/ui/ControlPanel/Theme": {
            "title": "$:/core/ui/ControlPanel/Theme",
            "tags": "$:/tags/ControlPanel/Appearance",
            "caption": "{{$:/language/ControlPanel/Theme/Caption}}",
            "text": "{{$:/snippets/themeswitcher}}\n"
        },
        "$:/core/ui/ControlPanel/TiddlerFields": {
            "title": "$:/core/ui/ControlPanel/TiddlerFields",
            "tags": "$:/tags/ControlPanel/Advanced",
            "caption": "{{$:/language/ControlPanel/TiddlerFields/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/\n\n<<lingo TiddlerFields/Hint>>\n\n{{$:/snippets/allfields}}"
        },
        "$:/core/ui/ControlPanel/Toolbars/EditToolbar": {
            "title": "$:/core/ui/ControlPanel/Toolbars/EditToolbar",
            "tags": "$:/tags/ControlPanel/Toolbars",
            "caption": "{{$:/language/ControlPanel/Toolbars/EditToolbar/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/EditToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/EditToolbar/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/EditToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>"
        },
        "$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate": {
            "title": "$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate",
            "text": "\\define config-title()\n$(config-base)$$(currentTiddler)$\n\\end\n\n<$draggable tiddler=<<currentTiddler>>>\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <span class=\"tc-icon-wrapper\"><$transclude tiddler={{!!icon}}/></span> <$transclude field=\"caption\"/> -- <i class=\"tc-muted\"><$transclude field=\"description\"/></i>\n</$draggable>\n"
        },
        "$:/core/ui/ControlPanel/Toolbars/EditorToolbar": {
            "title": "$:/core/ui/ControlPanel/Toolbars/EditorToolbar",
            "tags": "$:/tags/ControlPanel/Toolbars",
            "caption": "{{$:/language/ControlPanel/Toolbars/EditorToolbar/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/EditorToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/EditorToolbar/Hint}}\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/EditorToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate\"/>\n"
        },
        "$:/core/ui/ControlPanel/Toolbars/ItemTemplate": {
            "title": "$:/core/ui/ControlPanel/Toolbars/ItemTemplate",
            "text": "\\define config-title()\n$(config-base)$$(currentTiddler)$\n\\end\n\n<$draggable tiddler=<<currentTiddler>>>\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <span class=\"tc-icon-wrapper\"> <$transclude field=\"caption\"/> <i class=\"tc-muted\">-- <$transclude field=\"description\"/></i></span>\n</$draggable>\n"
        },
        "$:/core/ui/ControlPanel/Toolbars/PageControls": {
            "title": "$:/core/ui/ControlPanel/Toolbars/PageControls",
            "tags": "$:/tags/ControlPanel/Toolbars",
            "caption": "{{$:/language/ControlPanel/Toolbars/PageControls/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/PageControlButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/PageControls/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/PageControls\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>\n"
        },
        "$:/core/ui/ControlPanel/Toolbars/ViewToolbar": {
            "title": "$:/core/ui/ControlPanel/Toolbars/ViewToolbar",
            "tags": "$:/tags/ControlPanel/Toolbars",
            "caption": "{{$:/language/ControlPanel/Toolbars/ViewToolbar/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/ViewToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/ViewToolbar/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/ViewToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>\n"
        },
        "$:/core/ui/ControlPanel/Toolbars": {
            "title": "$:/core/ui/ControlPanel/Toolbars",
            "tags": "$:/tags/ControlPanel/Appearance",
            "caption": "{{$:/language/ControlPanel/Toolbars/Caption}}",
            "text": "{{$:/language/ControlPanel/Toolbars/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Toolbars]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Toolbars/ViewToolbar\" \"$:/state/tabs/controlpanel/toolbars\" \"tc-vertical\">>\n</div>\n"
        },
        "$:/ControlPanel": {
            "title": "$:/ControlPanel",
            "icon": "$:/core/images/options-button",
            "color": "#bbb",
            "text": "<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Info\">>\n</div>\n"
        },
        "$:/core/ui/DefaultSearchResultList": {
            "title": "$:/core/ui/DefaultSearchResultList",
            "tags": "$:/tags/SearchResults",
            "caption": "{{$:/language/Search/DefaultResults/Caption}}",
            "text": "\\define searchResultList()\n//<small>{{$:/language/Search/Matches/Title}}</small>//\n\n<$list filter=\"[!is[system]search:title{$(searchTiddler)$}sort[title]limit[250]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n//<small>{{$:/language/Search/Matches/All}}</small>//\n\n<$list filter=\"[!is[system]search{$(searchTiddler)$}sort[title]limit[250]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n\\end\n<<searchResultList>>\n"
        },
        "$:/core/ui/EditTemplate/body/preview/output": {
            "title": "$:/core/ui/EditTemplate/body/preview/output",
            "tags": "$:/tags/EditPreview",
            "caption": "{{$:/language/EditTemplate/Body/Preview/Type/Output}}",
            "text": "<$set name=\"tv-tiddler-preview\" value=\"yes\">\n\n<$transclude />\n\n</$set>\n"
        },
        "$:/core/ui/EditTemplate/body/editor": {
            "title": "$:/core/ui/EditTemplate/body/editor",
            "text": "<$edit\n\n  field=\"text\"\n  class=\"tc-edit-texteditor\"\n  placeholder={{$:/language/EditTemplate/Body/Placeholder}}\n\n><$set\n\n  name=\"targetTiddler\"\n  value=<<currentTiddler>>\n\n><$list\n\n  filter=\"[all[shadows+tiddlers]tag[$:/tags/EditorToolbar]!has[draft.of]]\"\n\n><$reveal\n\n  type=\"nomatch\"\n  state=<<config-visibility-title>>\n  text=\"hide\"\n  class=\"tc-text-editor-toolbar-item-wrapper\"\n\n><$transclude\n\n  tiddler=\"$:/core/ui/EditTemplate/body/toolbar/button\"\n  mode=\"inline\"\n\n/></$reveal></$list></$set></$edit>\n"
        },
        "$:/core/ui/EditTemplate/body/toolbar/button": {
            "title": "$:/core/ui/EditTemplate/body/toolbar/button",
            "text": "\\define toolbar-button-icon()\n<$list\n\n  filter=\"[all[current]!has[custom-icon]]\"\n  variable=\"no-custom-icon\"\n\n><$transclude\n\n  tiddler={{!!icon}}\n\n/></$list>\n\\end\n\n\\define toolbar-button-tooltip()\n{{!!description}}<$macrocall $name=\"displayshortcuts\" $output=\"text/plain\" shortcuts={{!!shortcuts}} prefix=\"` - [\" separator=\"] [\" suffix=\"]`\"/>\n\\end\n\n\\define toolbar-button()\n<$list\n\n  filter={{!!condition}}\n  variable=\"list-condition\"\n\n><$wikify\n\n  name=\"tooltip-text\"\n  text=<<toolbar-button-tooltip>>\n  mode=\"inline\"\n  output=\"text\"\n\n><$list\n\n  filter=\"[all[current]!has[dropdown]]\"\n  variable=\"no-dropdown\"\n\n><$button\n\n  class=\"tc-btn-invisible $(buttonClasses)$\"\n  tooltip=<<tooltip-text>>\n\n><span\n\n  data-tw-keyboard-shortcut={{!!shortcuts}}\n\n/><<toolbar-button-icon>><$transclude\n\n  tiddler=<<currentTiddler>>\n  field=\"text\"\n\n/></$button></$list><$list\n\n  filter=\"[all[current]has[dropdown]]\"\n  variable=\"dropdown\"\n\n><$set\n\n  name=\"dropdown-state\"\n  value=<<qualify \"$:/state/EditorToolbarDropdown\">>\n\n><$button\n\n  popup=<<dropdown-state>>\n  class=\"tc-popup-keep tc-btn-invisible $(buttonClasses)$\"\n  selectedClass=\"tc-selected\"\n  tooltip=<<tooltip-text>>\n\n><span\n\n  data-tw-keyboard-shortcut={{!!shortcuts}}\n\n/><<toolbar-button-icon>><$transclude\n\n  tiddler=<<currentTiddler>>\n  field=\"text\"\n\n/></$button><$reveal\n\n  state=<<dropdown-state>>\n  type=\"popup\"\n  position=\"below\"\n  animate=\"yes\"\n  tag=\"span\"\n\n><div\n\n  class=\"tc-drop-down tc-popup-keep\"\n\n><$transclude\n\n  tiddler={{!!dropdown}}\n  mode=\"block\"\n\n/></div></$reveal></$set></$list></$wikify></$list>\n\\end\n\n\\define toolbar-button-outer()\n<$set\n\n  name=\"buttonClasses\"\n  value={{!!button-classes}}\n\n><<toolbar-button>></$set>\n\\end\n\n<<toolbar-button-outer>>"
        },
        "$:/core/ui/EditTemplate/body": {
            "title": "$:/core/ui/EditTemplate/body",
            "tags": "$:/tags/EditTemplate",
            "text": "\\define lingo-base() $:/language/EditTemplate/Body/\n\\define config-visibility-title()\n$:/config/EditorToolbarButtons/Visibility/$(currentTiddler)$\n\\end\n<$list filter=\"[is[current]has[_canonical_uri]]\">\n\n<div class=\"tc-message-box\">\n\n<<lingo External/Hint>>\n\n<a href={{!!_canonical_uri}}><$text text={{!!_canonical_uri}}/></a>\n\n<$edit-text field=\"_canonical_uri\" class=\"tc-edit-fields\"></$edit-text>\n\n</div>\n\n</$list>\n\n<$list filter=\"[is[current]!has[_canonical_uri]]\">\n\n<$reveal state=\"$:/state/showeditpreview\" type=\"match\" text=\"yes\">\n\n<div class=\"tc-tiddler-preview\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/editor\" mode=\"inline\"/>\n\n<div class=\"tc-tiddler-preview-preview\">\n\n<$transclude tiddler={{$:/state/editpreviewtype}} mode=\"inline\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/preview/output\" mode=\"inline\"/>\n\n</$transclude>\n\n</div>\n\n</div>\n\n</$reveal>\n\n<$reveal state=\"$:/state/showeditpreview\" type=\"nomatch\" text=\"yes\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/editor\" mode=\"inline\"/>\n\n</$reveal>\n\n</$list>\n"
        },
        "$:/core/ui/EditTemplate/controls": {
            "title": "$:/core/ui/EditTemplate/controls",
            "tags": "$:/tags/EditTemplate",
            "text": "\\define config-title()\n$:/config/EditToolbarButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-tiddler-title tc-tiddler-edit-title\">\n<$view field=\"title\"/>\n<span class=\"tc-tiddler-controls tc-titlebar\"><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditToolbar]!has[draft.of]]\" variable=\"listItem\"><$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\"><$transclude tiddler=<<listItem>>/></$reveal></$list></span>\n<div style=\"clear: both;\"></div>\n</div>\n"
        },
        "$:/core/ui/EditTemplate/fields": {
            "title": "$:/core/ui/EditTemplate/fields",
            "tags": "$:/tags/EditTemplate",
            "text": "\\define lingo-base() $:/language/EditTemplate/\n\\define config-title()\n$:/config/EditTemplateFields/Visibility/$(currentField)$\n\\end\n\n\\define config-filter()\n[[hide]] -[title{$(config-title)$}]\n\\end\n\n\\define new-field-inner()\n<$reveal type=\"nomatch\" text=\"\" default=<<name>>>\n<$button>\n<$action-sendmessage $message=\"tm-add-field\" $name=<<name>> $value=<<value>>/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldname\"/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldvalue\"/>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" text=\"\" default=<<name>>>\n<$button>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n\\end\n\n\\define new-field()\n<$set name=\"name\" value={{$:/temp/newfieldname}}>\n<$set name=\"value\" value={{$:/temp/newfieldvalue}}>\n<<new-field-inner>>\n</$set>\n</$set>\n\\end\n\n<div class=\"tc-edit-fields\">\n<table class=\"tc-edit-fields\">\n<tbody>\n<$list filter=\"[all[current]fields[]] +[sort[title]]\" variable=\"currentField\">\n<$list filter=<<config-filter>> variable=\"temp\">\n<tr class=\"tc-edit-field\">\n<td class=\"tc-edit-field-name\">\n<$text text=<<currentField>>/>:</td>\n<td class=\"tc-edit-field-value\">\n<$edit-text tiddler=<<currentTiddler>> field=<<currentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}}/>\n</td>\n<td class=\"tc-edit-field-remove\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/language/EditTemplate/Field/Remove/Hint}} aria-label={{$:/language/EditTemplate/Field/Remove/Caption}}>\n<$action-deletefield $field=<<currentField>>/>\n{{$:/core/images/delete-button}}\n</$button>\n</td>\n</tr>\n</$list>\n</$list>\n</tbody>\n</table>\n</div>\n\n<$fieldmangler>\n<div class=\"tc-edit-field-add\">\n<em class=\"tc-edit\">\n<<lingo Fields/Add/Prompt>>\n</em>\n<span class=\"tc-edit-field-add-name\">\n<$edit-text tiddler=\"$:/temp/newfieldname\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}} focusPopup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-edit-texteditor tc-popup-handle\"/>\n</span>\n<$button popup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-btn-invisible tc-btn-dropdown\" tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button>\n<$reveal state=<<qualify \"$:/state/popup/field-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$linkcatcher to=\"$:/temp/newfieldname\">\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/User>>\n</div>\n<$list filter=\"[!is[shadow]!is[system]fields[]search:title{$:/temp/newfieldname}sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type\"  variable=\"currentField\">\n<$link to=<<currentField>>>\n<<currentField>>\n</$link>\n</$list>\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/System>>\n</div>\n<$list filter=\"[fields[]search:title{$:/temp/newfieldname}sort[]] -[!is[shadow]!is[system]fields[]]\" variable=\"currentField\">\n<$link to=<<currentField>>>\n<<currentField>>\n</$link>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>\n<span class=\"tc-edit-field-add-value\">\n<$edit-text tiddler=\"$:/temp/newfieldvalue\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} class=\"tc-edit-texteditor\"/>\n</span>\n<span class=\"tc-edit-field-add-button\">\n<$macrocall $name=\"new-field\"/>\n</span>\n</div>\n</$fieldmangler>\n"
        },
        "$:/core/ui/EditTemplate/shadow": {
            "title": "$:/core/ui/EditTemplate/shadow",
            "tags": "$:/tags/EditTemplate",
            "text": "\\define lingo-base() $:/language/EditTemplate/Shadow/\n\\define pluginLinkBody()\n<$link to=\"\"\"$(pluginTitle)$\"\"\">\n<$text text=\"\"\"$(pluginTitle)$\"\"\"/>\n</$link>\n\\end\n<$list filter=\"[all[current]get[draft.of]is[shadow]!is[tiddler]]\">\n\n<$list filter=\"[all[current]shadowsource[]]\" variable=\"pluginTitle\">\n\n<$set name=\"pluginLink\" value=<<pluginLinkBody>>>\n<div class=\"tc-message-box\">\n\n<<lingo Warning>>\n\n</div>\n</$set>\n</$list>\n\n</$list>\n\n<$list filter=\"[all[current]get[draft.of]is[shadow]is[tiddler]]\">\n\n<$list filter=\"[all[current]shadowsource[]]\" variable=\"pluginTitle\">\n\n<$set name=\"pluginLink\" value=<<pluginLinkBody>>>\n<div class=\"tc-message-box\">\n\n<<lingo OverriddenWarning>>\n\n</div>\n</$set>\n</$list>\n\n</$list>"
        },
        "$:/core/ui/EditTemplate/tags": {
            "title": "$:/core/ui/EditTemplate/tags",
            "tags": "$:/tags/EditTemplate",
            "text": "\\define lingo-base() $:/language/EditTemplate/\n\n\\define tag-styles()\nbackground-color:$(backgroundColor)$;\nfill:$(foregroundColor)$;\ncolor:$(foregroundColor)$;\n\\end\n\n\\define tag-body-inner(colour,fallbackTarget,colourA,colourB)\n<$vars foregroundColor=<<contrastcolour target:\"\"\"$colour$\"\"\" fallbackTarget:\"\"\"$fallbackTarget$\"\"\" colourA:\"\"\"$colourA$\"\"\" colourB:\"\"\"$colourB$\"\"\">> backgroundColor=\"\"\"$colour$\"\"\">\n<span style=<<tag-styles>> class=\"tc-tag-label\">\n<$view field=\"title\" format=\"text\" />\n<$button message=\"tm-remove-tag\" param={{!!title}} class=\"tc-btn-invisible tc-remove-tag-button\">&times;</$button>\n</span>\n</$vars>\n\\end\n\n\\define tag-body(colour,palette)\n<$macrocall $name=\"tag-body-inner\" colour=\"\"\"$colour$\"\"\" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}}/>\n\\end\n\n\\define tag-picker-actions()\n<$action-listops\n\t$tiddler=<<currentTiddler>>\n\t$field=\"tags\"\n\t$subfilter=\"[<tag>] [all[current]tags[]]\"\n/>\n\\end\n\n<div class=\"tc-edit-tags\">\n<$fieldmangler>\n<$list filter=\"[all[current]tags[]sort[title]]\" storyview=\"pop\">\n<$macrocall $name=\"tag-body\" colour={{!!color}} palette={{$:/palette}}/>\n</$list>\n</$fieldmangler>\n<$macrocall $name=\"tag-picker\" actions=<<tag-picker-actions>>/>\n</div>\n"
        },
        "$:/core/ui/EditTemplate/title": {
            "title": "$:/core/ui/EditTemplate/title",
            "tags": "$:/tags/EditTemplate",
            "text": "<$edit-text field=\"draft.title\" class=\"tc-titlebar tc-edit-texteditor\" focus=\"true\"/>\n\n<$vars pattern=\"\"\"[\\|\\[\\]{}]\"\"\" bad-chars=\"\"\"`| [ ] { }`\"\"\">\n\n<$list filter=\"[is[current]regexp:draft.title<pattern>]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/BadCharacterWarning}}\n\n</div>\n\n</$list>\n\n</$vars>\n\n<$reveal state=\"!!draft.title\" type=\"nomatch\" text={{!!draft.of}} tag=\"div\">\n\n<$list filter=\"[{!!draft.title}!is[missing]]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/Exists/Prompt}}\n\n</div>\n\n</$list>\n\n<$list filter=\"[{!!draft.of}!is[missing]]\" variable=\"listItem\">\n\n<$vars fromTitle={{!!draft.of}} toTitle={{!!draft.title}}>\n\n<$checkbox tiddler=\"$:/config/RelinkOnRename\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> {{$:/language/EditTemplate/Title/Relink/Prompt}}</$checkbox>\n\n</$vars>\n\n</$list>\n\n</$reveal>\n\n\n"
        },
        "$:/core/ui/EditTemplate/type": {
            "title": "$:/core/ui/EditTemplate/type",
            "tags": "$:/tags/EditTemplate",
            "text": "\\define lingo-base() $:/language/EditTemplate/\n<div class=\"tc-type-selector\"><$fieldmangler>\n<em class=\"tc-edit\"><<lingo Type/Prompt>></em> <$edit-text field=\"type\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Type/Placeholder}} focusPopup=<<qualify \"$:/state/popup/type-dropdown\">> class=\"tc-edit-typeeditor tc-popup-handle\"/> <$button popup=<<qualify \"$:/state/popup/type-dropdown\">> class=\"tc-btn-invisible tc-btn-dropdown\" tooltip={{$:/language/EditTemplate/Type/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Type/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button> <$button message=\"tm-remove-field\" param=\"type\" class=\"tc-btn-invisible tc-btn-icon\" tooltip={{$:/language/EditTemplate/Type/Delete/Hint}} aria-label={{$:/language/EditTemplate/Type/Delete/Caption}}>{{$:/core/images/delete-button}}</$button>\n</$fieldmangler></div>\n\n<div class=\"tc-block-dropdown-wrapper\">\n<$reveal state=<<qualify \"$:/state/popup/type-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$linkcatcher to=\"!!type\">\n<$list filter='[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]each[group]sort[group-sort]]'>\n<div class=\"tc-dropdown-item\">\n<$text text={{!!group}}/>\n</div>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]group{!!group}] +[sort[description]]\"><$link to={{!!name}}><$view field=\"description\"/> (<$view field=\"name\"/>)</$link>\n</$list>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>\n</div>"
        },
        "$:/core/ui/EditTemplate": {
            "title": "$:/core/ui/EditTemplate",
            "text": "\\define actions()\n<$action-sendmessage $message=\"tm-add-tag\" $param={{$:/temp/NewTagName}}/>\n<$action-deletetiddler $tiddler=\"$:/temp/NewTagName\"/>\n<$action-sendmessage $message=\"tm-add-field\" $name={{$:/temp/newfieldname}} $value={{$:/temp/newfieldvalue}}/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldname\"/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldvalue\"/>\n<$action-sendmessage $message=\"tm-save-tiddler\"/>\n\\end\n\\define frame-classes()\ntc-tiddler-frame tc-tiddler-edit-frame $(missingTiddlerClass)$ $(shadowTiddlerClass)$ $(systemTiddlerClass)$\n\\end\n<div class=<<frame-classes>>>\n<$fieldmangler>\n<$set name=\"storyTiddler\" value=<<currentTiddler>>>\n<$keyboard key=\"((cancel-edit-tiddler))\" message=\"tm-cancel-tiddler\">\n<$keyboard key=\"((save-tiddler))\" actions=<<actions>>>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditTemplate]!has[draft.of]]\" variable=\"listItem\">\n<$transclude tiddler=<<listItem>>/>\n</$list>\n</$keyboard>\n</$keyboard>\n</$set>\n</$fieldmangler>\n</div>\n"
        },
        "$:/core/ui/Buttons/cancel": {
            "title": "$:/core/ui/Buttons/cancel",
            "tags": "$:/tags/EditToolbar",
            "caption": "{{$:/core/images/cancel-button}} {{$:/language/Buttons/Cancel/Caption}}",
            "description": "{{$:/language/Buttons/Cancel/Hint}}",
            "text": "<$button message=\"tm-cancel-tiddler\" tooltip={{$:/language/Buttons/Cancel/Hint}} aria-label={{$:/language/Buttons/Cancel/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/cancel-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Cancel/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/delete": {
            "title": "$:/core/ui/Buttons/delete",
            "tags": "$:/tags/EditToolbar $:/tags/ViewToolbar",
            "caption": "{{$:/core/images/delete-button}} {{$:/language/Buttons/Delete/Caption}}",
            "description": "{{$:/language/Buttons/Delete/Hint}}",
            "text": "<$button message=\"tm-delete-tiddler\" tooltip={{$:/language/Buttons/Delete/Hint}} aria-label={{$:/language/Buttons/Delete/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/delete-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Delete/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/save": {
            "title": "$:/core/ui/Buttons/save",
            "tags": "$:/tags/EditToolbar",
            "caption": "{{$:/core/images/done-button}} {{$:/language/Buttons/Save/Caption}}",
            "description": "{{$:/language/Buttons/Save/Hint}}",
            "text": "<$fieldmangler><$button tooltip={{$:/language/Buttons/Save/Hint}} aria-label={{$:/language/Buttons/Save/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-add-tag\" $param={{$:/temp/NewTagName}}/>\n<$action-deletetiddler $tiddler=\"$:/temp/NewTagName\"/>\n<$action-sendmessage $message=\"tm-add-field\" $name={{$:/temp/newfieldname}} $value={{$:/temp/newfieldvalue}}/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldname\"/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldvalue\"/>\n<$action-sendmessage $message=\"tm-save-tiddler\"/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/done-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Save/Caption}}/></span>\n</$list>\n</$button>\n</$fieldmangler>\n"
        },
        "$:/core/ui/EditorToolbar/bold": {
            "title": "$:/core/ui/EditorToolbar/bold",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/bold",
            "caption": "{{$:/language/Buttons/Bold/Caption}}",
            "description": "{{$:/language/Buttons/Bold/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((bold))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"''\"\n\tsuffix=\"''\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/clear-dropdown": {
            "title": "$:/core/ui/EditorToolbar/clear-dropdown",
            "text": "''{{$:/language/Buttons/Clear/Hint}}''\n\n<div class=\"tc-colour-chooser\">\n\n<$macrocall $name=\"colour-picker\" actions=\"\"\"\n\n<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"clear\"\n\tcolour=<<colour-picker-value>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n\n</div>\n"
        },
        "$:/core/ui/EditorToolbar/clear": {
            "title": "$:/core/ui/EditorToolbar/clear",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/erase",
            "caption": "{{$:/language/Buttons/Clear/Caption}}",
            "description": "{{$:/language/Buttons/Clear/Hint}}",
            "condition": "[<targetTiddler>is[image]]",
            "dropdown": "$:/core/ui/EditorToolbar/clear-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/editor-height-dropdown": {
            "title": "$:/core/ui/EditorToolbar/editor-height-dropdown",
            "text": "\\define lingo-base() $:/language/Buttons/EditorHeight/\n''<<lingo Hint>>''\n\n<$radio tiddler=\"$:/config/TextEditor/EditorHeight/Mode\" value=\"auto\"> {{$:/core/images/auto-height}} <<lingo Caption/Auto>></$radio>\n\n<$radio tiddler=\"$:/config/TextEditor/EditorHeight/Mode\" value=\"fixed\"> {{$:/core/images/fixed-height}} <<lingo Caption/Fixed>> <$edit-text tag=\"input\" tiddler=\"$:/config/TextEditor/EditorHeight/Height\" default=\"100px\"/></$radio>\n"
        },
        "$:/core/ui/EditorToolbar/editor-height": {
            "title": "$:/core/ui/EditorToolbar/editor-height",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/fixed-height",
            "custom-icon": "yes",
            "caption": "{{$:/language/Buttons/EditorHeight/Caption}}",
            "description": "{{$:/language/Buttons/EditorHeight/Hint}}",
            "condition": "[<targetTiddler>!is[image]]",
            "dropdown": "$:/core/ui/EditorToolbar/editor-height-dropdown",
            "text": "<$reveal tag=\"span\" state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"fixed\">\n{{$:/core/images/fixed-height}}\n</$reveal>\n<$reveal tag=\"span\" state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"auto\">\n{{$:/core/images/auto-height}}\n</$reveal>\n"
        },
        "$:/core/ui/EditorToolbar/excise-dropdown": {
            "title": "$:/core/ui/EditorToolbar/excise-dropdown",
            "text": "\\define lingo-base() $:/language/Buttons/Excise/\n\n\\define body(config-title)\n''<<lingo Hint>>''\n\n<<lingo Caption/NewTitle>> <$edit-text tag=\"input\" tiddler=\"$config-title$/new-title\" default=\"\" focus=\"true\"/>\n\n<$set name=\"new-title\" value={{$config-title$/new-title}}>\n<$list filter=\"\"\"[<new-title>is[tiddler]]\"\"\">\n<div class=\"tc-error\">\n<<lingo Caption/TiddlerExists>>\n</div>\n</$list>\n</$set>\n\n<$checkbox tiddler=\"\"\"$config-title$/tagnew\"\"\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"false\"> <<lingo Caption/Tag>></$checkbox>\n\n<<lingo Caption/Replace>> <$select tiddler=\"\"\"$config-title$/type\"\"\" default=\"transclude\">\n<option value=\"link\"><<lingo Caption/Replace/Link>></option>\n<option value=\"transclude\"><<lingo Caption/Replace/Transclusion>></option>\n<option value=\"macro\"><<lingo Caption/Replace/Macro>></option>\n</$select>\n\n<$reveal state=\"\"\"$config-title$/type\"\"\" type=\"match\" text=\"macro\">\n<<lingo Caption/MacroName>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/macro-title\"\"\" default=\"translink\"/>\n</$reveal>\n\n<$button>\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"excise\"\n\ttitle={{$config-title$/new-title}}\n\ttype={{$config-title$/type}}\n\tmacro={{$config-title$/macro-title}}\n\ttagnew={{$config-title$/tagnew}}\n/>\n<$action-deletetiddler\n\t$tiddler=\"$config-title$/new-title\"\n/>\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n<<lingo Caption/Excise>>\n</$button>\n\\end\n\n<$macrocall $name=\"body\" config-title=<<qualify \"$:/state/Excise/\">>/>\n"
        },
        "$:/core/ui/EditorToolbar/excise": {
            "title": "$:/core/ui/EditorToolbar/excise",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/excise",
            "caption": "{{$:/language/Buttons/Excise/Caption}}",
            "description": "{{$:/language/Buttons/Excise/Hint}}",
            "condition": "[<targetTiddler>!is[image]]",
            "shortcuts": "((excise))",
            "dropdown": "$:/core/ui/EditorToolbar/excise-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/heading-1": {
            "title": "$:/core/ui/EditorToolbar/heading-1",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-1",
            "caption": "{{$:/language/Buttons/Heading1/Caption}}",
            "description": "{{$:/language/Buttons/Heading1/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "button-classes": "tc-text-editor-toolbar-item-start-group",
            "shortcuts": "((heading-1))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"1\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/heading-2": {
            "title": "$:/core/ui/EditorToolbar/heading-2",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-2",
            "caption": "{{$:/language/Buttons/Heading2/Caption}}",
            "description": "{{$:/language/Buttons/Heading2/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((heading-2))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"2\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/heading-3": {
            "title": "$:/core/ui/EditorToolbar/heading-3",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-3",
            "caption": "{{$:/language/Buttons/Heading3/Caption}}",
            "description": "{{$:/language/Buttons/Heading3/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((heading-3))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"3\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/heading-4": {
            "title": "$:/core/ui/EditorToolbar/heading-4",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-4",
            "caption": "{{$:/language/Buttons/Heading4/Caption}}",
            "description": "{{$:/language/Buttons/Heading4/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((heading-4))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"4\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/heading-5": {
            "title": "$:/core/ui/EditorToolbar/heading-5",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-5",
            "caption": "{{$:/language/Buttons/Heading5/Caption}}",
            "description": "{{$:/language/Buttons/Heading5/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((heading-5))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"5\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/heading-6": {
            "title": "$:/core/ui/EditorToolbar/heading-6",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-6",
            "caption": "{{$:/language/Buttons/Heading6/Caption}}",
            "description": "{{$:/language/Buttons/Heading6/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((heading-6))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"6\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/italic": {
            "title": "$:/core/ui/EditorToolbar/italic",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/italic",
            "caption": "{{$:/language/Buttons/Italic/Caption}}",
            "description": "{{$:/language/Buttons/Italic/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((italic))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"//\"\n\tsuffix=\"//\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/line-width-dropdown": {
            "title": "$:/core/ui/EditorToolbar/line-width-dropdown",
            "text": "\\define lingo-base() $:/language/Buttons/LineWidth/\n\n\\define toolbar-line-width-inner()\n<$button tag=\"a\" tooltip=\"\"\"$(line-width)$\"\"\">\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/LineWidth\"\n\t$value=\"$(line-width)$\"\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<div style=\"display: inline-block; margin: 4px calc(80px - $(line-width)$); background-color: #000; width: calc(100px + $(line-width)$ * 2); height: $(line-width)$; border-radius: 120px; vertical-align: middle;\"/>\n\n<span style=\"margin-left: 8px;\">\n\n<$text text=\"\"\"$(line-width)$\"\"\"/>\n\n<$reveal state=\"$:/config/BitmapEditor/LineWidth\" type=\"match\" text=\"\"\"$(line-width)$\"\"\" tag=\"span\">\n\n<$entity entity=\"&nbsp;\"/>\n\n<$entity entity=\"&#x2713;\"/>\n\n</$reveal>\n\n</span>\n\n</$button>\n\\end\n\n''<<lingo Hint>>''\n\n<$list filter={{$:/config/BitmapEditor/LineWidths}} variable=\"line-width\">\n\n<<toolbar-line-width-inner>>\n\n</$list>\n"
        },
        "$:/core/ui/EditorToolbar/line-width": {
            "title": "$:/core/ui/EditorToolbar/line-width",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/line-width",
            "caption": "{{$:/language/Buttons/LineWidth/Caption}}",
            "description": "{{$:/language/Buttons/LineWidth/Hint}}",
            "condition": "[<targetTiddler>is[image]]",
            "dropdown": "$:/core/ui/EditorToolbar/line-width-dropdown",
            "text": "<$text text={{$:/config/BitmapEditor/LineWidth}}/>"
        },
        "$:/core/ui/EditorToolbar/link-dropdown": {
            "title": "$:/core/ui/EditorToolbar/link-dropdown",
            "text": "\\define lingo-base() $:/language/Buttons/Link/\n\n\\define link-actions()\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"make-link\"\n\ttext={{$(linkTiddler)$}}\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<searchTiddler>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<linkTiddler>>\n/>\n\\end\n\n\\define external-link()\n<$button class=\"tc-btn-invisible\" style=\"width: auto; display: inline-block; background-colour: inherit;\">\n<$action-sendmessage $message=\"tm-edit-text-operation\" $param=\"make-link\" text={{$(searchTiddler)$}}\n/>\n{{$:/core/images/chevron-right}}\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<searchTiddler>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<linkTiddler>>\n/>\n</$button>\n\\end\n\n\n\\define body(config-title)\n''<<lingo Hint>>''\n\n<$vars searchTiddler=\"\"\"$config-title$/search\"\"\" linkTiddler=\"\"\"$config-title$/link\"\"\" linktext=\"\" >\n\n<$edit-text tiddler=<<searchTiddler>> type=\"search\" tag=\"input\" focus=\"true\" placeholder={{$:/language/Search/Search}} default=\"\"/>\n<$reveal tag=\"span\" state=<<searchTiddler>> type=\"nomatch\" text=\"\">\n<<external-link>>\n<$button class=\"tc-btn-invisible\" style=\"width: auto; display: inline-block; background-colour: inherit;\">\n<$action-setfield $tiddler=<<searchTiddler>> text=\"\" />\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n\n<$reveal tag=\"div\" state=<<searchTiddler>> type=\"nomatch\" text=\"\">\n\n<$linkcatcher actions=<<link-actions>> to=<<linkTiddler>>>\n\n{{$:/core/ui/SearchResults}}\n\n</$linkcatcher>\n\n</$reveal>\n\n</$vars>\n\n\\end\n\n<$macrocall $name=\"body\" config-title=<<qualify \"$:/state/Link/\">>/>"
        },
        "$:/core/ui/EditorToolbar/link": {
            "title": "$:/core/ui/EditorToolbar/link",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/link",
            "caption": "{{$:/language/Buttons/Link/Caption}}",
            "description": "{{$:/language/Buttons/Link/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "button-classes": "tc-text-editor-toolbar-item-start-group",
            "shortcuts": "((link))",
            "dropdown": "$:/core/ui/EditorToolbar/link-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/list-bullet": {
            "title": "$:/core/ui/EditorToolbar/list-bullet",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/list-bullet",
            "caption": "{{$:/language/Buttons/ListBullet/Caption}}",
            "description": "{{$:/language/Buttons/ListBullet/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((list-bullet))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"*\"\n\tcount=\"1\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/list-number": {
            "title": "$:/core/ui/EditorToolbar/list-number",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/list-number",
            "caption": "{{$:/language/Buttons/ListNumber/Caption}}",
            "description": "{{$:/language/Buttons/ListNumber/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((list-number))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"#\"\n\tcount=\"1\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/mono-block": {
            "title": "$:/core/ui/EditorToolbar/mono-block",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/mono-block",
            "caption": "{{$:/language/Buttons/MonoBlock/Caption}}",
            "description": "{{$:/language/Buttons/MonoBlock/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "button-classes": "tc-text-editor-toolbar-item-start-group",
            "shortcuts": "((mono-block))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-lines\"\n\tprefix=\"\n```\"\n\tsuffix=\"```\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/mono-line": {
            "title": "$:/core/ui/EditorToolbar/mono-line",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/mono-line",
            "caption": "{{$:/language/Buttons/MonoLine/Caption}}",
            "description": "{{$:/language/Buttons/MonoLine/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((mono-line))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"`\"\n\tsuffix=\"`\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/more-dropdown": {
            "title": "$:/core/ui/EditorToolbar/more-dropdown",
            "text": "\\define config-title()\n$:/config/EditorToolbarButtons/Visibility/$(toolbarItem)$\n\\end\n\n\\define conditional-button()\n<$list filter={{$(toolbarItem)$!!condition}} variable=\"condition\">\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/toolbar/button\" mode=\"inline\"/> <$transclude tiddler=<<toolbarItem>> field=\"description\"/>\n</$list>\n\\end\n\n<div class=\"tc-text-editor-toolbar-more\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditorToolbar]!has[draft.of]] -[[$:/core/ui/EditorToolbar/more]]\">\n<$reveal type=\"match\" state=<<config-visibility-title>> text=\"hide\" tag=\"div\">\n<<conditional-button>>\n</$reveal>\n</$list>\n</div>\n"
        },
        "$:/core/ui/EditorToolbar/more": {
            "title": "$:/core/ui/EditorToolbar/more",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/down-arrow",
            "caption": "{{$:/language/Buttons/More/Caption}}",
            "description": "{{$:/language/Buttons/More/Hint}}",
            "condition": "[<targetTiddler>]",
            "dropdown": "$:/core/ui/EditorToolbar/more-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/opacity-dropdown": {
            "title": "$:/core/ui/EditorToolbar/opacity-dropdown",
            "text": "\\define lingo-base() $:/language/Buttons/Opacity/\n\n\\define toolbar-opacity-inner()\n<$button tag=\"a\" tooltip=\"\"\"$(opacity)$\"\"\">\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/Opacity\"\n\t$value=\"$(opacity)$\"\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<div style=\"display: inline-block; vertical-align: middle; background-color: $(current-paint-colour)$; opacity: $(opacity)$; width: 1em; height: 1em; border-radius: 50%;\"/>\n\n<span style=\"margin-left: 8px;\">\n\n<$text text=\"\"\"$(opacity)$\"\"\"/>\n\n<$reveal state=\"$:/config/BitmapEditor/Opacity\" type=\"match\" text=\"\"\"$(opacity)$\"\"\" tag=\"span\">\n\n<$entity entity=\"&nbsp;\"/>\n\n<$entity entity=\"&#x2713;\"/>\n\n</$reveal>\n\n</span>\n\n</$button>\n\\end\n\n\\define toolbar-opacity()\n''<<lingo Hint>>''\n\n<$list filter={{$:/config/BitmapEditor/Opacities}} variable=\"opacity\">\n\n<<toolbar-opacity-inner>>\n\n</$list>\n\\end\n\n<$set name=\"current-paint-colour\" value={{$:/config/BitmapEditor/Colour}}>\n\n<$set name=\"current-opacity\" value={{$:/config/BitmapEditor/Opacity}}>\n\n<<toolbar-opacity>>\n\n</$set>\n\n</$set>\n"
        },
        "$:/core/ui/EditorToolbar/opacity": {
            "title": "$:/core/ui/EditorToolbar/opacity",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/opacity",
            "caption": "{{$:/language/Buttons/Opacity/Caption}}",
            "description": "{{$:/language/Buttons/Opacity/Hint}}",
            "condition": "[<targetTiddler>is[image]]",
            "dropdown": "$:/core/ui/EditorToolbar/opacity-dropdown",
            "text": "<$text text={{$:/config/BitmapEditor/Opacity}}/>\n"
        },
        "$:/core/ui/EditorToolbar/paint-dropdown": {
            "title": "$:/core/ui/EditorToolbar/paint-dropdown",
            "text": "''{{$:/language/Buttons/Paint/Hint}}''\n\n<$macrocall $name=\"colour-picker\" actions=\"\"\"\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/Colour\"\n\t$value=<<colour-picker-value>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n"
        },
        "$:/core/ui/EditorToolbar/paint": {
            "title": "$:/core/ui/EditorToolbar/paint",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/paint",
            "caption": "{{$:/language/Buttons/Paint/Caption}}",
            "description": "{{$:/language/Buttons/Paint/Hint}}",
            "condition": "[<targetTiddler>is[image]]",
            "dropdown": "$:/core/ui/EditorToolbar/paint-dropdown",
            "text": "\\define toolbar-paint()\n<div style=\"display: inline-block; vertical-align: middle; background-color: $(colour-picker-value)$; width: 1em; height: 1em; border-radius: 50%;\"/>\n\\end\n<$set name=\"colour-picker-value\" value={{$:/config/BitmapEditor/Colour}}>\n<<toolbar-paint>>\n</$set>\n"
        },
        "$:/core/ui/EditorToolbar/picture-dropdown": {
            "title": "$:/core/ui/EditorToolbar/picture-dropdown",
            "text": "\\define replacement-text()\n[img[$(imageTitle)$]]\n\\end\n\n''{{$:/language/Buttons/Picture/Hint}}''\n\n<$macrocall $name=\"image-picker\" actions=\"\"\"\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"replace-selection\"\n\ttext=<<replacement-text>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n"
        },
        "$:/core/ui/EditorToolbar/picture": {
            "title": "$:/core/ui/EditorToolbar/picture",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/picture",
            "caption": "{{$:/language/Buttons/Picture/Caption}}",
            "description": "{{$:/language/Buttons/Picture/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((picture))",
            "dropdown": "$:/core/ui/EditorToolbar/picture-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/preview-type-dropdown": {
            "title": "$:/core/ui/EditorToolbar/preview-type-dropdown",
            "text": "\\define preview-type-button()\n<$button tag=\"a\">\n\n<$action-setfield $tiddler=\"$:/state/editpreviewtype\" $value=\"$(previewType)$\"/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$transclude tiddler=<<previewType>> field=\"caption\" mode=\"inline\">\n\n<$view tiddler=<<previewType>> field=\"title\" mode=\"inline\"/>\n\n</$transclude> \n\n<$reveal tag=\"span\" state=\"$:/state/editpreviewtype\" type=\"match\" text=<<previewType>> default=\"$:/core/ui/EditTemplate/body/preview/output\">\n\n<$entity entity=\"&nbsp;\"/>\n\n<$entity entity=\"&#x2713;\"/>\n\n</$reveal>\n\n</$button>\n\\end\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditPreview]!has[draft.of]]\" variable=\"previewType\">\n\n<<preview-type-button>>\n\n</$list>\n"
        },
        "$:/core/ui/EditorToolbar/preview-type": {
            "title": "$:/core/ui/EditorToolbar/preview-type",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/chevron-down",
            "caption": "{{$:/language/Buttons/PreviewType/Caption}}",
            "description": "{{$:/language/Buttons/PreviewType/Hint}}",
            "condition": "[all[shadows+tiddlers]tag[$:/tags/EditPreview]!has[draft.of]butfirst[]limit[1]]",
            "button-classes": "tc-text-editor-toolbar-item-adjunct",
            "dropdown": "$:/core/ui/EditorToolbar/preview-type-dropdown"
        },
        "$:/core/ui/EditorToolbar/preview": {
            "title": "$:/core/ui/EditorToolbar/preview",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/preview-open",
            "custom-icon": "yes",
            "caption": "{{$:/language/Buttons/Preview/Caption}}",
            "description": "{{$:/language/Buttons/Preview/Hint}}",
            "condition": "[<targetTiddler>]",
            "button-classes": "tc-text-editor-toolbar-item-start-group",
            "shortcuts": "((preview))",
            "text": "<$reveal state=\"$:/state/showeditpreview\" type=\"match\" text=\"yes\" tag=\"span\">\n{{$:/core/images/preview-open}}\n<$action-setfield $tiddler=\"$:/state/showeditpreview\" $value=\"no\"/>\n</$reveal>\n<$reveal state=\"$:/state/showeditpreview\" type=\"nomatch\" text=\"yes\" tag=\"span\">\n{{$:/core/images/preview-closed}}\n<$action-setfield $tiddler=\"$:/state/showeditpreview\" $value=\"yes\"/>\n</$reveal>\n"
        },
        "$:/core/ui/EditorToolbar/quote": {
            "title": "$:/core/ui/EditorToolbar/quote",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/quote",
            "caption": "{{$:/language/Buttons/Quote/Caption}}",
            "description": "{{$:/language/Buttons/Quote/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((quote))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-lines\"\n\tprefix=\"\n<<<\"\n\tsuffix=\"<<<\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/size-dropdown": {
            "title": "$:/core/ui/EditorToolbar/size-dropdown",
            "text": "\\define lingo-base() $:/language/Buttons/Size/\n\n\\define toolbar-button-size-preset(config-title)\n<$set name=\"width\" filter=\"$(sizePair)$ +[first[]]\">\n\n<$set name=\"height\" filter=\"$(sizePair)$ +[last[]]\">\n\n<$button tag=\"a\">\n\n<$action-setfield\n\t$tiddler=\"\"\"$config-title$/new-width\"\"\"\n\t$value=<<width>>\n/>\n\n<$action-setfield\n\t$tiddler=\"\"\"$config-title$/new-height\"\"\"\n\t$value=<<height>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/presets-popup\"\"\"\n/>\n\n<$text text=<<width>>/> &times; <$text text=<<height>>/>\n\n</$button>\n\n</$set>\n\n</$set>\n\\end\n\n\\define toolbar-button-size(config-title)\n''{{$:/language/Buttons/Size/Hint}}''\n\n<<lingo Caption/Width>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/new-width\"\"\" default=<<tv-bitmap-editor-width>> focus=\"true\" size=\"8\"/> <<lingo Caption/Height>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/new-height\"\"\" default=<<tv-bitmap-editor-height>> size=\"8\"/> <$button popup=\"\"\"$config-title$/presets-popup\"\"\" class=\"tc-btn-invisible tc-popup-keep\" style=\"width: auto; display: inline-block; background-colour: inherit;\" selectedClass=\"tc-selected\">\n{{$:/core/images/down-arrow}}\n</$button>\n\n<$reveal tag=\"span\" state=\"\"\"$config-title$/presets-popup\"\"\" type=\"popup\" position=\"belowleft\" animate=\"yes\">\n\n<div class=\"tc-drop-down tc-popup-keep\">\n\n<$list filter={{$:/config/BitmapEditor/ImageSizes}} variable=\"sizePair\">\n\n<$macrocall $name=\"toolbar-button-size-preset\" config-title=\"$config-title$\"/>\n\n</$list>\n\n</div>\n\n</$reveal>\n\n<$button>\n<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"resize\"\n\twidth={{$config-title$/new-width}}\n\theight={{$config-title$/new-height}}\n/>\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/new-width\"\"\"\n/>\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/new-height\"\"\"\n/>\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n<<lingo Caption/Resize>>\n</$button>\n\\end\n\n<$macrocall $name=\"toolbar-button-size\" config-title=<<qualify \"$:/state/Size/\">>/>\n"
        },
        "$:/core/ui/EditorToolbar/size": {
            "title": "$:/core/ui/EditorToolbar/size",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/size",
            "caption": "{{$:/language/Buttons/Size/Caption}}",
            "description": "{{$:/language/Buttons/Size/Hint}}",
            "condition": "[<targetTiddler>is[image]]",
            "dropdown": "$:/core/ui/EditorToolbar/size-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/stamp-dropdown": {
            "title": "$:/core/ui/EditorToolbar/stamp-dropdown",
            "text": "\\define toolbar-button-stamp-inner()\n<$button tag=\"a\">\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"replace-selection\"\n\ttext={{$(snippetTitle)$}}\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$view tiddler=<<snippetTitle>> field=\"caption\" mode=\"inline\">\n\n<$view tiddler=<<snippetTitle>> field=\"title\" mode=\"inline\"/>\n\n</$view>\n\n</$button>\n\\end\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TextEditor/Snippet]!has[draft.of]sort[caption]]\" variable=\"snippetTitle\">\n\n<<toolbar-button-stamp-inner>>\n\n</$list>\n\n----\n\n<$button tag=\"a\">\n\n<$action-sendmessage\n\t$message=\"tm-new-tiddler\"\n\ttags=\"$:/tags/TextEditor/Snippet\"\n\tcaption={{$:/language/Buttons/Stamp/New/Title}}\n\ttext={{$:/language/Buttons/Stamp/New/Text}}\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<em>\n\n<$text text={{$:/language/Buttons/Stamp/Caption/New}}/>\n\n</em>\n\n</$button>\n"
        },
        "$:/core/ui/EditorToolbar/stamp": {
            "title": "$:/core/ui/EditorToolbar/stamp",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/stamp",
            "caption": "{{$:/language/Buttons/Stamp/Caption}}",
            "description": "{{$:/language/Buttons/Stamp/Hint}}",
            "condition": "[<targetTiddler>!is[image]]",
            "shortcuts": "((stamp))",
            "dropdown": "$:/core/ui/EditorToolbar/stamp-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/strikethrough": {
            "title": "$:/core/ui/EditorToolbar/strikethrough",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/strikethrough",
            "caption": "{{$:/language/Buttons/Strikethrough/Caption}}",
            "description": "{{$:/language/Buttons/Strikethrough/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((strikethrough))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"~~\"\n\tsuffix=\"~~\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/subscript": {
            "title": "$:/core/ui/EditorToolbar/subscript",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/subscript",
            "caption": "{{$:/language/Buttons/Subscript/Caption}}",
            "description": "{{$:/language/Buttons/Subscript/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((subscript))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\",,\"\n\tsuffix=\",,\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/superscript": {
            "title": "$:/core/ui/EditorToolbar/superscript",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/superscript",
            "caption": "{{$:/language/Buttons/Superscript/Caption}}",
            "description": "{{$:/language/Buttons/Superscript/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((superscript))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"^^\"\n\tsuffix=\"^^\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/underline": {
            "title": "$:/core/ui/EditorToolbar/underline",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/underline",
            "caption": "{{$:/language/Buttons/Underline/Caption}}",
            "description": "{{$:/language/Buttons/Underline/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((underline))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"__\"\n\tsuffix=\"__\"\n/>\n"
        },
        "$:/core/Filters/AllTags": {
            "title": "$:/core/Filters/AllTags",
            "tags": "$:/tags/Filter",
            "filter": "[tags[]!is[system]sort[title]]",
            "description": "{{$:/language/Filters/AllTags}}",
            "text": ""
        },
        "$:/core/Filters/AllTiddlers": {
            "title": "$:/core/Filters/AllTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[!is[system]sort[title]]",
            "description": "{{$:/language/Filters/AllTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/Drafts": {
            "title": "$:/core/Filters/Drafts",
            "tags": "$:/tags/Filter",
            "filter": "[has[draft.of]sort[title]]",
            "description": "{{$:/language/Filters/Drafts}}",
            "text": ""
        },
        "$:/core/Filters/Missing": {
            "title": "$:/core/Filters/Missing",
            "tags": "$:/tags/Filter",
            "filter": "[all[missing]sort[title]]",
            "description": "{{$:/language/Filters/Missing}}",
            "text": ""
        },
        "$:/core/Filters/Orphans": {
            "title": "$:/core/Filters/Orphans",
            "tags": "$:/tags/Filter",
            "filter": "[all[orphans]sort[title]]",
            "description": "{{$:/language/Filters/Orphans}}",
            "text": ""
        },
        "$:/core/Filters/OverriddenShadowTiddlers": {
            "title": "$:/core/Filters/OverriddenShadowTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[is[shadow]]",
            "description": "{{$:/language/Filters/OverriddenShadowTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/RecentSystemTiddlers": {
            "title": "$:/core/Filters/RecentSystemTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[has[modified]!sort[modified]limit[50]]",
            "description": "{{$:/language/Filters/RecentSystemTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/RecentTiddlers": {
            "title": "$:/core/Filters/RecentTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[!is[system]has[modified]!sort[modified]limit[50]]",
            "description": "{{$:/language/Filters/RecentTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/ShadowTiddlers": {
            "title": "$:/core/Filters/ShadowTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[all[shadows]sort[title]]",
            "description": "{{$:/language/Filters/ShadowTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/StoryList": {
            "title": "$:/core/Filters/StoryList",
            "tags": "$:/tags/Filter",
            "filter": "[list[$:/StoryList]] -$:/AdvancedSearch",
            "description": "{{$:/language/Filters/StoryList}}",
            "text": ""
        },
        "$:/core/Filters/SystemTags": {
            "title": "$:/core/Filters/SystemTags",
            "tags": "$:/tags/Filter",
            "filter": "[all[shadows+tiddlers]tags[]is[system]sort[title]]",
            "description": "{{$:/language/Filters/SystemTags}}",
            "text": ""
        },
        "$:/core/Filters/SystemTiddlers": {
            "title": "$:/core/Filters/SystemTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[is[system]sort[title]]",
            "description": "{{$:/language/Filters/SystemTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/TypedTiddlers": {
            "title": "$:/core/Filters/TypedTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[!is[system]has[type]each[type]sort[type]] -[type[text/vnd.tiddlywiki]]",
            "description": "{{$:/language/Filters/TypedTiddlers}}",
            "text": ""
        },
        "$:/core/ui/ImportListing": {
            "title": "$:/core/ui/ImportListing",
            "text": "\\define lingo-base() $:/language/Import/\n\n\\define messageField()\nmessage-$(payloadTiddler)$\n\\end\n\n\\define selectionField()\nselection-$(payloadTiddler)$\n\\end\n\n\\define previewPopupState()\n$(currentTiddler)$!!popup-$(payloadTiddler)$\n\\end\n\n\\define select-all-actions()\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" variable=\"payloadTiddler\">\n<$action-setfield $field={{{ [<payloadTiddler>addprefix[selection-]] }}} $value={{$:/state/import/select-all}}/>\n</$list>\n\\end\n\n<table>\n<tbody>\n<tr>\n<th>\n<$checkbox tiddler=\"$:/state/import/select-all\" field=\"text\" checked=\"checked\" unchecked=\"unchecked\" default=\"checked\" actions=<<select-all-actions>>>\n<<lingo Listing/Select/Caption>>\n</$checkbox>\n</th>\n<th>\n<<lingo Listing/Title/Caption>>\n</th>\n<th>\n<<lingo Listing/Status/Caption>>\n</th>\n</tr>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" variable=\"payloadTiddler\">\n<tr>\n<td>\n<$checkbox field=<<selectionField>> checked=\"checked\" unchecked=\"unchecked\" default=\"checked\"/>\n</td>\n<td>\n<$reveal type=\"nomatch\" state=<<previewPopupState>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<previewPopupState>> setTo=\"yes\">\n{{$:/core/images/right-arrow}}&nbsp;<$text text=<<payloadTiddler>>/>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<previewPopupState>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<previewPopupState>> setTo=\"no\">\n{{$:/core/images/down-arrow}}&nbsp;<$text text=<<payloadTiddler>>/>\n</$button>\n</$reveal>\n</td>\n<td>\n<$view field=<<messageField>>/>\n</td>\n</tr>\n<tr>\n<td colspan=\"3\">\n<$reveal type=\"match\" text=\"yes\" state=<<previewPopupState>>>\n<$transclude subtiddler=<<payloadTiddler>> mode=\"block\"/>\n</$reveal>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
        },
        "$:/core/ui/ListItemTemplate": {
            "title": "$:/core/ui/ListItemTemplate",
            "text": "<div class=\"tc-menu-list-item\">\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</div>"
        },
        "$:/Manager/ItemMain/Fields": {
            "title": "$:/Manager/ItemMain/Fields",
            "tags": "$:/tags/Manager/ItemMain",
            "caption": "{{$:/language/Manager/Item/Fields}}",
            "text": "<table>\n<tbody>\n<$list filter=\"[all[current]fields[]sort[title]] -text\" template=\"$:/core/ui/TiddlerFieldTemplate\" variable=\"listItem\"/>\n</tbody>\n</table>\n"
        },
        "$:/Manager/ItemMain/RawText": {
            "title": "$:/Manager/ItemMain/RawText",
            "tags": "$:/tags/Manager/ItemMain",
            "caption": "{{$:/language/Manager/Item/RawText}}",
            "text": "<pre><code><$view/></code></pre>\n"
        },
        "$:/Manager/ItemMain/WikifiedText": {
            "title": "$:/Manager/ItemMain/WikifiedText",
            "tags": "$:/tags/Manager/ItemMain",
            "caption": "{{$:/language/Manager/Item/WikifiedText}}",
            "text": "<$transclude mode=\"block\"/>\n"
        },
        "$:/Manager/ItemSidebar/Colour": {
            "title": "$:/Manager/ItemSidebar/Colour",
            "tags": "$:/tags/Manager/ItemSidebar",
            "caption": "{{$:/language/Manager/Item/Colour}}",
            "text": "\\define swatch-styles()\nheight: 1em;\nbackground-color: $(colour)$\n\\end\n\n<$vars colour={{!!color}}>\n<p style=<<swatch-styles>>/>\n</$vars>\n<p>\n<$edit-text field=\"color\" tag=\"input\" type=\"color\"/> / <$edit-text field=\"color\" tag=\"input\" type=\"text\" size=\"9\"/>\n</p>\n"
        },
        "$:/Manager/ItemSidebar/Icon": {
            "title": "$:/Manager/ItemSidebar/Icon",
            "tags": "$:/tags/Manager/ItemSidebar",
            "caption": "{{$:/language/Manager/Item/Icon}}",
            "text": "<p>\n<div class=\"tc-manager-icon-editor\">\n<$button popup=<<qualify \"$:/state/popup/image-picker\">> class=\"tc-btn-invisible\">\n<$transclude tiddler={{!!icon}}>\n{{$:/language/Manager/Item/Icon/None}}\n</$transclude>\n</$button>\n<div class=\"tc-block-dropdown-wrapper\" style=\"position: static;\">\n<$reveal state=<<qualify \"$:/state/popup/image-picker\">> type=\"nomatch\" text=\"\" default=\"\" tag=\"div\" class=\"tc-popup\">\n<div class=\"tc-block-dropdown tc-popup-keep\" style=\"width: 80%; left: 10%; right: 10%; padding: 0.5em;\">\n<$macrocall $name=\"image-picker-include-tagged-images\" actions=\"\"\"\n<$action-setfield $field=\"icon\" $value=<<imageTitle>>/>\n<$action-deletetiddler $tiddler=<<qualify \"$:/state/popup/image-picker\">>/>\n\"\"\"/>\n</div>\n</$reveal>\n</div>\n</div>\n</p>\n"
        },
        "$:/Manager/ItemSidebar/Tags": {
            "title": "$:/Manager/ItemSidebar/Tags",
            "tags": "$:/tags/Manager/ItemSidebar",
            "caption": "{{$:/language/Manager/Item/Tags}}",
            "text": "\\define tag-checkbox-actions()\n<$action-listops\n\t$tiddler=\"$:/config/Manager/RecentTags\"\n\t$subfilter=\"[<tag>] [list[$:/config/Manager/RecentTags]] +[limit[12]]\"\n/>\n\\end\n\n\\define tag-picker-actions()\n<<tag-checkbox-actions>>\n<$action-listops\n\t$tiddler=<<currentTiddler>>\n\t$field=\"tags\"\n\t$subfilter=\"[<tag>] [all[current]tags[]]\"\n/>\n\\end\n\n<p>\n<$list filter=\"[is[current]tags[]] [list[$:/config/Manager/RecentTags]] +[sort[title]] \" variable=\"tag\">\n<div>\n<$checkbox tiddler=<<currentTiddler>> tag=<<tag>> actions=<<tag-checkbox-actions>>>\n<$macrocall $name=\"tag-pill\" tag=<<tag>>/>\n</$checkbox>\n</div>\n</$list>\n</p>\n<p>\n<$macrocall $name=\"tag-picker\" actions=<<tag-picker-actions>>/>\n</p>\n"
        },
        "$:/Manager/ItemSidebar/Tools": {
            "title": "$:/Manager/ItemSidebar/Tools",
            "tags": "$:/tags/Manager/ItemSidebar",
            "caption": "{{$:/language/Manager/Item/Tools}}",
            "text": "<p>\n<$button to=<<currentTiddler>>>{{$:/core/images/link}} open</$button>\n</p>\n<p>\n<$button message=\"tm-edit-tiddler\" param=<<currentTiddler>>>{{$:/core/images/edit-button}} edit</$button>\n</p>\n"
        },
        "$:/Manager": {
            "title": "$:/Manager",
            "icon": "$:/core/images/list",
            "color": "#bbb",
            "text": "\\define lingo-base() $:/language/Manager/\n\n\\define list-item-content-item()\n<div class=\"tc-manager-list-item-content-item\">\n\t<$vars state-title=\"\"\"$:/state/popup/manager/item/$(listItem)$\"\"\">\n\t\t<$reveal state=<<state-title>> type=\"match\" text=\"show\" default=\"show\" tag=\"div\">\n\t\t\t<$button set=<<state-title>> setTo=\"hide\" class=\"tc-btn-invisible tc-manager-list-item-content-item-heading\">\n\t\t\t\t{{$:/core/images/down-arrow}} <$transclude tiddler=<<listItem>> field=\"caption\"/>\n\t\t\t</$button>\n\t\t</$reveal>\n\t\t<$reveal state=<<state-title>> type=\"nomatch\" text=\"show\" default=\"show\" tag=\"div\">\n\t\t\t<$button set=<<state-title>> setTo=\"show\" class=\"tc-btn-invisible tc-manager-list-item-content-item-heading\">\n\t\t\t\t{{$:/core/images/right-arrow}} <$transclude tiddler=<<listItem>> field=\"caption\"/>\n\t\t\t</$button>\n\t\t</$reveal>\n\t\t<$reveal state=<<state-title>> type=\"match\" text=\"show\" default=\"show\" tag=\"div\" class=\"tc-manager-list-item-content-item-body\">\n\t\t\t<$transclude tiddler=<<listItem>>/>\n\t\t</$reveal>\n\t</$vars>\n</div>\n\\end\n\n<div class=\"tc-manager-wrapper\">\n\t<div class=\"tc-manager-controls\">\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Show/Prompt>> <$select tiddler=\"$:/config/Manager/Show\" default=\"tiddlers\">\n\t\t\t\t<option value=\"tiddlers\"><<lingo Controls/Show/Option/Tiddlers>></option>\n\t\t\t\t<option value=\"tags\"><<lingo Controls/Show/Option/Tags>></option>\n\t\t\t</$select>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Search/Prompt>> <$edit-text tiddler=\"$:/config/Manager/Filter\" tag=\"input\" default=\"\" placeholder={{$:/language/Manager/Controls/Search/Placeholder}}/>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/FilterByTag/Prompt>> <$select tiddler=\"$:/config/Manager/Tag\" default=\"\">\n\t\t\t\t<option value=\"\"><<lingo Controls/FilterByTag/None>></option>\n\t\t\t\t<$list filter=\"[!is{$:/config/Manager/System}tags[]!is[system]sort[title]]\" variable=\"tag\">\n\t\t\t\t\t<option value=<<tag>>><$text text=<<tag>>/></option>\n\t\t\t\t</$list>\n\t\t\t</$select>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Sort/Prompt>> <$select tiddler=\"$:/config/Manager/Sort\" default=\"title\">\n\t\t\t\t<optgroup label=\"Common\">\n\t\t\t\t\t<$list filter=\"title modified modifier created creator created\" variable=\"field\">\n\t\t\t\t\t\t<option value=<<field>>><$text text=<<field>>/></option>\n\t\t\t\t\t</$list>\n\t\t\t\t</optgroup>\n\t\t\t\t<optgroup label=\"All\">\n\t\t\t\t\t<$list filter=\"[all{$:/config/Manager/Show}!is{$:/config/Manager/System}fields[]sort[title]] -title -modified -modifier -created -creator -created\" variable=\"field\">\n\t\t\t\t\t\t<option value=<<field>>><$text text=<<field>>/></option>\n\t\t\t\t\t</$list>\n\t\t\t\t</optgroup>\n\t\t\t</$select>\n\t\t\t<$checkbox tiddler=\"$:/config/Manager/Order\" field=\"text\" checked=\"reverse\" unchecked=\"forward\" default=\"forward\">\n\t\t\t\t<<lingo Controls/Order/Prompt>>\n\t\t\t</$checkbox>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<$checkbox tiddler=\"$:/config/Manager/System\" field=\"text\" checked=\"\" unchecked=\"system\" default=\"system\">\n\t\t\t\t{{$:/language/SystemTiddlers/Include/Prompt}}\n\t\t\t</$checkbox>\n\t\t</div>\n\t</div>\n\t<div class=\"tc-manager-list\">\n\t\t<$list filter=\"[all{$:/config/Manager/Show}!is{$:/config/Manager/System}search{$:/config/Manager/Filter}tag:strict{$:/config/Manager/Tag}sort{$:/config/Manager/Sort}order{$:/config/Manager/Order}]\">\n\t\t\t<$vars transclusion=<<currentTiddler>>>\n\t\t\t\t<div style=\"tc-manager-list-item\">\n\t\t\t\t\t<$button popup=<<qualify \"$:/state/manager/popup\">> class=\"tc-btn-invisible tc-manager-list-item-heading\" selectedClass=\"tc-manager-list-item-heading-selected\">\n\t\t\t\t\t\t<$text text=<<currentTiddler>>/>\n\t\t\t\t\t</$button>\n\t\t\t\t\t<$reveal state=<<qualify \"$:/state/manager/popup\">> type=\"nomatch\" text=\"\" default=\"\" tag=\"div\" class=\"tc-manager-list-item-content tc-popup-handle\">\n\t\t\t\t\t\t<div class=\"tc-manager-list-item-content-tiddler\">\n\t\t\t\t\t\t\t<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Manager/ItemMain]!has[draft.of]]\" variable=\"listItem\">\n\t\t\t\t\t\t\t\t<<list-item-content-item>>\n\t\t\t\t\t\t\t</$list>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"tc-manager-list-item-content-sidebar\">\n\t\t\t\t\t\t\t<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Manager/ItemSidebar]!has[draft.of]]\" variable=\"listItem\">\n\t\t\t\t\t\t\t\t<<list-item-content-item>>\n\t\t\t\t\t\t\t</$list>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</$reveal>\n\t\t\t\t</div>\n\t\t\t</$vars>\n\t\t</$list>\n\t</div>\n</div>\n"
        },
        "$:/core/ui/MissingTemplate": {
            "title": "$:/core/ui/MissingTemplate",
            "text": "<div class=\"tc-tiddler-missing\">\n<$button popup=<<qualify \"$:/state/popup/missing\">> class=\"tc-btn-invisible tc-missing-tiddler-label\">\n<$view field=\"title\" format=\"text\" />\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/missing\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n<hr>\n<$list filter=\"[all[current]backlinks[]sort[title]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$reveal>\n</div>\n"
        },
        "$:/core/ui/MoreSideBar/All": {
            "title": "$:/core/ui/MoreSideBar/All",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/All/Caption}}",
            "text": "<$list filter={{$:/core/Filters/AllTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/MoreSideBar/Drafts": {
            "title": "$:/core/ui/MoreSideBar/Drafts",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Drafts/Caption}}",
            "text": "<$list filter={{$:/core/Filters/Drafts!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/MoreSideBar/Missing": {
            "title": "$:/core/ui/MoreSideBar/Missing",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Missing/Caption}}",
            "text": "<$list filter={{$:/core/Filters/Missing!!filter}} template=\"$:/core/ui/MissingTemplate\"/>\n"
        },
        "$:/core/ui/MoreSideBar/Orphans": {
            "title": "$:/core/ui/MoreSideBar/Orphans",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Orphans/Caption}}",
            "text": "<$list filter={{$:/core/Filters/Orphans!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/MoreSideBar/Plugins": {
            "title": "$:/core/ui/MoreSideBar/Plugins",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/ControlPanel/Plugins/Caption}}",
            "text": "\n{{$:/language/ControlPanel/Plugins/Installed/Hint}}\n\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar/Plugins]!has[draft.of]]\" \"$:/core/ui/MoreSideBar/Plugins/Plugins\">>\n"
        },
        "$:/core/ui/MoreSideBar/Recent": {
            "title": "$:/core/ui/MoreSideBar/Recent",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Recent/Caption}}",
            "text": "<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n"
        },
        "$:/core/ui/MoreSideBar/Shadows": {
            "title": "$:/core/ui/MoreSideBar/Shadows",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Shadows/Caption}}",
            "text": "<$list filter={{$:/core/Filters/ShadowTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/MoreSideBar/System": {
            "title": "$:/core/ui/MoreSideBar/System",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/System/Caption}}",
            "text": "<$list filter={{$:/core/Filters/SystemTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/MoreSideBar/Tags": {
            "title": "$:/core/ui/MoreSideBar/Tags",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Tags/Caption}}",
            "text": "<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n{{$:/core/ui/Buttons/tag-manager}}\n\n</$set>\n\n</$set>\n\n</$set>\n\n<$list filter={{$:/core/Filters/AllTags!!filter}}>\n\n<$transclude tiddler=\"$:/core/ui/TagTemplate\"/>\n\n</$list>\n\n<hr class=\"tc-untagged-separator\">\n\n{{$:/core/ui/UntaggedTemplate}}\n"
        },
        "$:/core/ui/MoreSideBar/Types": {
            "title": "$:/core/ui/MoreSideBar/Types",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Types/Caption}}",
            "text": "<$list filter={{$:/core/Filters/TypedTiddlers!!filter}}>\n<div class=\"tc-menu-list-item\">\n<$view field=\"type\"/>\n<$list filter=\"[type{!!type}!is[system]sort[title]]\">\n<div class=\"tc-menu-list-subitem\">\n<$link to={{!!title}}><$view field=\"title\"/></$link>\n</div>\n</$list>\n</div>\n</$list>\n"
        },
        "$:/core/ui/MoreSideBar/Plugins/Languages": {
            "title": "$:/core/ui/MoreSideBar/Plugins/Languages",
            "tags": "$:/tags/MoreSideBar/Plugins",
            "caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}}",
            "text": "<$list filter=\"[!has[draft.of]plugin-type[language]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}/>\n"
        },
        "$:/core/ui/MoreSideBar/Plugins/Plugins": {
            "title": "$:/core/ui/MoreSideBar/Plugins/Plugins",
            "tags": "$:/tags/MoreSideBar/Plugins",
            "caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}}",
            "text": "<$list filter=\"[!has[draft.of]plugin-type[plugin]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}>>/>\n"
        },
        "$:/core/ui/MoreSideBar/Plugins/Theme": {
            "title": "$:/core/ui/MoreSideBar/Plugins/Theme",
            "tags": "$:/tags/MoreSideBar/Plugins",
            "caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}}",
            "text": "<$list filter=\"[!has[draft.of]plugin-type[theme]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}/>\n"
        },
        "$:/core/ui/Buttons/advanced-search": {
            "title": "$:/core/ui/Buttons/advanced-search",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/advanced-search-button}} {{$:/language/Buttons/AdvancedSearch/Caption}}",
            "description": "{{$:/language/Buttons/AdvancedSearch/Hint}}",
            "text": "\\define control-panel-button(class)\n<$button to=\"$:/AdvancedSearch\" tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/advanced-search-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/AdvancedSearch/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/AdvancedSearch]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"
        },
        "$:/core/ui/Buttons/close-all": {
            "title": "$:/core/ui/Buttons/close-all",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/close-all-button}} {{$:/language/Buttons/CloseAll/Caption}}",
            "description": "{{$:/language/Buttons/CloseAll/Hint}}",
            "text": "<$button message=\"tm-close-all-tiddlers\" tooltip={{$:/language/Buttons/CloseAll/Hint}} aria-label={{$:/language/Buttons/CloseAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/close-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/CloseAll/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/control-panel": {
            "title": "$:/core/ui/Buttons/control-panel",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/options-button}} {{$:/language/Buttons/ControlPanel/Caption}}",
            "description": "{{$:/language/Buttons/ControlPanel/Hint}}",
            "text": "\\define control-panel-button(class)\n<$button to=\"$:/ControlPanel\" tooltip={{$:/language/Buttons/ControlPanel/Hint}} aria-label={{$:/language/Buttons/ControlPanel/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/options-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/ControlPanel/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/ControlPanel]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"
        },
        "$:/core/ui/Buttons/encryption": {
            "title": "$:/core/ui/Buttons/encryption",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/locked-padlock}} {{$:/language/Buttons/Encryption/Caption}}",
            "description": "{{$:/language/Buttons/Encryption/Hint}}",
            "text": "<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\n<$button message=\"tm-clear-password\" tooltip={{$:/language/Buttons/Encryption/ClearPassword/Hint}} aria-label={{$:/language/Buttons/Encryption/ClearPassword/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/locked-padlock}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Encryption/ClearPassword/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n<$button message=\"tm-set-password\" tooltip={{$:/language/Buttons/Encryption/SetPassword/Hint}} aria-label={{$:/language/Buttons/Encryption/SetPassword/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/unlocked-padlock}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Encryption/SetPassword/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>"
        },
        "$:/core/ui/Buttons/export-page": {
            "title": "$:/core/ui/Buttons/export-page",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/export-button}} {{$:/language/Buttons/ExportPage/Caption}}",
            "description": "{{$:/language/Buttons/ExportPage/Hint}}",
            "text": "<$macrocall $name=\"exportButton\" exportFilter=\"[!is[system]sort[title]]\" lingoBase=\"$:/language/Buttons/ExportPage/\"/>"
        },
        "$:/core/ui/Buttons/fold-all": {
            "title": "$:/core/ui/Buttons/fold-all",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/fold-all-button}} {{$:/language/Buttons/FoldAll/Caption}}",
            "description": "{{$:/language/Buttons/FoldAll/Hint}}",
            "text": "<$button tooltip={{$:/language/Buttons/FoldAll/Hint}} aria-label={{$:/language/Buttons/FoldAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-all-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/FoldAll/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/full-screen": {
            "title": "$:/core/ui/Buttons/full-screen",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/full-screen-button}} {{$:/language/Buttons/FullScreen/Caption}}",
            "description": "{{$:/language/Buttons/FullScreen/Hint}}",
            "text": "<$button message=\"tm-full-screen\" tooltip={{$:/language/Buttons/FullScreen/Hint}} aria-label={{$:/language/Buttons/FullScreen/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/full-screen-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/FullScreen/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/home": {
            "title": "$:/core/ui/Buttons/home",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/home-button}} {{$:/language/Buttons/Home/Caption}}",
            "description": "{{$:/language/Buttons/Home/Hint}}",
            "text": "<$button message=\"tm-home\" tooltip={{$:/language/Buttons/Home/Hint}} aria-label={{$:/language/Buttons/Home/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/home-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Home/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/import": {
            "title": "$:/core/ui/Buttons/import",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/import-button}} {{$:/language/Buttons/Import/Caption}}",
            "description": "{{$:/language/Buttons/Import/Hint}}",
            "text": "<div class=\"tc-file-input-wrapper\">\n<$button tooltip={{$:/language/Buttons/Import/Hint}} aria-label={{$:/language/Buttons/Import/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/import-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Import/Caption}}/></span>\n</$list>\n</$button>\n<$browse tooltip={{$:/language/Buttons/Import/Hint}}/>\n</div>"
        },
        "$:/core/ui/Buttons/language": {
            "title": "$:/core/ui/Buttons/language",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/globe}} {{$:/language/Buttons/Language/Caption}}",
            "description": "{{$:/language/Buttons/Language/Hint}}",
            "text": "\\define flag-title()\n$(languagePluginTitle)$/icon\n\\end\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/language\">> tooltip={{$:/language/Buttons/Language/Hint}} aria-label={{$:/language/Buttons/Language/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n<span class=\"tc-image-button\">\n<$set name=\"languagePluginTitle\" value={{$:/language}}>\n<$image source=<<flag-title>>/>\n</$set>\n</span>\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Language/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/language\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down tc-drop-down-language-chooser\">\n<$linkcatcher to=\"$:/language\">\n<$list filter=\"[[$:/languages/en-GB]] [plugin-type[language]sort[description]]\">\n<$link>\n<span class=\"tc-drop-down-bullet\">\n<$reveal type=\"match\" state=\"$:/language\" text=<<currentTiddler>>>\n&bull;\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/language\" text=<<currentTiddler>>>\n&nbsp;\n</$reveal>\n</span>\n<span class=\"tc-image-button\">\n<$set name=\"languagePluginTitle\" value=<<currentTiddler>>>\n<$transclude subtiddler=<<flag-title>>>\n<$list filter=\"[all[current]field:title[$:/languages/en-GB]]\">\n<$transclude tiddler=\"$:/languages/en-GB/icon\"/>\n</$list>\n</$transclude>\n</$set>\n</span>\n<$view field=\"description\">\n<$view field=\"name\">\n<$view field=\"title\"/>\n</$view>\n</$view>\n</$link>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>"
        },
        "$:/core/ui/Buttons/manager": {
            "title": "$:/core/ui/Buttons/manager",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/list}} {{$:/language/Buttons/Manager/Caption}}",
            "description": "{{$:/language/Buttons/Manager/Hint}}",
            "text": "\\define manager-button(class)\n<$button to=\"$:/Manager\" tooltip={{$:/language/Buttons/Manager/Hint}} aria-label={{$:/language/Buttons/Manager/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/list}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Manager/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/Manager]]\" emptyMessage=<<manager-button>>>\n<<manager-button \"tc-selected\">>\n</$list>\n"
        },
        "$:/core/ui/Buttons/more-page-actions": {
            "title": "$:/core/ui/Buttons/more-page-actions",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/down-arrow}} {{$:/language/Buttons/More/Caption}}",
            "description": "{{$:/language/Buttons/More/Hint}}",
            "text": "\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n<$button popup=<<qualify \"$:/state/popup/more\">> tooltip={{$:/language/Buttons/More/Hint}} aria-label={{$:/language/Buttons/More/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/down-arrow}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/More/Caption}}/></span>\n</$list>\n</$button><$reveal state=<<qualify \"$:/state/popup/more\">> type=\"popup\" position=\"below\" animate=\"yes\">\n\n<div class=\"tc-drop-down\">\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"tc-btn-invisible\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]] -[[$:/core/ui/Buttons/more-page-actions]]\" variable=\"listItem\">\n\n<$reveal type=\"match\" state=<<config-title>> text=\"hide\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$reveal>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</div>\n\n</$reveal>"
        },
        "$:/core/ui/Buttons/new-image": {
            "title": "$:/core/ui/Buttons/new-image",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/new-image-button}} {{$:/language/Buttons/NewImage/Caption}}",
            "description": "{{$:/language/Buttons/NewImage/Hint}}",
            "text": "<$button tooltip={{$:/language/Buttons/NewImage/Hint}} aria-label={{$:/language/Buttons/NewImage/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-new-tiddler\" type=\"image/jpeg\"/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/new-image-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewImage/Caption}}/></span>\n</$list>\n</$button>\n"
        },
        "$:/core/ui/Buttons/new-journal": {
            "title": "$:/core/ui/Buttons/new-journal",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/new-journal-button}} {{$:/language/Buttons/NewJournal/Caption}}",
            "description": "{{$:/language/Buttons/NewJournal/Hint}}",
            "text": "\\define journalButton()\n<$button tooltip={{$:/language/Buttons/NewJournal/Hint}} aria-label={{$:/language/Buttons/NewJournal/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<now \"$(journalTitleTemplate)$\">> tags=\"$(journalTags)$\" text=\"$(journalText)$\"/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/new-journal-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewJournal/Caption}}/></span>\n</$list>\n</$button>\n\\end\n<$set name=\"journalTitleTemplate\" value={{$:/config/NewJournal/Title}}>\n<$set name=\"journalTags\" value={{$:/config/NewJournal/Tags}}>\n<$set name=\"journalText\" value={{$:/config/NewJournal/Text}}>\n<<journalButton>>\n</$set></$set></$set>"
        },
        "$:/core/ui/Buttons/new-tiddler": {
            "title": "$:/core/ui/Buttons/new-tiddler",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/new-button}} {{$:/language/Buttons/NewTiddler/Caption}}",
            "description": "{{$:/language/Buttons/NewTiddler/Hint}}",
            "text": "<$button message=\"tm-new-tiddler\" tooltip={{$:/language/Buttons/NewTiddler/Hint}} aria-label={{$:/language/Buttons/NewTiddler/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/new-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewTiddler/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/palette": {
            "title": "$:/core/ui/Buttons/palette",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/palette}} {{$:/language/Buttons/Palette/Caption}}",
            "description": "{{$:/language/Buttons/Palette/Hint}}",
            "text": "<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/palette\">> tooltip={{$:/language/Buttons/Palette/Hint}} aria-label={{$:/language/Buttons/Palette/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/palette}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Palette/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/palette\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\" style=\"font-size:0.7em;\">\n{{$:/snippets/paletteswitcher}}\n</div>\n</$reveal>"
        },
        "$:/core/ui/Buttons/print": {
            "title": "$:/core/ui/Buttons/print",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/print-button}} {{$:/language/Buttons/Print/Caption}}",
            "description": "{{$:/language/Buttons/Print/Hint}}",
            "text": "<$button message=\"tm-print\" tooltip={{$:/language/Buttons/Print/Hint}} aria-label={{$:/language/Buttons/Print/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/print-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Print/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/refresh": {
            "title": "$:/core/ui/Buttons/refresh",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/refresh-button}} {{$:/language/Buttons/Refresh/Caption}}",
            "description": "{{$:/language/Buttons/Refresh/Hint}}",
            "text": "<$button message=\"tm-browser-refresh\" tooltip={{$:/language/Buttons/Refresh/Hint}} aria-label={{$:/language/Buttons/Refresh/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/refresh-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Refresh/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/save-wiki": {
            "title": "$:/core/ui/Buttons/save-wiki",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/save-button}} {{$:/language/Buttons/SaveWiki/Caption}}",
            "description": "{{$:/language/Buttons/SaveWiki/Hint}}",
            "text": "<$button message=\"tm-save-wiki\" param={{$:/config/SaveWikiButton/Template}} tooltip={{$:/language/Buttons/SaveWiki/Hint}} aria-label={{$:/language/Buttons/SaveWiki/Caption}} class=<<tv-config-toolbar-class>>>\n<span class=\"tc-dirty-indicator\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/save-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/SaveWiki/Caption}}/></span>\n</$list>\n</span>\n</$button>"
        },
        "$:/core/ui/Buttons/storyview": {
            "title": "$:/core/ui/Buttons/storyview",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/storyview-classic}} {{$:/language/Buttons/StoryView/Caption}}",
            "description": "{{$:/language/Buttons/StoryView/Hint}}",
            "text": "\\define icon()\n$:/core/images/storyview-$(storyview)$\n\\end\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/storyview\">> tooltip={{$:/language/Buttons/StoryView/Hint}} aria-label={{$:/language/Buttons/StoryView/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n<$set name=\"storyview\" value={{$:/view}}>\n<$transclude tiddler=<<icon>>/>\n</$set>\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/StoryView/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/storyview\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$linkcatcher to=\"$:/view\">\n<$list filter=\"[storyviews[]]\" variable=\"storyview\">\n<$link to=<<storyview>>>\n<span class=\"tc-drop-down-bullet\">\n<$reveal type=\"match\" state=\"$:/view\" text=<<storyview>>>\n&bull;\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/view\" text=<<storyview>>>\n&nbsp;\n</$reveal>\n</span>\n<$transclude tiddler=<<icon>>/>\n<$text text=<<storyview>>/></$link>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>"
        },
        "$:/core/ui/Buttons/tag-manager": {
            "title": "$:/core/ui/Buttons/tag-manager",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/tag-button}} {{$:/language/Buttons/TagManager/Caption}}",
            "description": "{{$:/language/Buttons/TagManager/Hint}}",
            "text": "\\define control-panel-button(class)\n<$button to=\"$:/TagManager\" tooltip={{$:/language/Buttons/TagManager/Hint}} aria-label={{$:/language/Buttons/TagManager/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/tag-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/TagManager/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/TagManager]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"
        },
        "$:/core/ui/Buttons/theme": {
            "title": "$:/core/ui/Buttons/theme",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/theme-button}} {{$:/language/Buttons/Theme/Caption}}",
            "description": "{{$:/language/Buttons/Theme/Hint}}",
            "text": "<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/theme\">> tooltip={{$:/language/Buttons/Theme/Hint}} aria-label={{$:/language/Buttons/Theme/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/theme-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Theme/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/theme\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$linkcatcher to=\"$:/theme\">\n<$list filter=\"[plugin-type[theme]sort[title]]\" variable=\"themeTitle\">\n<$link to=<<themeTitle>>>\n<span class=\"tc-drop-down-bullet\">\n<$reveal type=\"match\" state=\"$:/theme\" text=<<themeTitle>>>\n&bull;\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/theme\" text=<<themeTitle>>>\n&nbsp;\n</$reveal>\n</span>\n<$view tiddler=<<themeTitle>> field=\"name\"/>\n</$link>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>"
        },
        "$:/core/ui/Buttons/timestamp": {
            "title": "$:/core/ui/Buttons/timestamp",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/timestamp-on}} {{$:/language/Buttons/Timestamp/Caption}}",
            "description": "{{$:/language/Buttons/Timestamp/Hint}}",
            "text": "<$reveal type=\"nomatch\" state=\"$:/config/TimestampDisable\" text=\"yes\">\n<$button tooltip={{$:/language/Buttons/Timestamp/On/Hint}} aria-label={{$:/language/Buttons/Timestamp/On/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=\"yes\"/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/timestamp-on}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Timestamp/On/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=\"$:/config/TimestampDisable\" text=\"yes\">\n<$button tooltip={{$:/language/Buttons/Timestamp/Off/Hint}} aria-label={{$:/language/Buttons/Timestamp/Off/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=\"no\"/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/timestamp-off}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Timestamp/Off/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>"
        },
        "$:/core/ui/Buttons/unfold-all": {
            "title": "$:/core/ui/Buttons/unfold-all",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/unfold-all-button}} {{$:/language/Buttons/UnfoldAll/Caption}}",
            "description": "{{$:/language/Buttons/UnfoldAll/Hint}}",
            "text": "<$button tooltip={{$:/language/Buttons/UnfoldAll/Hint}} aria-label={{$:/language/Buttons/UnfoldAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-unfold-all-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\" variable=\"listItem\">\n{{$:/core/images/unfold-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/UnfoldAll/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/PageTemplate/pagecontrols": {
            "title": "$:/core/ui/PageTemplate/pagecontrols",
            "text": "\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-page-controls\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\" variable=\"listItem\">\n<$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\">\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n</$reveal>\n</$list>\n</div>\n\n"
        },
        "$:/core/ui/PageStylesheet": {
            "title": "$:/core/ui/PageStylesheet",
            "text": "<$importvariables filter=\"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\">\n\n<$set name=\"currentTiddler\" value={{$:/language}}>\n\n<$set name=\"languageTitle\" value={{!!name}}>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<$transclude mode=\"block\"/>\n</$list>\n\n</$set>\n\n</$set>\n\n</$importvariables>\n"
        },
        "$:/core/ui/PageTemplate/alerts": {
            "title": "$:/core/ui/PageTemplate/alerts",
            "tags": "$:/tags/PageTemplate",
            "text": "<div class=\"tc-alerts\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Alert]!has[draft.of]]\" template=\"$:/core/ui/AlertTemplate\" storyview=\"pop\"/>\n\n</div>\n"
        },
        "$:/core/ui/PageTemplate/pluginreloadwarning": {
            "title": "$:/core/ui/PageTemplate/pluginreloadwarning",
            "tags": "$:/tags/PageTemplate",
            "text": "\\define lingo-base() $:/language/\n\n<$list filter=\"[has[plugin-type]haschanged[]!plugin-type[import]limit[1]]\">\n\n<$reveal type=\"nomatch\" state=\"$:/temp/HidePluginWarning\" text=\"yes\">\n\n<div class=\"tc-plugin-reload-warning\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<<lingo PluginReloadWarning>> <$button set=\"$:/temp/HidePluginWarning\" setTo=\"yes\" class=\"tc-btn-invisible\">{{$:/core/images/close-button}}</$button>\n\n</$set>\n\n</div>\n\n</$reveal>\n\n</$list>\n"
        },
        "$:/core/ui/PageTemplate/sidebar": {
            "title": "$:/core/ui/PageTemplate/sidebar",
            "tags": "$:/tags/PageTemplate",
            "text": "<$scrollable fallthrough=\"no\" class=\"tc-sidebar-scrollable\">\n\n<div class=\"tc-sidebar-header\">\n\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\" retain=\"yes\" animate=\"yes\">\n\n<h1 class=\"tc-site-title\">\n\n<$transclude tiddler=\"$:/SiteTitle\" mode=\"inline\"/>\n\n</h1>\n\n<div class=\"tc-site-subtitle\">\n\n<$transclude tiddler=\"$:/SiteSubtitle\" mode=\"inline\"/>\n\n</div>\n\n{{||$:/core/ui/PageTemplate/pagecontrols}}\n\n<$transclude tiddler=\"$:/core/ui/SideBarLists\" mode=\"inline\"/>\n\n</$reveal>\n\n</div>\n\n</$scrollable>"
        },
        "$:/core/ui/PageTemplate/story": {
            "title": "$:/core/ui/PageTemplate/story",
            "tags": "$:/tags/PageTemplate",
            "text": "<section class=\"tc-story-river\">\n\n<section class=\"story-backdrop\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/AboveStory]!has[draft.of]]\">\n\n<$transclude/>\n\n</$list>\n\n</section>\n\n<$list filter=\"[list[$:/StoryList]]\" history=\"$:/HistoryList\" template=\"$:/core/ui/ViewTemplate\" editTemplate=\"$:/core/ui/EditTemplate\" storyview={{$:/view}} emptyMessage={{$:/config/EmptyStoryMessage}}/>\n\n<section class=\"story-frontdrop\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/BelowStory]!has[draft.of]]\">\n\n<$transclude/>\n\n</$list>\n\n</section>\n\n</section>\n"
        },
        "$:/core/ui/PageTemplate/topleftbar": {
            "title": "$:/core/ui/PageTemplate/topleftbar",
            "tags": "$:/tags/PageTemplate",
            "text": "<span class=\"tc-topbar tc-topbar-left\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopLeftBar]!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>\n\n</span>\n"
        },
        "$:/core/ui/PageTemplate/toprightbar": {
            "title": "$:/core/ui/PageTemplate/toprightbar",
            "tags": "$:/tags/PageTemplate",
            "text": "<span class=\"tc-topbar tc-topbar-right\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopRightBar]!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>\n\n</span>\n"
        },
        "$:/core/ui/PageTemplate": {
            "title": "$:/core/ui/PageTemplate",
            "text": "\\define containerClasses()\ntc-page-container tc-page-view-$(themeTitle)$ tc-language-$(languageTitle)$\n\\end\n\n<$importvariables filter=\"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\">\n\n<$set name=\"tv-config-toolbar-icons\" value={{$:/config/Toolbar/Icons}}>\n\n<$set name=\"tv-config-toolbar-text\" value={{$:/config/Toolbar/Text}}>\n\n<$set name=\"tv-config-toolbar-class\" value={{$:/config/Toolbar/ButtonClass}}>\n\n<$set name=\"themeTitle\" value={{$:/view}}>\n\n<$set name=\"currentTiddler\" value={{$:/language}}>\n\n<$set name=\"languageTitle\" value={{!!name}}>\n\n<$set name=\"currentTiddler\" value=\"\">\n\n<div class=<<containerClasses>>>\n\n<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n\n<$dropzone>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageTemplate]!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>>/>\n\n</$list>\n\n</$dropzone>\n\n</$navigator>\n\n</div>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$importvariables>\n"
        },
        "$:/core/ui/PluginInfo": {
            "title": "$:/core/ui/PluginInfo",
            "text": "\\define localised-info-tiddler-title()\n$(currentTiddler)$/$(languageTitle)$/$(currentTab)$\n\\end\n\\define info-tiddler-title()\n$(currentTiddler)$/$(currentTab)$\n\\end\n\\define default-tiddler-title()\n$:/core/ui/PluginInfo/Default/$(currentTab)$\n\\end\n<$transclude tiddler=<<localised-info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<localised-info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<default-tiddler-title>> mode=\"block\">\n{{$:/language/ControlPanel/Plugin/NoInfoFound/Hint}}\n</$transclude>\n</$transclude>\n</$transclude>\n</$transclude>\n"
        },
        "$:/core/ui/PluginInfo/Default/contents": {
            "title": "$:/core/ui/PluginInfo/Default/contents",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/PluginInfo/\n<<lingo Hint>>\n<ul>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" emptyMessage=<<lingo Empty/Hint>>>\n<li>\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</li>\n</$list>\n</ul>\n"
        },
        "$:/core/ui/PluginListItemTemplate": {
            "title": "$:/core/ui/PluginListItemTemplate",
            "text": "<div class=\"tc-menu-list-item\">\n<$link to={{!!title}}>\n<$view field=\"description\">\n<$view field=\"title\"/>\n</$view>\n</$link>\n</div>"
        },
        "$:/core/ui/SearchResults": {
            "title": "$:/core/ui/SearchResults",
            "text": "<div class=\"tc-search-results\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\">\n<$transclude mode=\"block\"/>\n</$list>\n\"\"\">\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}}/>\n\n</$list>\n\n</div>\n"
        },
        "$:/core/ui/SideBar/More": {
            "title": "$:/core/ui/SideBar/More",
            "tags": "$:/tags/SideBar",
            "caption": "{{$:/language/SideBar/More/Caption}}",
            "text": "<div class=\"tc-more-sidebar\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]\" \"$:/core/ui/MoreSideBar/Tags\" \"$:/state/tab/moresidebar\" \"tc-vertical\">>\n</div>\n"
        },
        "$:/core/ui/SideBar/Open": {
            "title": "$:/core/ui/SideBar/Open",
            "tags": "$:/tags/SideBar",
            "caption": "{{$:/language/SideBar/Open/Caption}}",
            "text": "\\define lingo-base() $:/language/CloseAll/\n\n\\define drop-actions()\n<$action-listops $tiddler=\"$:/StoryList\" $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\\end\n\n<$list filter=\"[list[$:/StoryList]]\" history=\"$:/HistoryList\" storyview=\"pop\">\n<div style=\"position: relative;\">\n<$droppable actions=<<drop-actions>>>\n<div class=\"tc-droppable-placeholder\">\n&nbsp;\n</div>\n<div>\n<$button message=\"tm-close-tiddler\" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class=\"tc-btn-invisible tc-btn-mini\">&times;</$button> <$link to={{!!title}}><$view field=\"title\"/></$link>\n</div>\n</$droppable>\n</div>\n</$list>\n<$tiddler tiddler=\"\">\n<$droppable actions=<<drop-actions>>>\n<div class=\"tc-droppable-placeholder\">\n&nbsp;\n</div>\n<$button message=\"tm-close-all-tiddlers\" class=\"tc-btn-invisible tc-btn-mini\"><<lingo Button>></$button>\n</$droppable>\n</$tiddler>\n"
        },
        "$:/core/ui/SideBar/Recent": {
            "title": "$:/core/ui/SideBar/Recent",
            "tags": "$:/tags/SideBar",
            "caption": "{{$:/language/SideBar/Recent/Caption}}",
            "text": "<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n"
        },
        "$:/core/ui/SideBar/Tools": {
            "title": "$:/core/ui/SideBar/Tools",
            "tags": "$:/tags/SideBar",
            "caption": "{{$:/language/SideBar/Tools/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/\n\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n\n<<lingo Basics/Version/Prompt>> <<version>>\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\" variable=\"listItem\">\n\n<div style=\"position:relative;\">\n\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <$transclude tiddler=<<listItem>>/> <i class=\"tc-muted\"><$transclude tiddler=<<listItem>> field=\"description\"/></i>\n\n</div>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n"
        },
        "$:/core/ui/SideBarLists": {
            "title": "$:/core/ui/SideBarLists",
            "text": "<div class=\"tc-sidebar-lists\">\n\n<$set name=\"searchTiddler\" value=\"$:/temp/search\">\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/search\" type=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}} focusPopup=<<qualify \"$:/state/popup/search-dropdown\">> class=\"tc-popup-handle\"/>\n<$reveal state=\"$:/temp/search\" type=\"nomatch\" text=\"\">\n<$button tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" text={{$:/temp/search}}/>\n<$action-setfield $tiddler=\"$:/temp/search\" text=\"\"/>\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n{{$:/core/images/advanced-search-button}}\n</$button>\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/search\" text=\"\" />\n{{$:/core/images/close-button}}\n</$button>\n<$button popup=<<qualify \"$:/state/popup/search-dropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n<$list filter=\"[{$:/temp/search}minlength{$:/config/Search/MinLength}limit[1]]\" variable=\"listItem\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[!is[system]search{$(searchTiddler)$}]\"/>\"\"\">\n{{$:/language/Search/Matches}}\n</$set>\n</$list>\n</$button>\n</$reveal>\n<$reveal state=\"$:/temp/search\" type=\"match\" text=\"\">\n<$button to=\"$:/AdvancedSearch\" tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n{{$:/core/images/advanced-search-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal tag=\"div\" class=\"tc-block-dropdown-wrapper\" state=\"$:/temp/search\" type=\"nomatch\" text=\"\">\n\n<$reveal tag=\"div\" class=\"tc-block-dropdown tc-search-drop-down tc-popup-handle\" state=<<qualify \"$:/state/popup/search-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n\n<$list filter=\"[{$:/temp/search}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n{{$:/core/ui/SearchResults}}\n\n</$list>\n\n</$reveal>\n\n</$reveal>\n\n</$set>\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\" default={{$:/config/DefaultSidebarTab}} state=\"$:/state/tab/sidebar\" />\n\n</div>\n"
        },
        "$:/TagManager": {
            "title": "$:/TagManager",
            "icon": "$:/core/images/tag-button",
            "color": "#bbb",
            "caption": "{{$:/language/TagManager/Caption}}",
            "text": "\\define lingo-base() $:/language/TagManager/\n\\define iconEditorTab(type)\n<$list filter=\"[all[shadows+tiddlers]is[image]] [all[shadows+tiddlers]tag[$:/tags/Image]] -[type[application/pdf]] +[sort[title]] +[$type$is[system]]\">\n<$link to={{!!title}}>\n<$transclude/> <$view field=\"title\"/>\n</$link>\n</$list>\n\\end\n\\define iconEditor(title)\n<div class=\"tc-drop-down-wrapper\">\n<$button popup=<<qualify \"$:/state/popup/icon/$title$\">> class=\"tc-btn-invisible tc-btn-dropdown\">{{$:/core/images/down-arrow}}</$button>\n<$reveal state=<<qualify \"$:/state/popup/icon/$title$\">> type=\"popup\" position=\"belowleft\" text=\"\" default=\"\">\n<div class=\"tc-drop-down\">\n<$linkcatcher to=\"$title$!!icon\">\n<<iconEditorTab type:\"!\">>\n<hr/>\n<<iconEditorTab type:\"\">>\n</$linkcatcher>\n</div>\n</$reveal>\n</div>\n\\end\n\\define qualifyTitle(title)\n$title$$(currentTiddler)$\n\\end\n\\define toggleButton(state)\n<$reveal state=\"$state$\" type=\"match\" text=\"closed\" default=\"closed\">\n<$button set=\"$state$\" setTo=\"open\" class=\"tc-btn-invisible tc-btn-dropdown\" selectedClass=\"tc-selected\">\n{{$:/core/images/info-button}}\n</$button>\n</$reveal>\n<$reveal state=\"$state$\" type=\"match\" text=\"open\" default=\"closed\">\n<$button set=\"$state$\" setTo=\"closed\" class=\"tc-btn-invisible tc-btn-dropdown\" selectedClass=\"tc-selected\">\n{{$:/core/images/info-button}}\n</$button>\n</$reveal>\n\\end\n<table class=\"tc-tag-manager-table\">\n<tbody>\n<tr>\n<th><<lingo Colour/Heading>></th>\n<th class=\"tc-tag-manager-tag\"><<lingo Tag/Heading>></th>\n<th><<lingo Count/Heading>></th>\n<th><<lingo Icon/Heading>></th>\n<th><<lingo Info/Heading>></th>\n</tr>\n<$list filter=\"[tags[]!is[system]sort[title]]\">\n<tr>\n<td><$edit-text field=\"color\" tag=\"input\" type=\"color\"/></td>\n<td><$macrocall $name=\"tag\" tag=<<currentTiddler>>/></td>\n<td><$count filter=\"[all[current]tagging[]]\"/></td>\n<td>\n<$macrocall $name=\"iconEditor\" title={{!!title}}/>\n</td>\n<td>\n<$macrocall $name=\"toggleButton\" state=<<qualifyTitle \"$:/state/tag-manager/\">> /> \n</td>\n</tr>\n<tr>\n<td></td>\n<td colspan=\"4\">\n<$reveal state=<<qualifyTitle \"$:/state/tag-manager/\">> type=\"match\" text=\"open\" default=\"\">\n<table>\n<tbody>\n<tr><td><<lingo Colour/Heading>></td><td><$edit-text field=\"color\" tag=\"input\" type=\"text\" size=\"9\"/></td></tr>\n<tr><td><<lingo Icon/Heading>></td><td><$edit-text field=\"icon\" tag=\"input\" size=\"45\"/></td></tr>\n</tbody>\n</table>\n</$reveal>\n</td>\n</tr>\n</$list>\n<tr>\n<td></td>\n<td>\n{{$:/core/ui/UntaggedTemplate}}\n</td>\n<td>\n<small class=\"tc-menu-list-count\"><$count filter=\"[untagged[]!is[system]] -[tags[]]\"/></small>\n</td>\n<td></td>\n<td></td>\n</tr>\n</tbody>\n</table>\n"
        },
        "$:/core/ui/TagTemplate": {
            "title": "$:/core/ui/TagTemplate",
            "text": "<span class=\"tc-tag-list-item\">\n<$set name=\"transclusion\" value=<<currentTiddler>>>\n<$macrocall $name=\"tag-pill-body\" tag=<<currentTiddler>> icon={{!!icon}} colour={{!!color}} palette={{$:/palette}} element-tag=\"\"\"$button\"\"\" element-attributes=\"\"\"popup=<<qualify \"$:/state/popup/tag\">> dragFilter='[all[current]tagging[]]' tag='span'\"\"\"/>\n<$reveal state=<<qualify \"$:/state/popup/tag\">> type=\"popup\" position=\"below\" animate=\"yes\" class=\"tc-drop-down\">\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TagDropdown]!has[draft.of]]\" variable=\"listItem\"> \n<$transclude tiddler=<<listItem>>/> \n</$list>\n<hr>\n<$macrocall $name=\"list-tagged-draggable\" tag=<<currentTiddler>>/>\n</$reveal>\n</$set>\n</span>\n"
        },
        "$:/core/ui/TiddlerFieldTemplate": {
            "title": "$:/core/ui/TiddlerFieldTemplate",
            "text": "<tr class=\"tc-view-field\">\n<td class=\"tc-view-field-name\">\n<$text text=<<listItem>>/>\n</td>\n<td class=\"tc-view-field-value\">\n<$view field=<<listItem>>/>\n</td>\n</tr>"
        },
        "$:/core/ui/TiddlerFields": {
            "title": "$:/core/ui/TiddlerFields",
            "text": "<table class=\"tc-view-field-table\">\n<tbody>\n<$list filter=\"[all[current]fields[]sort[title]] -text\" template=\"$:/core/ui/TiddlerFieldTemplate\" variable=\"listItem\"/>\n</tbody>\n</table>\n"
        },
        "$:/core/ui/TiddlerInfo/Advanced/PluginInfo": {
            "title": "$:/core/ui/TiddlerInfo/Advanced/PluginInfo",
            "tags": "$:/tags/TiddlerInfo/Advanced",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/PluginInfo/\n<$list filter=\"[all[current]has[plugin-type]]\">\n\n! <<lingo Heading>>\n\n<<lingo Hint>>\n<ul>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" emptyMessage=<<lingo Empty/Hint>>>\n<li>\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</li>\n</$list>\n</ul>\n\n</$list>\n"
        },
        "$:/core/ui/TiddlerInfo/Advanced/ShadowInfo": {
            "title": "$:/core/ui/TiddlerInfo/Advanced/ShadowInfo",
            "tags": "$:/tags/TiddlerInfo/Advanced",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/ShadowInfo/\n<$set name=\"infoTiddler\" value=<<currentTiddler>>>\n\n''<<lingo Heading>>''\n\n<$list filter=\"[all[current]!is[shadow]]\">\n\n<<lingo NotShadow/Hint>>\n\n</$list>\n\n<$list filter=\"[all[current]is[shadow]]\">\n\n<<lingo Shadow/Hint>>\n\n<$list filter=\"[all[current]shadowsource[]]\">\n\n<$set name=\"pluginTiddler\" value=<<currentTiddler>>>\n<<lingo Shadow/Source>>\n</$set>\n\n</$list>\n\n<$list filter=\"[all[current]is[shadow]is[tiddler]]\">\n\n<<lingo OverriddenShadow/Hint>>\n\n</$list>\n\n\n</$list>\n</$set>\n"
        },
        "$:/core/ui/TiddlerInfo/Advanced": {
            "title": "$:/core/ui/TiddlerInfo/Advanced",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/Advanced/Caption}}",
            "text": "<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfo/Advanced]!has[draft.of]]\" variable=\"listItem\">\n<$transclude tiddler=<<listItem>>/>\n\n</$list>\n"
        },
        "$:/core/ui/TiddlerInfo/Fields": {
            "title": "$:/core/ui/TiddlerInfo/Fields",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/Fields/Caption}}",
            "text": "<$transclude tiddler=\"$:/core/ui/TiddlerFields\"/>\n"
        },
        "$:/core/ui/TiddlerInfo/List": {
            "title": "$:/core/ui/TiddlerInfo/List",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/List/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[list{!!title}]\" emptyMessage=<<lingo List/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/TiddlerInfo/Listed": {
            "title": "$:/core/ui/TiddlerInfo/Listed",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/Listed/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]listed[]!is[system]]\" emptyMessage=<<lingo Listed/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/TiddlerInfo/References": {
            "title": "$:/core/ui/TiddlerInfo/References",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/References/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]backlinks[]sort[title]]\" emptyMessage=<<lingo References/Empty>> template=\"$:/core/ui/ListItemTemplate\">\n</$list>\n"
        },
        "$:/core/ui/TiddlerInfo/Tagging": {
            "title": "$:/core/ui/TiddlerInfo/Tagging",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/Tagging/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]tagging[]]\" emptyMessage=<<lingo Tagging/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/TiddlerInfo/Tools": {
            "title": "$:/core/ui/TiddlerInfo/Tools",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/Tools/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]\" variable=\"listItem\">\n\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <$transclude tiddler=<<listItem>>/> <i class=\"tc-muted\"><$transclude tiddler=<<listItem>> field=\"description\"/></i>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n"
        },
        "$:/core/ui/TiddlerInfo": {
            "title": "$:/core/ui/TiddlerInfo",
            "text": "<div style=\"position:relative;\">\n<div class=\"tc-tiddler-controls\" style=\"position:absolute;right:0;\">\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"sticky\">\n<$button set=<<tiddlerInfoState>> setTo=\"\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=\"tc-btn-invisible\">\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n</div>\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfo]!has[draft.of]]\" default={{$:/config/TiddlerInfo/Default}}/>"
        },
        "$:/core/ui/TopBar/menu": {
            "title": "$:/core/ui/TopBar/menu",
            "tags": "$:/tags/TopRightBar",
            "text": "<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"no\">\n<$button set=\"$:/state/sidebar\" setTo=\"no\" tooltip={{$:/language/Buttons/HideSideBar/Hint}} aria-label={{$:/language/Buttons/HideSideBar/Caption}} class=\"tc-btn-invisible\">{{$:/core/images/chevron-right}}</$button>\n</$reveal>\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"no\">\n<$button set=\"$:/state/sidebar\" setTo=\"yes\" tooltip={{$:/language/Buttons/ShowSideBar/Hint}} aria-label={{$:/language/Buttons/ShowSideBar/Caption}} class=\"tc-btn-invisible\">{{$:/core/images/chevron-left}}</$button>\n</$reveal>\n"
        },
        "$:/core/ui/UntaggedTemplate": {
            "title": "$:/core/ui/UntaggedTemplate",
            "text": "\\define lingo-base() $:/language/SideBar/\n<$button popup=<<qualify \"$:/state/popup/tag\">> class=\"tc-btn-invisible tc-untagged-label tc-tag-label\">\n<<lingo Tags/Untagged/Caption>>\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/tag\">> type=\"popup\" position=\"below\">\n<div class=\"tc-drop-down\">\n<$list filter=\"[untagged[]!is[system]] -[tags[]] +[sort[title]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$reveal>\n"
        },
        "$:/core/ui/ViewTemplate/body": {
            "title": "$:/core/ui/ViewTemplate/body",
            "tags": "$:/tags/ViewTemplate",
            "text": "<$reveal tag=\"div\" class=\"tc-tiddler-body\" type=\"nomatch\" state=<<folded-state>> text=\"hide\" retain=\"yes\" animate=\"yes\">\n\n<$list filter=\"[all[current]!has[plugin-type]!field:hide-body[yes]]\">\n\n<$transclude>\n\n<$transclude tiddler=\"$:/language/MissingTiddler/Hint\"/>\n\n</$transclude>\n\n</$list>\n\n</$reveal>"
        },
        "$:/core/ui/ViewTemplate/classic": {
            "title": "$:/core/ui/ViewTemplate/classic",
            "tags": "$:/tags/ViewTemplate $:/tags/EditTemplate",
            "text": "\\define lingo-base() $:/language/ClassicWarning/\n<$list filter=\"[all[current]type[text/x-tiddlywiki]]\">\n<div class=\"tc-message-box\">\n\n<<lingo Hint>>\n\n<$button set=\"!!type\" setTo=\"text/vnd.tiddlywiki\"><<lingo Upgrade/Caption>></$button>\n\n</div>\n</$list>\n"
        },
        "$:/core/ui/ViewTemplate/import": {
            "title": "$:/core/ui/ViewTemplate/import",
            "tags": "$:/tags/ViewTemplate",
            "text": "\\define lingo-base() $:/language/Import/\n\n<$list filter=\"[all[current]field:plugin-type[import]]\">\n\n<div class=\"tc-import\">\n\n<<lingo Listing/Hint>>\n\n<$button message=\"tm-delete-tiddler\" param=<<currentTiddler>>><<lingo Listing/Cancel/Caption>></$button>\n<$button message=\"tm-perform-import\" param=<<currentTiddler>>><<lingo Listing/Import/Caption>></$button>\n\n{{||$:/core/ui/ImportListing}}\n\n<$button message=\"tm-delete-tiddler\" param=<<currentTiddler>>><<lingo Listing/Cancel/Caption>></$button>\n<$button message=\"tm-perform-import\" param=<<currentTiddler>>><<lingo Listing/Import/Caption>></$button>\n\n</div>\n\n</$list>\n"
        },
        "$:/core/ui/ViewTemplate/plugin": {
            "title": "$:/core/ui/ViewTemplate/plugin",
            "tags": "$:/tags/ViewTemplate",
            "text": "<$list filter=\"[all[current]has[plugin-type]] -[all[current]field:plugin-type[import]]\">\n<$set name=\"plugin-type\" value={{!!plugin-type}}>\n<$set name=\"default-popup-state\" value=\"yes\">\n<$set name=\"qualified-state\" value=<<qualify \"$:/state/plugin-info\">>>\n{{||$:/core/ui/Components/plugin-info}}\n</$set>\n</$set>\n</$set>\n</$list>\n"
        },
        "$:/core/ui/ViewTemplate/subtitle": {
            "title": "$:/core/ui/ViewTemplate/subtitle",
            "tags": "$:/tags/ViewTemplate",
            "text": "<$reveal type=\"nomatch\" state=<<folded-state>> text=\"hide\" tag=\"div\" retain=\"yes\" animate=\"yes\">\n<div class=\"tc-subtitle\">\n<$link to={{!!modifier}}>\n<$view field=\"modifier\"/>\n</$link> <$view field=\"modified\" format=\"date\" template={{$:/language/Tiddler/DateFormat}}/>\n</div>\n</$reveal>\n"
        },
        "$:/core/ui/ViewTemplate/tags": {
            "title": "$:/core/ui/ViewTemplate/tags",
            "tags": "$:/tags/ViewTemplate",
            "text": "<$reveal type=\"nomatch\" state=<<folded-state>> text=\"hide\" tag=\"div\" retain=\"yes\" animate=\"yes\">\n<div class=\"tc-tags-wrapper\"><$list filter=\"[all[current]tags[]sort[title]]\" template=\"$:/core/ui/TagTemplate\" storyview=\"pop\"/></div>\n</$reveal>"
        },
        "$:/core/ui/ViewTemplate/title": {
            "title": "$:/core/ui/ViewTemplate/title",
            "tags": "$:/tags/ViewTemplate",
            "text": "\\define title-styles()\nfill:$(foregroundColor)$;\n\\end\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-tiddler-title\">\n<div class=\"tc-titlebar\">\n<span class=\"tc-tiddler-controls\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]\" variable=\"listItem\"><$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\"><$transclude tiddler=<<listItem>>/></$reveal></$list>\n</span>\n<$set name=\"tv-wikilinks\" value={{$:/config/Tiddlers/TitleLinks}}>\n<$link>\n<$set name=\"foregroundColor\" value={{!!color}}>\n<span class=\"tc-tiddler-title-icon\" style=<<title-styles>>>\n<$transclude tiddler={{!!icon}}/>\n</span>\n</$set>\n<$list filter=\"[all[current]removeprefix[$:/]]\">\n<h2 class=\"tc-title\" title={{$:/language/SystemTiddler/Tooltip}}>\n<span class=\"tc-system-title-prefix\">$:/</span><$text text=<<currentTiddler>>/>\n</h2>\n</$list>\n<$list filter=\"[all[current]!prefix[$:/]]\">\n<h2 class=\"tc-title\">\n<$view field=\"title\"/>\n</h2>\n</$list>\n</$link>\n</$set>\n</div>\n\n<$reveal type=\"nomatch\" text=\"\" default=\"\" state=<<tiddlerInfoState>> class=\"tc-tiddler-info tc-popup-handle\" animate=\"yes\" retain=\"yes\">\n\n<$transclude tiddler=\"$:/core/ui/TiddlerInfo\"/>\n\n</$reveal>\n</div>"
        },
        "$:/core/ui/ViewTemplate/unfold": {
            "title": "$:/core/ui/ViewTemplate/unfold",
            "tags": "$:/tags/ViewTemplate",
            "text": "<$reveal tag=\"div\" type=\"nomatch\" state=\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar\" text=\"hide\">\n<$reveal tag=\"div\" type=\"nomatch\" state=<<folded-state>> text=\"hide\" default=\"show\" retain=\"yes\" animate=\"yes\">\n<$button tooltip={{$:/language/Buttons/Fold/Hint}} aria-label={{$:/language/Buttons/Fold/Caption}} class=\"tc-fold-banner\">\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n{{$:/core/images/chevron-up}}\n</$button>\n</$reveal>\n<$reveal tag=\"div\" type=\"nomatch\" state=<<folded-state>> text=\"show\" default=\"show\" retain=\"yes\" animate=\"yes\">\n<$button tooltip={{$:/language/Buttons/Unfold/Hint}} aria-label={{$:/language/Buttons/Unfold/Caption}} class=\"tc-unfold-banner\">\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n{{$:/core/images/chevron-down}}\n</$button>\n</$reveal>\n</$reveal>\n"
        },
        "$:/core/ui/ViewTemplate": {
            "title": "$:/core/ui/ViewTemplate",
            "text": "\\define frame-classes()\ntc-tiddler-frame tc-tiddler-view-frame $(missingTiddlerClass)$ $(shadowTiddlerClass)$ $(systemTiddlerClass)$ $(tiddlerTagClasses)$\n\\end\n\\define folded-state()\n$:/state/folded/$(currentTiddler)$\n\\end\n<$set name=\"storyTiddler\" value=<<currentTiddler>>><$set name=\"tiddlerInfoState\" value=<<qualify \"$:/state/popup/tiddler-info\">>><$tiddler tiddler=<<currentTiddler>>><div class=<<frame-classes>>><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewTemplate]!has[draft.of]]\" variable=\"listItem\"><$transclude tiddler=<<listItem>>/></$list>\n</div>\n</$tiddler></$set></$set>\n"
        },
        "$:/core/ui/Buttons/clone": {
            "title": "$:/core/ui/Buttons/clone",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/clone-button}} {{$:/language/Buttons/Clone/Caption}}",
            "description": "{{$:/language/Buttons/Clone/Hint}}",
            "text": "<$button message=\"tm-new-tiddler\" param=<<currentTiddler>> tooltip={{$:/language/Buttons/Clone/Hint}} aria-label={{$:/language/Buttons/Clone/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/clone-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Clone/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/close-others": {
            "title": "$:/core/ui/Buttons/close-others",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/close-others-button}} {{$:/language/Buttons/CloseOthers/Caption}}",
            "description": "{{$:/language/Buttons/CloseOthers/Hint}}",
            "text": "<$button message=\"tm-close-other-tiddlers\" param=<<currentTiddler>> tooltip={{$:/language/Buttons/CloseOthers/Hint}} aria-label={{$:/language/Buttons/CloseOthers/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/close-others-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/CloseOthers/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/close": {
            "title": "$:/core/ui/Buttons/close",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/close-button}} {{$:/language/Buttons/Close/Caption}}",
            "description": "{{$:/language/Buttons/Close/Hint}}",
            "text": "<$button message=\"tm-close-tiddler\" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/close-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Close/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/edit": {
            "title": "$:/core/ui/Buttons/edit",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/edit-button}} {{$:/language/Buttons/Edit/Caption}}",
            "description": "{{$:/language/Buttons/Edit/Hint}}",
            "text": "<$button message=\"tm-edit-tiddler\" tooltip={{$:/language/Buttons/Edit/Hint}} aria-label={{$:/language/Buttons/Edit/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/edit-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Edit/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/export-tiddler": {
            "title": "$:/core/ui/Buttons/export-tiddler",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/export-button}} {{$:/language/Buttons/ExportTiddler/Caption}}",
            "description": "{{$:/language/Buttons/ExportTiddler/Hint}}",
            "text": "\\define makeExportFilter()\n[[$(currentTiddler)$]]\n\\end\n<$macrocall $name=\"exportButton\" exportFilter=<<makeExportFilter>> lingoBase=\"$:/language/Buttons/ExportTiddler/\" baseFilename=<<currentTiddler>>/>"
        },
        "$:/core/ui/Buttons/fold-bar": {
            "title": "$:/core/ui/Buttons/fold-bar",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/chevron-up}} {{$:/language/Buttons/Fold/FoldBar/Caption}}",
            "description": "{{$:/language/Buttons/Fold/FoldBar/Hint}}",
            "text": "<!-- This dummy toolbar button is here to allow visibility of the fold-bar to be controlled as if it were a toolbar button -->"
        },
        "$:/core/ui/Buttons/fold-others": {
            "title": "$:/core/ui/Buttons/fold-others",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/fold-others-button}} {{$:/language/Buttons/FoldOthers/Caption}}",
            "description": "{{$:/language/Buttons/FoldOthers/Hint}}",
            "text": "<$button tooltip={{$:/language/Buttons/FoldOthers/Hint}} aria-label={{$:/language/Buttons/FoldOthers/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-other-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-others-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/FoldOthers/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/fold": {
            "title": "$:/core/ui/Buttons/fold",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/fold-button}} {{$:/language/Buttons/Fold/Caption}}",
            "description": "{{$:/language/Buttons/Fold/Hint}}",
            "text": "<$reveal type=\"nomatch\" state=<<folded-state>> text=\"hide\" default=\"show\"><$button tooltip={{$:/language/Buttons/Fold/Hint}} aria-label={{$:/language/Buttons/Fold/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/Fold/Caption}}/>\n</span>\n</$list>\n</$button></$reveal><$reveal type=\"match\" state=<<folded-state>> text=\"hide\" default=\"show\"><$button tooltip={{$:/language/Buttons/Unfold/Hint}} aria-label={{$:/language/Buttons/Unfold/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\" variable=\"listItem\">\n{{$:/core/images/unfold-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/Unfold/Caption}}/>\n</span>\n</$list>\n</$button></$reveal>"
        },
        "$:/core/ui/Buttons/info": {
            "title": "$:/core/ui/Buttons/info",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/info-button}} {{$:/language/Buttons/Info/Caption}}",
            "description": "{{$:/language/Buttons/Info/Hint}}",
            "text": "\\define button-content()\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/info-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Info/Caption}}/></span>\n</$list>\n\\end\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"popup\">\n<$button popup=<<tiddlerInfoState>> tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"sticky\">\n<$reveal state=<<tiddlerInfoState>> type=\"match\" text=\"\" default=\"\">\n<$button set=<<tiddlerInfoState>> setTo=\"yes\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n<$reveal state=<<tiddlerInfoState>> type=\"nomatch\" text=\"\" default=\"\">\n<$button set=<<tiddlerInfoState>> setTo=\"\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n</$reveal>"
        },
        "$:/core/ui/Buttons/more-tiddler-actions": {
            "title": "$:/core/ui/Buttons/more-tiddler-actions",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/down-arrow}} {{$:/language/Buttons/More/Caption}}",
            "description": "{{$:/language/Buttons/More/Hint}}",
            "text": "\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<$button popup=<<qualify \"$:/state/popup/more\">> tooltip={{$:/language/Buttons/More/Hint}} aria-label={{$:/language/Buttons/More/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/down-arrow}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/More/Caption}}/></span>\n</$list>\n</$button><$reveal state=<<qualify \"$:/state/popup/more\">> type=\"popup\" position=\"below\" animate=\"yes\">\n\n<div class=\"tc-drop-down\">\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"tc-btn-invisible\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]] -[[$:/core/ui/Buttons/more-tiddler-actions]]\" variable=\"listItem\">\n\n<$reveal type=\"match\" state=<<config-title>> text=\"hide\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$reveal>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</div>\n\n</$reveal>"
        },
        "$:/core/ui/Buttons/new-here": {
            "title": "$:/core/ui/Buttons/new-here",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/new-here-button}} {{$:/language/Buttons/NewHere/Caption}}",
            "description": "{{$:/language/Buttons/NewHere/Hint}}",
            "text": "\\define newHereButtonTags()\n[[$(currentTiddler)$]]\n\\end\n\\define newHereButton()\n<$button tooltip={{$:/language/Buttons/NewHere/Hint}} aria-label={{$:/language/Buttons/NewHere/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-new-tiddler\" tags=<<newHereButtonTags>>/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/new-here-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewHere/Caption}}/></span>\n</$list>\n</$button>\n\\end\n<<newHereButton>>"
        },
        "$:/core/ui/Buttons/new-journal-here": {
            "title": "$:/core/ui/Buttons/new-journal-here",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/new-journal-button}} {{$:/language/Buttons/NewJournalHere/Caption}}",
            "description": "{{$:/language/Buttons/NewJournalHere/Hint}}",
            "text": "\\define journalButtonTags()\n[[$(currentTiddlerTag)$]] $(journalTags)$\n\\end\n\\define journalButton()\n<$button tooltip={{$:/language/Buttons/NewJournalHere/Hint}} aria-label={{$:/language/Buttons/NewJournalHere/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<now \"$(journalTitleTemplate)$\">> tags=<<journalButtonTags>>/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/new-journal-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewJournalHere/Caption}}/></span>\n</$list>\n</$button>\n\\end\n<$set name=\"journalTitleTemplate\" value={{$:/config/NewJournal/Title}}>\n<$set name=\"journalTags\" value={{$:/config/NewJournal/Tags}}>\n<$set name=\"currentTiddlerTag\" value=<<currentTiddler>>>\n<<journalButton>>\n</$set></$set></$set>"
        },
        "$:/core/ui/Buttons/open-window": {
            "title": "$:/core/ui/Buttons/open-window",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/open-window}} {{$:/language/Buttons/OpenWindow/Caption}}",
            "description": "{{$:/language/Buttons/OpenWindow/Hint}}",
            "text": "<$button message=\"tm-open-window\" tooltip={{$:/language/Buttons/OpenWindow/Hint}} aria-label={{$:/language/Buttons/OpenWindow/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/open-window}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/OpenWindow/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/permalink": {
            "title": "$:/core/ui/Buttons/permalink",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/permalink-button}} {{$:/language/Buttons/Permalink/Caption}}",
            "description": "{{$:/language/Buttons/Permalink/Hint}}",
            "text": "<$button message=\"tm-permalink\" tooltip={{$:/language/Buttons/Permalink/Hint}} aria-label={{$:/language/Buttons/Permalink/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/permalink-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Permalink/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/permaview": {
            "title": "$:/core/ui/Buttons/permaview",
            "tags": "$:/tags/ViewToolbar $:/tags/PageControls",
            "caption": "{{$:/core/images/permaview-button}} {{$:/language/Buttons/Permaview/Caption}}",
            "description": "{{$:/language/Buttons/Permaview/Hint}}",
            "text": "<$button message=\"tm-permaview\" tooltip={{$:/language/Buttons/Permaview/Hint}} aria-label={{$:/language/Buttons/Permaview/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/permaview-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Permaview/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/DefaultTiddlers": {
            "title": "$:/DefaultTiddlers",
            "text": "GettingStarted\n"
        },
        "$:/temp/advancedsearch": {
            "title": "$:/temp/advancedsearch",
            "text": ""
        },
        "$:/snippets/allfields": {
            "title": "$:/snippets/allfields",
            "text": "\\define renderfield(title)\n<tr class=\"tc-view-field\"><td class=\"tc-view-field-name\">''$title$'':</td><td class=\"tc-view-field-value\">//{{$:/language/Docs/Fields/$title$}}//</td></tr>\n\\end\n<table class=\"tc-view-field-table\"><tbody><$list filter=\"[fields[]sort[title]]\" variable=\"listItem\"><$macrocall $name=\"renderfield\" title=<<listItem>>/></$list>\n</tbody></table>\n"
        },
        "$:/config/AnimationDuration": {
            "title": "$:/config/AnimationDuration",
            "text": "400"
        },
        "$:/config/AutoSave": {
            "title": "$:/config/AutoSave",
            "text": "yes"
        },
        "$:/config/BitmapEditor/Colour": {
            "title": "$:/config/BitmapEditor/Colour",
            "text": "#444"
        },
        "$:/config/BitmapEditor/ImageSizes": {
            "title": "$:/config/BitmapEditor/ImageSizes",
            "text": "[[62px 100px]] [[100px 62px]] [[124px 200px]] [[200px 124px]] [[248px 400px]] [[371px 600px]] [[400px 248px]] [[556px 900px]] [[600px 371px]] [[742px 1200px]] [[900px 556px]] [[1200px 742px]]"
        },
        "$:/config/BitmapEditor/LineWidth": {
            "title": "$:/config/BitmapEditor/LineWidth",
            "text": "3px"
        },
        "$:/config/BitmapEditor/LineWidths": {
            "title": "$:/config/BitmapEditor/LineWidths",
            "text": "0.25px 0.5px 1px 2px 3px 4px 6px 8px 10px 16px 20px 28px 40px 56px 80px"
        },
        "$:/config/BitmapEditor/Opacities": {
            "title": "$:/config/BitmapEditor/Opacities",
            "text": "0.01 0.025 0.05 0.075 0.1 0.15 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0"
        },
        "$:/config/BitmapEditor/Opacity": {
            "title": "$:/config/BitmapEditor/Opacity",
            "text": "1.0"
        },
        "$:/config/DefaultSidebarTab": {
            "title": "$:/config/DefaultSidebarTab",
            "text": "$:/core/ui/SideBar/Open"
        },
        "$:/config/DownloadSaver/AutoSave": {
            "title": "$:/config/DownloadSaver/AutoSave",
            "text": "no"
        },
        "$:/config/Drafts/TypingTimeout": {
            "title": "$:/config/Drafts/TypingTimeout",
            "text": "400"
        },
        "$:/config/EditTemplateFields/Visibility/title": {
            "title": "$:/config/EditTemplateFields/Visibility/title",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/tags": {
            "title": "$:/config/EditTemplateFields/Visibility/tags",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/text": {
            "title": "$:/config/EditTemplateFields/Visibility/text",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/creator": {
            "title": "$:/config/EditTemplateFields/Visibility/creator",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/created": {
            "title": "$:/config/EditTemplateFields/Visibility/created",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/modified": {
            "title": "$:/config/EditTemplateFields/Visibility/modified",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/modifier": {
            "title": "$:/config/EditTemplateFields/Visibility/modifier",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/type": {
            "title": "$:/config/EditTemplateFields/Visibility/type",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/draft.title": {
            "title": "$:/config/EditTemplateFields/Visibility/draft.title",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/draft.of": {
            "title": "$:/config/EditTemplateFields/Visibility/draft.of",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/revision": {
            "title": "$:/config/EditTemplateFields/Visibility/revision",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/bag": {
            "title": "$:/config/EditTemplateFields/Visibility/bag",
            "text": "hide"
        },
        "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-4": {
            "title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-4",
            "text": "hide"
        },
        "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-5": {
            "title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-5",
            "text": "hide"
        },
        "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-6": {
            "title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-6",
            "text": "hide"
        },
        "$:/config/EditorTypeMappings/image/gif": {
            "title": "$:/config/EditorTypeMappings/image/gif",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/jpeg": {
            "title": "$:/config/EditorTypeMappings/image/jpeg",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/jpg": {
            "title": "$:/config/EditorTypeMappings/image/jpg",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/png": {
            "title": "$:/config/EditorTypeMappings/image/png",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/x-icon": {
            "title": "$:/config/EditorTypeMappings/image/x-icon",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/text/vnd.tiddlywiki": {
            "title": "$:/config/EditorTypeMappings/text/vnd.tiddlywiki",
            "text": "text"
        },
        "$:/config/Manager/Show": {
            "title": "$:/config/Manager/Show",
            "text": "tiddlers"
        },
        "$:/config/Manager/Filter": {
            "title": "$:/config/Manager/Filter",
            "text": ""
        },
        "$:/config/Manager/Order": {
            "title": "$:/config/Manager/Order",
            "text": "forward"
        },
        "$:/config/Manager/Sort": {
            "title": "$:/config/Manager/Sort",
            "text": "title"
        },
        "$:/config/Manager/System": {
            "title": "$:/config/Manager/System",
            "text": "system"
        },
        "$:/config/Manager/Tag": {
            "title": "$:/config/Manager/Tag",
            "text": ""
        },
        "$:/state/popup/manager/item/$:/Manager/ItemMain/RawText": {
            "title": "$:/state/popup/manager/item/$:/Manager/ItemMain/RawText",
            "text": "hide"
        },
        "$:/config/MissingLinks": {
            "title": "$:/config/MissingLinks",
            "text": "yes"
        },
        "$:/config/Navigation/UpdateAddressBar": {
            "title": "$:/config/Navigation/UpdateAddressBar",
            "text": "no"
        },
        "$:/config/Navigation/UpdateHistory": {
            "title": "$:/config/Navigation/UpdateHistory",
            "text": "no"
        },
        "$:/config/OfficialPluginLibrary": {
            "title": "$:/config/OfficialPluginLibrary",
            "tags": "$:/tags/PluginLibrary",
            "url": "http://tiddlywiki.com/library/v5.1.14/index.html",
            "caption": "{{$:/language/OfficialPluginLibrary}}",
            "text": "{{$:/language/OfficialPluginLibrary/Hint}}\n"
        },
        "$:/config/Navigation/openLinkFromInsideRiver": {
            "title": "$:/config/Navigation/openLinkFromInsideRiver",
            "text": "below"
        },
        "$:/config/Navigation/openLinkFromOutsideRiver": {
            "title": "$:/config/Navigation/openLinkFromOutsideRiver",
            "text": "top"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/close-all": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/close-all",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/encryption": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/encryption",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/export-page": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/export-page",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/fold-all": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/fold-all",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/full-screen": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/full-screen",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/refresh": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/refresh",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/import": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/import",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/language": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/language",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/tag-manager": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/tag-manager",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/manager": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/manager",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-journal": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-journal",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-image": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-image",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/palette": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/palette",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/permaview": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/permaview",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/print": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/print",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/storyview": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/storyview",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/timestamp": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/timestamp",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/theme": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/theme",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/unfold-all": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/unfold-all",
            "text": "hide"
        },
        "$:/config/Performance/Instrumentation": {
            "title": "$:/config/Performance/Instrumentation",
            "text": "no"
        },
        "$:/config/SaveWikiButton/Template": {
            "title": "$:/config/SaveWikiButton/Template",
            "text": "$:/core/save/all"
        },
        "$:/config/SaverFilter": {
            "title": "$:/config/SaverFilter",
            "text": "[all[]] -[[$:/HistoryList]] -[[$:/StoryList]] -[[$:/Import]] -[[$:/isEncrypted]] -[[$:/UploadName]] -[prefix[$:/state/]] -[prefix[$:/temp/]]"
        },
        "$:/config/Search/AutoFocus": {
            "title": "$:/config/Search/AutoFocus",
            "text": "true"
        },
        "$:/config/Search/MinLength": {
            "title": "$:/config/Search/MinLength",
            "text": "3"
        },
        "$:/config/SearchResults/Default": {
            "title": "$:/config/SearchResults/Default",
            "text": "$:/core/ui/DefaultSearchResultList"
        },
        "$:/config/ShortcutInfo/bold": {
            "title": "$:/config/ShortcutInfo/bold",
            "text": "{{$:/language/Buttons/Bold/Hint}}"
        },
        "$:/config/ShortcutInfo/cancel-edit-tiddler": {
            "title": "$:/config/ShortcutInfo/cancel-edit-tiddler",
            "text": "{{$:/language/Buttons/Cancel/Hint}}"
        },
        "$:/config/ShortcutInfo/excise": {
            "title": "$:/config/ShortcutInfo/excise",
            "text": "{{$:/language/Buttons/Excise/Hint}}"
        },
        "$:/config/ShortcutInfo/heading-1": {
            "title": "$:/config/ShortcutInfo/heading-1",
            "text": "{{$:/language/Buttons/Heading1/Hint}}"
        },
        "$:/config/ShortcutInfo/heading-2": {
            "title": "$:/config/ShortcutInfo/heading-2",
            "text": "{{$:/language/Buttons/Heading2/Hint}}"
        },
        "$:/config/ShortcutInfo/heading-3": {
            "title": "$:/config/ShortcutInfo/heading-3",
            "text": "{{$:/language/Buttons/Heading3/Hint}}"
        },
        "$:/config/ShortcutInfo/heading-4": {
            "title": "$:/config/ShortcutInfo/heading-4",
            "text": "{{$:/language/Buttons/Heading4/Hint}}"
        },
        "$:/config/ShortcutInfo/heading-5": {
            "title": "$:/config/ShortcutInfo/heading-5",
            "text": "{{$:/language/Buttons/Heading5/Hint}}"
        },
        "$:/config/ShortcutInfo/heading-6": {
            "title": "$:/config/ShortcutInfo/heading-6",
            "text": "{{$:/language/Buttons/Heading6/Hint}}"
        },
        "$:/config/ShortcutInfo/italic": {
            "title": "$:/config/ShortcutInfo/italic",
            "text": "{{$:/language/Buttons/Italic/Hint}}"
        },
        "$:/config/ShortcutInfo/link": {
            "title": "$:/config/ShortcutInfo/link",
            "text": "{{$:/language/Buttons/Link/Hint}}"
        },
        "$:/config/ShortcutInfo/list-bullet": {
            "title": "$:/config/ShortcutInfo/list-bullet",
            "text": "{{$:/language/Buttons/ListBullet/Hint}}"
        },
        "$:/config/ShortcutInfo/list-number": {
            "title": "$:/config/ShortcutInfo/list-number",
            "text": "{{$:/language/Buttons/ListNumber/Hint}}"
        },
        "$:/config/ShortcutInfo/mono-block": {
            "title": "$:/config/ShortcutInfo/mono-block",
            "text": "{{$:/language/Buttons/MonoBlock/Hint}}"
        },
        "$:/config/ShortcutInfo/mono-line": {
            "title": "$:/config/ShortcutInfo/mono-line",
            "text": "{{$:/language/Buttons/MonoLine/Hint}}"
        },
        "$:/config/ShortcutInfo/picture": {
            "title": "$:/config/ShortcutInfo/picture",
            "text": "{{$:/language/Buttons/Picture/Hint}}"
        },
        "$:/config/ShortcutInfo/preview": {
            "title": "$:/config/ShortcutInfo/preview",
            "text": "{{$:/language/Buttons/Preview/Hint}}"
        },
        "$:/config/ShortcutInfo/quote": {
            "title": "$:/config/ShortcutInfo/quote",
            "text": "{{$:/language/Buttons/Quote/Hint}}"
        },
        "$:/config/ShortcutInfo/save-tiddler": {
            "title": "$:/config/ShortcutInfo/save-tiddler",
            "text": "{{$:/language/Buttons/Save/Hint}}"
        },
        "$:/config/ShortcutInfo/stamp": {
            "title": "$:/config/ShortcutInfo/stamp",
            "text": "{{$:/language/Buttons/Stamp/Hint}}"
        },
        "$:/config/ShortcutInfo/strikethrough": {
            "title": "$:/config/ShortcutInfo/strikethrough",
            "text": "{{$:/language/Buttons/Strikethrough/Hint}}"
        },
        "$:/config/ShortcutInfo/subscript": {
            "title": "$:/config/ShortcutInfo/subscript",
            "text": "{{$:/language/Buttons/Subscript/Hint}}"
        },
        "$:/config/ShortcutInfo/superscript": {
            "title": "$:/config/ShortcutInfo/superscript",
            "text": "{{$:/language/Buttons/Superscript/Hint}}"
        },
        "$:/config/ShortcutInfo/underline": {
            "title": "$:/config/ShortcutInfo/underline",
            "text": "{{$:/language/Buttons/Underline/Hint}}"
        },
        "$:/config/SyncFilter": {
            "title": "$:/config/SyncFilter",
            "text": "[is[tiddler]] -[[$:/HistoryList]] -[[$:/Import]] -[[$:/isEncrypted]] -[prefix[$:/status/]] -[prefix[$:/state/]] -[prefix[$:/temp/]]"
        },
        "$:/config/TextEditor/EditorHeight/Height": {
            "title": "$:/config/TextEditor/EditorHeight/Height",
            "text": "400px"
        },
        "$:/config/TextEditor/EditorHeight/Mode": {
            "title": "$:/config/TextEditor/EditorHeight/Mode",
            "text": "auto"
        },
        "$:/config/TiddlerInfo/Default": {
            "title": "$:/config/TiddlerInfo/Default",
            "text": "$:/core/ui/TiddlerInfo/Fields"
        },
        "$:/config/TiddlerInfo/Mode": {
            "title": "$:/config/TiddlerInfo/Mode",
            "text": "popup"
        },
        "$:/config/Tiddlers/TitleLinks": {
            "title": "$:/config/Tiddlers/TitleLinks",
            "text": "no"
        },
        "$:/config/Toolbar/ButtonClass": {
            "title": "$:/config/Toolbar/ButtonClass",
            "text": "tc-btn-invisible"
        },
        "$:/config/Toolbar/Icons": {
            "title": "$:/config/Toolbar/Icons",
            "text": "yes"
        },
        "$:/config/Toolbar/Text": {
            "title": "$:/config/Toolbar/Text",
            "text": "no"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/clone": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/clone",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/close-others": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/close-others",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/export-tiddler": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/export-tiddler",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/more-tiddler-actions": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/more-tiddler-actions",
            "text": "show"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-here": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-here",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-journal-here": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-journal-here",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/open-window": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/open-window",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permalink": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permalink",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permaview": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permaview",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/delete": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/delete",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-others": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-others",
            "text": "hide"
        },
        "$:/config/shortcuts-mac/bold": {
            "title": "$:/config/shortcuts-mac/bold",
            "text": "meta-B"
        },
        "$:/config/shortcuts-mac/italic": {
            "title": "$:/config/shortcuts-mac/italic",
            "text": "meta-I"
        },
        "$:/config/shortcuts-mac/underline": {
            "title": "$:/config/shortcuts-mac/underline",
            "text": "meta-U"
        },
        "$:/config/shortcuts-not-mac/bold": {
            "title": "$:/config/shortcuts-not-mac/bold",
            "text": "ctrl-B"
        },
        "$:/config/shortcuts-not-mac/italic": {
            "title": "$:/config/shortcuts-not-mac/italic",
            "text": "ctrl-I"
        },
        "$:/config/shortcuts-not-mac/underline": {
            "title": "$:/config/shortcuts-not-mac/underline",
            "text": "ctrl-U"
        },
        "$:/config/shortcuts/cancel-edit-tiddler": {
            "title": "$:/config/shortcuts/cancel-edit-tiddler",
            "text": "escape"
        },
        "$:/config/shortcuts/excise": {
            "title": "$:/config/shortcuts/excise",
            "text": "ctrl-E"
        },
        "$:/config/shortcuts/heading-1": {
            "title": "$:/config/shortcuts/heading-1",
            "text": "ctrl-1"
        },
        "$:/config/shortcuts/heading-2": {
            "title": "$:/config/shortcuts/heading-2",
            "text": "ctrl-2"
        },
        "$:/config/shortcuts/heading-3": {
            "title": "$:/config/shortcuts/heading-3",
            "text": "ctrl-3"
        },
        "$:/config/shortcuts/heading-4": {
            "title": "$:/config/shortcuts/heading-4",
            "text": "ctrl-4"
        },
        "$:/config/shortcuts/heading-5": {
            "title": "$:/config/shortcuts/heading-5",
            "text": "ctrl-5"
        },
        "$:/config/shortcuts/heading-6": {
            "title": "$:/config/shortcuts/heading-6",
            "text": "ctrl-6"
        },
        "$:/config/shortcuts/link": {
            "title": "$:/config/shortcuts/link",
            "text": "ctrl-L"
        },
        "$:/config/shortcuts/list-bullet": {
            "title": "$:/config/shortcuts/list-bullet",
            "text": "ctrl-shift-L"
        },
        "$:/config/shortcuts/list-number": {
            "title": "$:/config/shortcuts/list-number",
            "text": "ctrl-shift-N"
        },
        "$:/config/shortcuts/mono-block": {
            "title": "$:/config/shortcuts/mono-block",
            "text": "ctrl-shift-M"
        },
        "$:/config/shortcuts/mono-line": {
            "title": "$:/config/shortcuts/mono-line",
            "text": "ctrl-M"
        },
        "$:/config/shortcuts/picture": {
            "title": "$:/config/shortcuts/picture",
            "text": "ctrl-shift-I"
        },
        "$:/config/shortcuts/preview": {
            "title": "$:/config/shortcuts/preview",
            "text": "alt-P"
        },
        "$:/config/shortcuts/quote": {
            "title": "$:/config/shortcuts/quote",
            "text": "ctrl-Q"
        },
        "$:/config/shortcuts/save-tiddler": {
            "title": "$:/config/shortcuts/save-tiddler",
            "text": "ctrl+enter"
        },
        "$:/config/shortcuts/stamp": {
            "title": "$:/config/shortcuts/stamp",
            "text": "ctrl-S"
        },
        "$:/config/shortcuts/strikethrough": {
            "title": "$:/config/shortcuts/strikethrough",
            "text": "ctrl-T"
        },
        "$:/config/shortcuts/subscript": {
            "title": "$:/config/shortcuts/subscript",
            "text": "ctrl-shift-B"
        },
        "$:/config/shortcuts/superscript": {
            "title": "$:/config/shortcuts/superscript",
            "text": "ctrl-shift-P"
        },
        "$:/config/WikiParserRules/Inline/wikilink": {
            "title": "$:/config/WikiParserRules/Inline/wikilink",
            "text": "enable"
        },
        "$:/snippets/currpalettepreview": {
            "title": "$:/snippets/currpalettepreview",
            "text": "\\define swatchStyle()\nbackground-color: $(swatchColour)$;\n\\end\n\\define swatch(colour)\n<$set name=\"swatchColour\" value={{##$colour$}}>\n<div class=\"tc-swatch\" style=<<swatchStyle>>/>\n</$set>\n\\end\n<div class=\"tc-swatches-horiz\">\n<<swatch foreground>>\n<<swatch background>>\n<<swatch muted-foreground>>\n<<swatch primary>>\n<<swatch page-background>>\n<<swatch tab-background>>\n<<swatch tiddler-info-background>>\n</div>\n"
        },
        "$:/snippets/download-wiki-button": {
            "title": "$:/snippets/download-wiki-button",
            "text": "\\define lingo-base() $:/language/ControlPanel/Tools/Download/\n<$button class=\"tc-btn-big-green\">\n<$action-sendmessage $message=\"tm-download-file\" $param=\"$:/core/save/all\" filename=\"index.html\"/>\n<<lingo Full/Caption>> {{$:/core/images/save-button}}\n</$button>"
        },
        "$:/language": {
            "title": "$:/language",
            "text": "$:/languages/en-GB"
        },
        "$:/snippets/languageswitcher": {
            "title": "$:/snippets/languageswitcher",
            "text": "{{$:/language/ControlPanel/Basics/Language/Prompt}} <$select tiddler=\"$:/language\">\n<$list filter=\"[[$:/languages/en-GB]] [plugin-type[language]sort[description]]\">\n<option value=<<currentTiddler>>><$view field=\"description\"><$view field=\"name\"><$view field=\"title\"/></$view></$view></option>\n</$list>\n</$select>"
        },
        "$:/core/macros/CSS": {
            "title": "$:/core/macros/CSS",
            "tags": "$:/tags/Macro",
            "text": "\\define colour(name)\n<$transclude tiddler={{$:/palette}} index=\"$name$\"><$transclude tiddler=\"$:/palettes/Vanilla\" index=\"$name$\"/></$transclude>\n\\end\n\n\\define color(name)\n<<colour $name$>>\n\\end\n\n\\define box-shadow(shadow)\n``\n  -webkit-box-shadow: $shadow$;\n     -moz-box-shadow: $shadow$;\n          box-shadow: $shadow$;\n``\n\\end\n\n\\define filter(filter)\n``\n  -webkit-filter: $filter$;\n     -moz-filter: $filter$;\n          filter: $filter$;\n``\n\\end\n\n\\define transition(transition)\n``\n  -webkit-transition: $transition$;\n     -moz-transition: $transition$;\n          transition: $transition$;\n``\n\\end\n\n\\define transform-origin(origin)\n``\n  -webkit-transform-origin: $origin$;\n     -moz-transform-origin: $origin$;\n          transform-origin: $origin$;\n``\n\\end\n\n\\define background-linear-gradient(gradient)\n``\nbackground-image: linear-gradient($gradient$);\nbackground-image: -o-linear-gradient($gradient$);\nbackground-image: -moz-linear-gradient($gradient$);\nbackground-image: -webkit-linear-gradient($gradient$);\nbackground-image: -ms-linear-gradient($gradient$);\n``\n\\end\n\n\\define column-count(columns)\n``\n-moz-column-count: $columns$;\n-webkit-column-count: $columns$;\ncolumn-count: $columns$;\n``\n\\end\n\n\\define datauri(title)\n<$macrocall $name=\"makedatauri\" type={{$title$!!type}} text={{$title$}}/>\n\\end\n\n\\define if-sidebar(text)\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\">$text$</$reveal>\n\\end\n\n\\define if-no-sidebar(text)\n<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"yes\" default=\"yes\">$text$</$reveal>\n\\end\n"
        },
        "$:/core/macros/colour-picker": {
            "title": "$:/core/macros/colour-picker",
            "tags": "$:/tags/Macro",
            "text": "\\define colour-picker-update-recent()\n<$action-listops\n\t$tiddler=\"$:/config/ColourPicker/Recent\"\n\t$subfilter=\"$(colour-picker-value)$ [list[$:/config/ColourPicker/Recent]remove[$(colour-picker-value)$]] +[limit[8]]\"\n/>\n\\end\n\n\\define colour-picker-inner(actions)\n<$button tag=\"a\" tooltip=\"\"\"$(colour-picker-value)$\"\"\">\n\n$(colour-picker-update-recent)$\n\n$actions$\n\n<div style=\"background-color: $(colour-picker-value)$; width: 100%; height: 100%; border-radius: 50%;\"/>\n\n</$button>\n\\end\n\n\\define colour-picker-recent-inner(actions)\n<$set name=\"colour-picker-value\" value=\"$(recentColour)$\">\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$set>\n\\end\n\n\\define colour-picker-recent(actions)\n{{$:/language/ColourPicker/Recent}} <$list filter=\"[list[$:/config/ColourPicker/Recent]]\" variable=\"recentColour\">\n<$macrocall $name=\"colour-picker-recent-inner\" actions=\"\"\"$actions$\"\"\"/></$list>\n\\end\n\n\\define colour-picker(actions)\n<div class=\"tc-colour-chooser\">\n\n<$macrocall $name=\"colour-picker-recent\" actions=\"\"\"$actions$\"\"\"/>\n\n---\n\n<$list filter=\"LightPink Pink Crimson LavenderBlush PaleVioletRed HotPink DeepPink MediumVioletRed Orchid Thistle Plum Violet Magenta Fuchsia DarkMagenta Purple MediumOrchid DarkViolet DarkOrchid Indigo BlueViolet MediumPurple MediumSlateBlue SlateBlue DarkSlateBlue Lavender GhostWhite Blue MediumBlue MidnightBlue DarkBlue Navy RoyalBlue CornflowerBlue LightSteelBlue LightSlateGrey SlateGrey DodgerBlue AliceBlue SteelBlue LightSkyBlue SkyBlue DeepSkyBlue LightBlue PowderBlue CadetBlue Azure LightCyan PaleTurquoise Cyan Aqua DarkTurquoise DarkSlateGrey DarkCyan Teal MediumTurquoise LightSeaGreen Turquoise Aquamarine MediumAquamarine MediumSpringGreen MintCream SpringGreen MediumSeaGreen SeaGreen Honeydew LightGreen PaleGreen DarkSeaGreen LimeGreen Lime ForestGreen Green DarkGreen Chartreuse LawnGreen GreenYellow DarkOliveGreen YellowGreen OliveDrab Beige LightGoldenrodYellow Ivory LightYellow Yellow Olive DarkKhaki LemonChiffon PaleGoldenrod Khaki Gold Cornsilk Goldenrod DarkGoldenrod FloralWhite OldLace Wheat Moccasin Orange PapayaWhip BlanchedAlmond NavajoWhite AntiqueWhite Tan BurlyWood Bisque DarkOrange Linen Peru PeachPuff SandyBrown Chocolate SaddleBrown Seashell Sienna LightSalmon Coral OrangeRed DarkSalmon Tomato MistyRose Salmon Snow LightCoral RosyBrown IndianRed Red Brown FireBrick DarkRed Maroon White WhiteSmoke Gainsboro LightGrey Silver DarkGrey Grey DimGrey Black\" variable=\"colour-picker-value\">\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$list>\n\n---\n\n<$edit-text tiddler=\"$:/config/ColourPicker/New\" tag=\"input\" default=\"\" placeholder=\"\"/> \n<$edit-text tiddler=\"$:/config/ColourPicker/New\" type=\"color\" tag=\"input\"/>\n<$set name=\"colour-picker-value\" value={{$:/config/ColourPicker/New}}>\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$set>\n\n</div>\n\n\\end\n"
        },
        "$:/core/macros/export": {
            "title": "$:/core/macros/export",
            "tags": "$:/tags/Macro",
            "text": "\\define exportButtonFilename(baseFilename)\n$baseFilename$$(extension)$\n\\end\n\n\\define exportButton(exportFilter:\"[!is[system]sort[title]]\",lingoBase,baseFilename:\"tiddlers\")\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/export\">> tooltip={{$lingoBase$Hint}} aria-label={{$lingoBase$Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/export-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$lingoBase$Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/export\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Exporter]]\">\n<$set name=\"extension\" value={{!!extension}}>\n<$button class=\"tc-btn-invisible\">\n<$action-sendmessage $message=\"tm-download-file\" $param=<<currentTiddler>> exportFilter=\"\"\"$exportFilter$\"\"\" filename=<<exportButtonFilename \"\"\"$baseFilename$\"\"\">>/>\n<$action-deletetiddler $tiddler=<<qualify \"$:/state/popup/export\">>/>\n<$transclude field=\"description\"/>\n</$button>\n</$set>\n</$list>\n</div>\n</$reveal>\n\\end\n"
        },
        "$:/core/macros/image-picker": {
            "title": "$:/core/macros/image-picker",
            "tags": "$:/tags/Macro",
            "text": "\\define image-picker-thumbnail(actions)\n<$button tag=\"a\" tooltip=\"\"\"$(imageTitle)$\"\"\">\n$actions$\n<$transclude tiddler=<<imageTitle>>/>\n</$button>\n\\end\n\n\\define image-picker-list(filter,actions)\n<$list filter=\"\"\"$filter$\"\"\" variable=\"imageTitle\">\n<$macrocall $name=\"image-picker-thumbnail\" actions=\"\"\"$actions$\"\"\"/>\n</$list>\n\\end\n\n\\define image-picker(actions,filter:\"[all[shadows+tiddlers]is[image]] -[type[application/pdf]] +[!has[draft.of]sort[title]]\")\n<div class=\"tc-image-chooser\">\n<$vars state-system=<<qualify \"$:/state/image-picker/system\">>>\n<$checkbox tiddler=<<state-system>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"hide\">\n{{$:/language/SystemTiddlers/Include/Prompt}}\n</$checkbox>\n<$reveal state=<<state-system>> type=\"match\" text=\"hide\" default=\"hide\" tag=\"div\">\n<$macrocall $name=\"image-picker-list\" filter=\"\"\"$filter$ +[!is[system]]\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</$reveal>\n<$reveal state=<<state-system>> type=\"nomatch\" text=\"hide\" default=\"hide\" tag=\"div\">\n<$macrocall $name=\"image-picker-list\" filter=\"\"\"$filter$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</$reveal>\n</$vars>\n</div>\n\\end\n\n\\define image-picker-include-tagged-images(actions)\n<$macrocall $name=\"image-picker\" filter=\"[all[shadows+tiddlers]is[image]] [all[shadows+tiddlers]tag[$:/tags/Image]] -[type[application/pdf]] +[!has[draft.of]sort[title]]\" actions=\"\"\"$actions$\"\"\"/>\n\\end\n"
        },
        "$:/core/macros/lingo": {
            "title": "$:/core/macros/lingo",
            "tags": "$:/tags/Macro",
            "text": "\\define lingo-base()\n$:/language/\n\\end\n\n\\define lingo(title)\n{{$(lingo-base)$$title$}}\n\\end\n"
        },
        "$:/core/macros/list": {
            "title": "$:/core/macros/list",
            "tags": "$:/tags/Macro",
            "text": "\\define list-links(filter,type:\"ul\",subtype:\"li\",class:\"\")\n<$type$ class=\"$class$\">\n<$list filter=\"$filter$\">\n<$subtype$>\n<$link to={{!!title}}>\n<$transclude field=\"caption\">\n<$view field=\"title\"/>\n</$transclude>\n</$link>\n</$subtype$>\n</$list>\n</$type$>\n\\end\n\n\\define list-links-draggable-drop-actions()\n<$action-listops $tiddler=<<targetTiddler>> $field=<<targetField>> $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\\end\n\n\\define list-links-draggable(tiddler,field:\"list\",type:\"ul\",subtype:\"li\",class:\"\",itemTemplate)\n<$vars targetTiddler=\"\"\"$tiddler$\"\"\" targetField=\"\"\"$field$\"\"\">\n<$type$ class=\"$class$\">\n<$list filter=\"[list[$tiddler$!!$field$]]\">\n<$droppable actions=<<list-links-draggable-drop-actions>> tag=\"\"\"$subtype$\"\"\">\n<div class=\"tc-droppable-placeholder\">\n&nbsp;\n</div>\n<div>\n<$link to={{!!title}}>\n<$transclude tiddler=\"\"\"$itemTemplate$\"\"\">\n<$transclude field=\"caption\">\n<$view field=\"title\"/>\n</$transclude>\n</$transclude>\n</$link>\n</div>\n</$droppable>\n</$list>\n<$tiddler tiddler=\"\">\n<$droppable actions=<<list-links-draggable-drop-actions>> tag=\"\"\"$subtype$\"\"\">\n<div class=\"tc-droppable-placeholder\">\n&nbsp;\n</div>\n<div>\n&nbsp;\n</div>\n</$droppable>\n</$tiddler>\n</$type$>\n</$vars>\n\\end\n\n\\define list-tagged-draggable-drop-actions()\n<!-- Save the current ordering of the tiddlers with this tag -->\n<$set name=\"order\" filter=\"[<tag>tagging[]]\">\n<!-- Remove any list-after or list-before fields from the tiddlers with this tag -->\n<$list filter=\"[<tag>tagging[]]\">\n<$action-deletefield $field=\"list-before\"/>\n<$action-deletefield $field=\"list-after\"/>\n</$list>\n<!-- Assign the list field of the tag with the current ordering -->\n<$action-setfield $tiddler=<<tag>> $field=\"list\" $value=<<order>>/>\n<!-- Add the newly inserted item to the list -->\n<$action-listops $tiddler=<<tag>> $field=\"list\" $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n<!-- Make sure the newly added item has the right tag -->\n<$action-listops $tiddler=<<actionTiddler>> $tags=\"[<tag>]\"/>\n</$set>\n\\end\n\n\\define list-tagged-draggable(tag,itemTemplate,elementTag:\"div\")\n<$set name=\"tag\" value=\"\"\"$tag$\"\"\">\n<$list filter=\"[<tag>tagging[]]\">\n<$elementTag$ class=\"tc-menu-list-item\">\n<$droppable actions=<<list-tagged-draggable-drop-actions>>>\n<$elementTag$ class=\"tc-droppable-placeholder\">\n&nbsp;\n</$elementTag$>\n<$elementTag$>\n<$transclude tiddler=\"\"\"$itemTemplate$\"\"\">\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</$transclude>\n</$elementTag$>\n</$droppable>\n</$elementTag$>\n</$list>\n<$tiddler tiddler=\"\">\n<$droppable actions=<<list-tagged-draggable-drop-actions>>>\n<$elementTag$ class=\"tc-droppable-placeholder\">\n&nbsp;\n</$elementTag$>\n<$elementTag$ style=\"height:0.5em;\">\n</$elementTag$>\n</$droppable>\n</$tiddler>\n</$set>\n\\end\n"
        },
        "$:/core/macros/tabs": {
            "title": "$:/core/macros/tabs",
            "tags": "$:/tags/Macro",
            "text": "\\define tabs(tabsList,default,state:\"$:/state/tab\",class,template)\n<div class=\"tc-tab-set $class$\">\n<div class=\"tc-tab-buttons $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\"><$set name=\"save-currentTiddler\" value=<<currentTiddler>>><$tiddler tiddler=<<currentTab>>><$button set=<<qualify \"$state$\">> setTo=<<currentTab>> default=\"$default$\" selectedClass=\"tc-tab-selected\" tooltip={{!!tooltip}}>\n<$tiddler tiddler=<<save-currentTiddler>>>\n<$set name=\"tv-wikilinks\" value=\"no\">\n<$transclude tiddler=<<currentTab>> field=\"caption\">\n<$macrocall $name=\"currentTab\" $type=\"text/plain\" $output=\"text/plain\"/>\n</$transclude>\n</$set></$tiddler></$button></$tiddler></$set></$list>\n</div>\n<div class=\"tc-tab-divider $class$\"/>\n<div class=\"tc-tab-content $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\">\n\n<$reveal type=\"match\" state=<<qualify \"$state$\">> text=<<currentTab>> default=\"$default$\">\n\n<$transclude tiddler=\"$template$\" mode=\"block\">\n\n<$transclude tiddler=<<currentTab>> mode=\"block\"/>\n\n</$transclude>\n\n</$reveal>\n\n</$list>\n</div>\n</div>\n\\end\n"
        },
        "$:/core/macros/tag-picker": {
            "title": "$:/core/macros/tag-picker",
            "tags": "$:/tags/Macro",
            "text": "\\define add-tag-actions()\n<$action-sendmessage $message=\"tm-add-tag\" $param={{$:/temp/NewTagName}}/>\n<$action-deletetiddler $tiddler=\"$:/temp/NewTagName\"/>\n\\end\n\n\\define tag-button()\n<$button class=\"tc-btn-invisible\" tag=\"a\">\n$(actions)$\n<$action-deletetiddler $tiddler=\"$:/temp/NewTagName\"/>\n<$macrocall $name=\"tag-pill\" tag=<<tag>>/>\n</$button>\n\\end\n\n\\define tag-picker(actions)\n<$set name=\"actions\" value=\"\"\"$actions$\"\"\">\n<div class=\"tc-edit-add-tag\">\n<span class=\"tc-add-tag-name\">\n<$keyboard key=\"ENTER\" actions=<<add-tag-actions>>>\n<$edit-text tiddler=\"$:/temp/NewTagName\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}} focusPopup=<<qualify \"$:/state/popup/tags-auto-complete\">> class=\"tc-edit-texteditor tc-popup-handle\"/>\n</$keyboard>\n</span> <$button popup=<<qualify \"$:/state/popup/tags-auto-complete\">> class=\"tc-btn-invisible\" tooltip={{$:/language/EditTemplate/Tags/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Tags/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button> <span class=\"tc-add-tag-button\">\n<$set name=\"tag\" value={{$:/temp/NewTagName}}>\n<$button set=\"$:/temp/NewTagName\" setTo=\"\" class=\"\">\n$actions$\n<$action-deletetiddler $tiddler=\"$:/temp/NewTagName\"/>\n{{$:/language/EditTemplate/Tags/Add/Button}}\n</$button>\n</$set>\n</span>\n</div>\n<div class=\"tc-block-dropdown-wrapper\">\n<$reveal state=<<qualify \"$:/state/popup/tags-auto-complete\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown\">\n<$list filter=\"[tags[]!is[system]search:title{$:/temp/NewTagName}sort[]]\" variable=\"tag\">\n<<tag-button>>\n</$list>\n<hr>\n<$list filter=\"[tags[]is[system]search:title{$:/temp/NewTagName}sort[]]\" variable=\"tag\">\n<<tag-button>>\n</$list>\n</div>\n</$reveal>\n</div>\n</$set>\n\\end\n"
        },
        "$:/core/macros/tag": {
            "title": "$:/core/macros/tag",
            "tags": "$:/tags/Macro",
            "text": "\\define tag-pill-styles()\nbackground-color:$(backgroundColor)$;\nfill:$(foregroundColor)$;\ncolor:$(foregroundColor)$;\n\\end\n\n\\define tag-pill-inner(tag,icon,colour,fallbackTarget,colourA,colourB,element-tag,element-attributes,actions)\n<$vars foregroundColor=<<contrastcolour target:\"\"\"$colour$\"\"\" fallbackTarget:\"\"\"$fallbackTarget$\"\"\" colourA:\"\"\"$colourA$\"\"\" colourB:\"\"\"$colourB$\"\"\">> backgroundColor=\"\"\"$colour$\"\"\">\n<$element-tag$ $element-attributes$ class=\"tc-tag-label tc-btn-invisible\" style=<<tag-pill-styles>>>\n$actions$<$transclude tiddler=\"\"\"$icon$\"\"\"/> <$view tiddler=\"\"\"$tag$\"\"\" field=\"title\" format=\"text\" />\n</$element-tag$>\n</$vars>\n\\end\n\n\\define tag-pill-body(tag,icon,colour,palette,element-tag,element-attributes,actions)\n<$macrocall $name=\"tag-pill-inner\" tag=\"\"\"$tag$\"\"\" icon=\"\"\"$icon$\"\"\" colour=\"\"\"$colour$\"\"\" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}} element-tag=\"\"\"$element-tag$\"\"\" element-attributes=\"\"\"$element-attributes$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n\\end\n\n\\define tag-pill(tag,element-tag:\"span\",element-attributes:\"\",actions:\"\")\n<span class=\"tc-tag-list-item\">\n<$macrocall $name=\"tag-pill-body\" tag=\"\"\"$tag$\"\"\" icon={{$tag$!!icon}} colour={{$tag$!!color}} palette={{$:/palette}} element-tag=\"\"\"$element-tag$\"\"\" element-attributes=\"\"\"$element-attributes$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</span>\n\\end\n\n\\define tag(tag)\n{{$tag$||$:/core/ui/TagTemplate}}\n\\end\n"
        },
        "$:/core/macros/thumbnails": {
            "title": "$:/core/macros/thumbnails",
            "tags": "$:/tags/Macro",
            "text": "\\define thumbnail(link,icon,color,background-color,image,caption,width:\"280\",height:\"157\")\n<$link to=\"\"\"$link$\"\"\"><div class=\"tc-thumbnail-wrapper\">\n<div class=\"tc-thumbnail-image\" style=\"width:$width$px;height:$height$px;\"><$reveal type=\"nomatch\" text=\"\" default=\"\"\"$image$\"\"\" tag=\"div\" style=\"width:$width$px;height:$height$px;\">\n[img[$image$]]\n</$reveal><$reveal type=\"match\" text=\"\" default=\"\"\"$image$\"\"\" tag=\"div\" class=\"tc-thumbnail-background\" style=\"width:$width$px;height:$height$px;background-color:$background-color$;\"></$reveal></div><div class=\"tc-thumbnail-icon\" style=\"fill:$color$;color:$color$;\">\n$icon$\n</div><div class=\"tc-thumbnail-caption\">\n$caption$\n</div>\n</div></$link>\n\\end\n\n\\define thumbnail-right(link,icon,color,background-color,image,caption,width:\"280\",height:\"157\")\n<div class=\"tc-thumbnail-right-wrapper\"><<thumbnail \"\"\"$link$\"\"\" \"\"\"$icon$\"\"\" \"\"\"$color$\"\"\" \"\"\"$background-color$\"\"\" \"\"\"$image$\"\"\" \"\"\"$caption$\"\"\" \"\"\"$width$\"\"\" \"\"\"$height$\"\"\">></div>\n\\end\n\n\\define list-thumbnails(filter,width:\"280\",height:\"157\")\n<$list filter=\"\"\"$filter$\"\"\"><$macrocall $name=\"thumbnail\" link={{!!link}} icon={{!!icon}} color={{!!color}} background-color={{!!background-color}} image={{!!image}} caption={{!!caption}} width=\"\"\"$width$\"\"\" height=\"\"\"$height$\"\"\"/></$list>\n\\end\n"
        },
        "$:/core/macros/timeline": {
            "created": "20141212105914482",
            "modified": "20141212110330815",
            "tags": "$:/tags/Macro",
            "title": "$:/core/macros/timeline",
            "type": "text/vnd.tiddlywiki",
            "text": "\\define timeline-title()\n<!-- Override this macro with a global macro \n     of the same name if you need to change \n     how titles are displayed on the timeline \n     -->\n<$view field=\"title\"/>\n\\end\n\\define timeline(limit:\"100\",format:\"DDth MMM YYYY\",subfilter:\"\",dateField:\"modified\")\n<div class=\"tc-timeline\">\n<$list filter=\"[!is[system]$subfilter$has[$dateField$]!sort[$dateField$]limit[$limit$]eachday[$dateField$]]\">\n<div class=\"tc-menu-list-item\">\n<$view field=\"$dateField$\" format=\"date\" template=\"$format$\"/>\n<$list filter=\"[sameday:$dateField${!!$dateField$}!is[system]$subfilter$!sort[$dateField$]]\">\n<div class=\"tc-menu-list-subitem\">\n<$link to={{!!title}}>\n<<timeline-title>>\n</$link>\n</div>\n</$list>\n</div>\n</$list>\n</div>\n\\end\n"
        },
        "$:/core/macros/toc": {
            "title": "$:/core/macros/toc",
            "tags": "$:/tags/Macro",
            "text": "\\define toc-caption()\n<$set name=\"tv-wikilinks\" value=\"no\">\n  <$transclude field=\"caption\">\n    <$view field=\"title\"/>\n  </$transclude>\n</$set>\n\\end\n\n\\define toc-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<ol class=\"tc-toc\">\n  <$list filter=\"\"\"[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$] $exclude$\"\"\">\n    <$vars item=<<currentTiddler>> path=\"\"\"$path$/$tag$\"\"\" excluded=\"\"\"$exclude$ -[[$tag$]]\"\"\">\n      <$set name=\"toc-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" emptyValue=\"toc-item\" value=\"toc-item-selected\">\n        <li class=<<toc-item-class>>>\n          <$list filter=\"[all[current]toc-link[no]]\" emptyMessage=\"<$link><$view field='caption'><$view field='title'/></$view></$link>\">\n            <<toc-caption>>\n          </$list>\n          <$macrocall $name=\"toc-body\" tag=<<item>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" exclude=<<excluded>> path=<<path>>/>\n        </li>\n      </$set>\n    </$vars>\n  </$list>\n</ol>\n\\end\n\n\\define toc(tag,sort:\"\",itemClassFilter:\" \")\n<<toc-body tag:\"\"\"$tag$\"\"\" sort:\"\"\"$sort$\"\"\" itemClassFilter:\"\"\"$itemClassFilter$\"\"\">>\n\\end\n\n\\define toc-linked-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<!-- helper function -->\n<$set name=\"toc-state\" value=<<qualify \"\"\"$:/state/toc$path$-$(currentTiddler)$\"\"\">>>\n  <$set name=\"toc-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" emptyValue=\"toc-item\" value=\"toc-item-selected\">\n    <li class=<<toc-item-class>>>\n    <$link>\n      <$reveal type=\"nomatch\" state=<<toc-state>> text=\"open\">\n        <$button set=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible\">\n          {{$:/core/images/right-arrow}}\n        </$button>\n      </$reveal>\n      <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n        <$button set=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible\">\n          {{$:/core/images/down-arrow}}\n        </$button>\n      </$reveal>\n      <<toc-caption>>\n    </$link>\n    <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n      <$macrocall $name=\"toc-expandable\" tag=<<currentTiddler>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" exclude=\"\"\"$exclude$\"\"\" path=\"\"\"$path$\"\"\"/>\n    </$reveal>\n    </li>\n  </$set>\n</$set>\n\\end\n\n\\define toc-unlinked-expandable-body(tag,sort:\"\",itemClassFilter:\" \",exclude,path)\n<!-- helper function -->\n<$set name=\"toc-state\" value=<<qualify \"\"\"$:/state/toc$path$-$(currentTiddler)$\"\"\">>>\n  <$set name=\"toc-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" emptyValue=\"toc-item\" value=\"toc-item-selected\">\n    <li class=<<toc-item-class>>>\n      <$reveal type=\"nomatch\" state=<<toc-state>> text=\"open\">\n        <$button set=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible\">\n          {{$:/core/images/right-arrow}}\n          <<toc-caption>>\n        </$button>\n      </$reveal>\n      <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n        <$button set=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible\">\n          {{$:/core/images/down-arrow}}\n          <<toc-caption>>\n        </$button>\n      </$reveal>\n      <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n        <$macrocall $name=\"toc-expandable\" tag=<<currentTiddler>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" exclude=\"\"\"$exclude$\"\"\" path=\"\"\"$path$\"\"\"/>\n      </$reveal>\n    </li>\n  </$set>\n</$set>\n\\end\n\n\\define toc-expandable-empty-message()\n<<toc-linked-expandable-body tag:\"\"\"$(tag)$\"\"\" sort:\"\"\"$(sort)$\"\"\" itemClassFilter:\"\"\"$(itemClassFilter)$\"\"\" exclude:\"\"\"$(excluded)$\"\"\" path:\"\"\"$(path)$\"\"\">>\n\\end\n\n\\define toc-expandable(tag,sort:\"\",itemClassFilter:\" \",exclude,path)\n<$vars tag=\"\"\"$tag$\"\"\" sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" excluded=\"\"\"$exclude$ -[[$tag$]]\"\"\" path=\"\"\"$path$/$tag$\"\"\">\n  <ol class=\"tc-toc toc-expandable\">\n    <$list filter=\"\"\"[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$] $exclude$\"\"\">\n      <$list filter=\"[all[current]toc-link[no]]\" emptyMessage=<<toc-expandable-empty-message>> >\n        <$macrocall $name=\"toc-unlinked-expandable-body\" tag=\"\"\"$tag$\"\"\" sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"itemClassFilter\"\"\" exclude=<<excluded>> path=<<path>> />\n      </$list>\n    </$list>\n  </ol>\n</$vars>\n\\end\n\n\\define toc-linked-selective-expandable-body(tag,sort:\"\",itemClassFilter:\" \",exclude,path)\n<$set name=\"toc-state\" value=<<qualify \"\"\"$:/state/toc$path$-$(currentTiddler)$\"\"\">>>\n  <$set name=\"toc-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" emptyValue=\"toc-item\" value=\"toc-item-selected\" >\n    <li class=<<toc-item-class>>>\n      <$link>\n          <$list filter=\"[all[current]tagging[]limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button>\">\n          <$reveal type=\"nomatch\" state=<<toc-state>> text=\"open\">\n            <$button set=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible\">\n              {{$:/core/images/right-arrow}}\n            </$button>\n          </$reveal>\n          <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n            <$button set=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible\">\n              {{$:/core/images/down-arrow}}\n            </$button>\n          </$reveal>\n        </$list>\n        <<toc-caption>>\n      </$link>\n      <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n        <$macrocall $name=\"toc-selective-expandable\" tag=<<currentTiddler>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" exclude=\"\"\"$exclude$\"\"\" path=\"\"\"$path$\"\"\"/>\n      </$reveal>\n    </li>\n  </$set>\n</$set>\n\\end\n\n\\define toc-unlinked-selective-expandable-body(tag,sort:\"\",itemClassFilter:\" \",exclude,path)\n<$set name=\"toc-state\" value=<<qualify \"\"\"$:/state/toc$path$-$(currentTiddler)$\"\"\">>>\n  <$set name=\"toc-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" emptyValue=\"toc-item\" value=\"toc-item-selected\">\n    <li class=<<toc-item-class>>>\n      <$list filter=\"[all[current]tagging[]limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button> <$view field='caption'><$view field='title'/></$view>\">\n        <$reveal type=\"nomatch\" state=<<toc-state>> text=\"open\">\n          <$button set=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible\">\n            {{$:/core/images/right-arrow}}\n            <<toc-caption>>\n          </$button>\n        </$reveal>\n        <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n          <$button set=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible\">\n            {{$:/core/images/down-arrow}}\n            <<toc-caption>>\n          </$button>\n        </$reveal>\n      </$list>\n      <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n        <$macrocall $name=\"\"\"toc-selective-expandable\"\"\" tag=<<currentTiddler>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" exclude=\"\"\"$exclude$\"\"\" path=\"\"\"$path$\"\"\"/>\n      </$reveal>\n    </li>\n  </$set>\n</$set>\n\\end\n\n\\define toc-selective-expandable-empty-message()\n<<toc-linked-selective-expandable-body tag:\"\"\"$(tag)$\"\"\" sort:\"\"\"$(sort)$\"\"\" itemClassFilter:\"\"\"$(itemClassFilter)$\"\"\" exclude:\"\"\"$(excluded)$\"\"\" path:\"\"\"$(path)$\"\"\">>\n\\end\n\n\\define toc-selective-expandable(tag,sort:\"\",itemClassFilter,exclude,path)\n<$vars tag=\"\"\"$tag$\"\"\" sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" excluded=\"\"\"$exclude$ -[[$tag$]]\"\"\" path=\"\"\"$path$/$tag$\"\"\">\n  <ol class=\"tc-toc toc-selective-expandable\">\n    <$list filter=\"\"\"[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$] $exclude$\"\"\">\n      <$list filter=\"[all[current]toc-link[no]]\" variable=\"ignore\" emptyMessage=<<toc-selective-expandable-empty-message>> >\n        <$macrocall $name=toc-unlinked-selective-expandable-body tag=\"\"\"$tag$\"\"\" sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" exclude=<<excluded>> path=<<path>> >\n      </$list>\n    </$list>\n  </ol>\n</$vars>\n\\end\n\n\\define toc-tabbed-selected-item-filter(selectedTiddler)\n[all[current]field:title{$selectedTiddler$}]\n\\end\n\n\\define toc-tabbed-external-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$tiddler tiddler={{$selectedTiddler$}}>\n  <div class=\"tc-tabbed-table-of-contents\">\n    <$linkcatcher to=\"$selectedTiddler$\">\n      <div class=\"tc-table-of-contents\">\n        <$macrocall $name=\"toc-selective-expandable\" tag=\"\"\"$tag$\"\"\" sort=\"\"\"$sort$\"\"\" itemClassFilter=<<toc-tabbed-selected-item-filter selectedTiddler:\"\"\"$selectedTiddler$\"\"\">>/>\n      </div>\n    </$linkcatcher>\n    <div class=\"tc-tabbed-table-of-contents-content\">\n      <$reveal state=\"\"\"$selectedTiddler$\"\"\" type=\"nomatch\" text=\"\">\n        <$transclude mode=\"block\" tiddler=\"$template$\">\n          <h1><<toc-caption>></h1>\n          <$transclude mode=\"block\">$missingText$</$transclude>\n        </$transclude>\n      </$reveal>\n      <$reveal state=\"\"\"$selectedTiddler$\"\"\" type=\"match\" text=\"\">\n        $unselectedText$\n      </$reveal>\n    </div>\n  </div>\n</$tiddler>\n\\end\n\n\\define toc-tabbed-internal-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$linkcatcher to=\"\"\"$selectedTiddler$\"\"\">\n  <$macrocall $name=\"toc-tabbed-external-nav\" tag=\"\"\"$tag$\"\"\" sort=\"\"\"$sort$\"\"\" selectedTiddler=\"\"\"$selectedTiddler$\"\"\" unselectedText=\"\"\"$unselectedText$\"\"\" missingText=\"\"\"$missingText$\"\"\" template=\"\"\"$template$\"\"\"/>\n</$linkcatcher>\n\\end\n\n"
        },
        "$:/core/macros/translink": {
            "title": "$:/core/macros/translink",
            "tags": "$:/tags/Macro",
            "text": "\\define translink(title,mode:\"block\")\n<div style=\"border:1px solid #ccc; padding: 0.5em; background: black; foreground; white;\">\n<$link to=\"\"\"$title$\"\"\">\n<$text text=\"\"\"$title$\"\"\"/>\n</$link>\n<div style=\"border:1px solid #ccc; padding: 0.5em; background: white; foreground; black;\">\n<$transclude tiddler=\"\"\"$title$\"\"\" mode=\"$mode$\">\n\"<$text text=\"\"\"$title$\"\"\"/>\" is missing\n</$transclude>\n</div>\n</div>\n\\end\n"
        },
        "$:/snippets/minilanguageswitcher": {
            "title": "$:/snippets/minilanguageswitcher",
            "text": "<$select tiddler=\"$:/language\">\n<$list filter=\"[[$:/languages/en-GB]] [plugin-type[language]sort[title]]\">\n<option value=<<currentTiddler>>><$view field=\"description\"><$view field=\"name\"><$view field=\"title\"/></$view></$view></option>\n</$list>\n</$select>"
        },
        "$:/snippets/minithemeswitcher": {
            "title": "$:/snippets/minithemeswitcher",
            "text": "\\define lingo-base() $:/language/ControlPanel/Theme/\n<<lingo Prompt>> <$select tiddler=\"$:/theme\">\n<$list filter=\"[plugin-type[theme]sort[title]]\">\n<option value=<<currentTiddler>>><$view field=\"name\"><$view field=\"title\"/></$view></option>\n</$list>\n</$select>"
        },
        "$:/snippets/modules": {
            "title": "$:/snippets/modules",
            "text": "\\define describeModuleType(type)\n{{$:/language/Docs/ModuleTypes/$type$}}\n\\end\n<$list filter=\"[moduletypes[]]\">\n\n!! <$macrocall $name=\"currentTiddler\" $type=\"text/plain\" $output=\"text/plain\"/>\n\n<$macrocall $name=\"describeModuleType\" type=<<currentTiddler>>/>\n\n<ul><$list filter=\"[all[current]modules[]]\"><li><$link><<currentTiddler>></$link>\n</li>\n</$list>\n</ul>\n</$list>\n"
        },
        "$:/palette": {
            "title": "$:/palette",
            "text": "$:/palettes/Vanilla"
        },
        "$:/snippets/paletteeditor": {
            "title": "$:/snippets/paletteeditor",
            "text": "\\define lingo-base() $:/language/ControlPanel/Palette/Editor/\n\\define describePaletteColour(colour)\n<$transclude tiddler=\"$:/language/Docs/PaletteColours/$colour$\"><$text text=\"$colour$\"/></$transclude>\n\\end\n<$set name=\"currentTiddler\" value={{$:/palette}}>\n\n<<lingo Prompt>> <$link to={{$:/palette}}><$macrocall $name=\"currentTiddler\" $output=\"text/plain\"/></$link>\n\n<$list filter=\"[all[current]is[shadow]is[tiddler]]\" variable=\"listItem\">\n<<lingo Prompt/Modified>>\n<$button message=\"tm-delete-tiddler\" param={{$:/palette}}><<lingo Reset/Caption>></$button>\n</$list>\n\n<$list filter=\"[all[current]is[shadow]!is[tiddler]]\" variable=\"listItem\">\n<<lingo Clone/Prompt>>\n</$list>\n\n<$button message=\"tm-new-tiddler\" param={{$:/palette}}><<lingo Clone/Caption>></$button>\n\n<table>\n<tbody>\n<$list filter=\"[all[current]indexes[]]\" variable=\"colourName\">\n<tr>\n<td>\n''<$macrocall $name=\"describePaletteColour\" colour=<<colourName>>/>''<br/>\n<$macrocall $name=\"colourName\" $output=\"text/plain\"/>\n</td>\n<td>\n<$edit-text index=<<colourName>> tag=\"input\"/>\n<br>\n<$edit-text index=<<colourName>> type=\"color\" tag=\"input\"/>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n</$set>\n"
        },
        "$:/snippets/palettepreview": {
            "title": "$:/snippets/palettepreview",
            "text": "<$set name=\"currentTiddler\" value={{$:/palette}}>\n<$transclude tiddler=\"$:/snippets/currpalettepreview\"/>\n</$set>\n"
        },
        "$:/snippets/paletteswitcher": {
            "title": "$:/snippets/paletteswitcher",
            "text": "\\define lingo-base() $:/language/ControlPanel/Palette/\n<div class=\"tc-prompt\">\n<<lingo Prompt>> <$view tiddler={{$:/palette}} field=\"name\"/>\n</div>\n\n<$linkcatcher to=\"$:/palette\">\n<div class=\"tc-chooser\"><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Palette]sort[description]]\"><div class=\"tc-chooser-item\"><$link to={{!!title}}><div><$reveal state=\"$:/palette\" type=\"match\" text={{!!title}}>&bull;</$reveal><$reveal state=\"$:/palette\" type=\"nomatch\" text={{!!title}}>&nbsp;</$reveal> ''<$view field=\"name\" format=\"text\"/>'' - <$view field=\"description\" format=\"text\"/></div><$transclude tiddler=\"$:/snippets/currpalettepreview\"/></$link></div>\n</$list>\n</div>\n</$linkcatcher>"
        },
        "$:/temp/search": {
            "title": "$:/temp/search",
            "text": ""
        },
        "$:/tags/AdvancedSearch": {
            "title": "$:/tags/AdvancedSearch",
            "list": "[[$:/core/ui/AdvancedSearch/Standard]] [[$:/core/ui/AdvancedSearch/System]] [[$:/core/ui/AdvancedSearch/Shadows]] [[$:/core/ui/AdvancedSearch/Filter]]"
        },
        "$:/tags/AdvancedSearch/FilterButton": {
            "title": "$:/tags/AdvancedSearch/FilterButton",
            "list": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown $:/core/ui/AdvancedSearch/Filter/FilterButtons/clear $:/core/ui/AdvancedSearch/Filter/FilterButtons/export $:/core/ui/AdvancedSearch/Filter/FilterButtons/delete"
        },
        "$:/tags/ControlPanel": {
            "title": "$:/tags/ControlPanel",
            "list": "$:/core/ui/ControlPanel/Info $:/core/ui/ControlPanel/Appearance $:/core/ui/ControlPanel/Settings $:/core/ui/ControlPanel/Saving $:/core/ui/ControlPanel/Plugins $:/core/ui/ControlPanel/Tools $:/core/ui/ControlPanel/Internals"
        },
        "$:/tags/ControlPanel/Info": {
            "title": "$:/tags/ControlPanel/Info",
            "list": "$:/core/ui/ControlPanel/Basics $:/core/ui/ControlPanel/Advanced"
        },
        "$:/tags/ControlPanel/Plugins": {
            "title": "$:/tags/ControlPanel/Plugins",
            "list": "[[$:/core/ui/ControlPanel/Plugins/Installed]] [[$:/core/ui/ControlPanel/Plugins/Add]]"
        },
        "$:/tags/EditTemplate": {
            "title": "$:/tags/EditTemplate",
            "list": "[[$:/core/ui/EditTemplate/controls]] [[$:/core/ui/EditTemplate/title]] [[$:/core/ui/EditTemplate/tags]] [[$:/core/ui/EditTemplate/shadow]] [[$:/core/ui/ViewTemplate/classic]] [[$:/core/ui/EditTemplate/body]] [[$:/core/ui/EditTemplate/type]] [[$:/core/ui/EditTemplate/fields]]"
        },
        "$:/tags/EditToolbar": {
            "title": "$:/tags/EditToolbar",
            "list": "[[$:/core/ui/Buttons/delete]] [[$:/core/ui/Buttons/cancel]] [[$:/core/ui/Buttons/save]]"
        },
        "$:/tags/EditorToolbar": {
            "title": "$:/tags/EditorToolbar",
            "list": "$:/core/ui/EditorToolbar/paint $:/core/ui/EditorToolbar/opacity $:/core/ui/EditorToolbar/line-width $:/core/ui/EditorToolbar/clear $:/core/ui/EditorToolbar/bold $:/core/ui/EditorToolbar/italic $:/core/ui/EditorToolbar/strikethrough $:/core/ui/EditorToolbar/underline $:/core/ui/EditorToolbar/superscript $:/core/ui/EditorToolbar/subscript $:/core/ui/EditorToolbar/mono-line $:/core/ui/EditorToolbar/mono-block $:/core/ui/EditorToolbar/quote $:/core/ui/EditorToolbar/list-bullet $:/core/ui/EditorToolbar/list-number $:/core/ui/EditorToolbar/heading-1 $:/core/ui/EditorToolbar/heading-2 $:/core/ui/EditorToolbar/heading-3 $:/core/ui/EditorToolbar/heading-4 $:/core/ui/EditorToolbar/heading-5 $:/core/ui/EditorToolbar/heading-6 $:/core/ui/EditorToolbar/link $:/core/ui/EditorToolbar/excise $:/core/ui/EditorToolbar/picture $:/core/ui/EditorToolbar/stamp $:/core/ui/EditorToolbar/size $:/core/ui/EditorToolbar/editor-height $:/core/ui/EditorToolbar/more $:/core/ui/EditorToolbar/preview $:/core/ui/EditorToolbar/preview-type"
        },
        "$:/tags/Manager/ItemMain": {
            "title": "$:/tags/Manager/ItemMain",
            "list": "$:/Manager/ItemMain/WikifiedText $:/Manager/ItemMain/RawText $:/Manager/ItemMain/Fields"
        },
        "$:/tags/Manager/ItemSidebar": {
            "title": "$:/tags/Manager/ItemSidebar",
            "list": "$:/Manager/ItemSidebar/Tags $:/Manager/ItemSidebar/Colour $:/Manager/ItemSidebar/Icon $:/Manager/ItemSidebar/Tools"
        },
        "$:/tags/MoreSideBar": {
            "title": "$:/tags/MoreSideBar",
            "list": "[[$:/core/ui/MoreSideBar/All]] [[$:/core/ui/MoreSideBar/Recent]] [[$:/core/ui/MoreSideBar/Tags]] [[$:/core/ui/MoreSideBar/Missing]] [[$:/core/ui/MoreSideBar/Drafts]] [[$:/core/ui/MoreSideBar/Orphans]] [[$:/core/ui/MoreSideBar/Types]] [[$:/core/ui/MoreSideBar/System]] [[$:/core/ui/MoreSideBar/Shadows]] [[$:/core/ui/MoreSideBar/Plugins]]",
            "text": ""
        },
        "$:/tags/PageControls": {
            "title": "$:/tags/PageControls",
            "list": "[[$:/core/ui/Buttons/home]] [[$:/core/ui/Buttons/close-all]] [[$:/core/ui/Buttons/fold-all]] [[$:/core/ui/Buttons/unfold-all]] [[$:/core/ui/Buttons/permaview]] [[$:/core/ui/Buttons/new-tiddler]] [[$:/core/ui/Buttons/new-journal]] [[$:/core/ui/Buttons/new-image]] [[$:/core/ui/Buttons/import]] [[$:/core/ui/Buttons/export-page]] [[$:/core/ui/Buttons/control-panel]] [[$:/core/ui/Buttons/advanced-search]] [[$:/core/ui/Buttons/manager]] [[$:/core/ui/Buttons/tag-manager]] [[$:/core/ui/Buttons/language]] [[$:/core/ui/Buttons/palette]] [[$:/core/ui/Buttons/theme]] [[$:/core/ui/Buttons/storyview]] [[$:/core/ui/Buttons/encryption]] [[$:/core/ui/Buttons/timestamp]] [[$:/core/ui/Buttons/full-screen]] [[$:/core/ui/Buttons/print]] [[$:/core/ui/Buttons/save-wiki]] [[$:/core/ui/Buttons/refresh]] [[$:/core/ui/Buttons/more-page-actions]]"
        },
        "$:/tags/PageTemplate": {
            "title": "$:/tags/PageTemplate",
            "list": "[[$:/core/ui/PageTemplate/topleftbar]] [[$:/core/ui/PageTemplate/toprightbar]] [[$:/core/ui/PageTemplate/sidebar]] [[$:/core/ui/PageTemplate/story]] [[$:/core/ui/PageTemplate/alerts]]",
            "text": ""
        },
        "$:/tags/SideBar": {
            "title": "$:/tags/SideBar",
            "list": "[[$:/core/ui/SideBar/Open]] [[$:/core/ui/SideBar/Recent]] [[$:/core/ui/SideBar/Tools]] [[$:/core/ui/SideBar/More]]",
            "text": ""
        },
        "$:/tags/TiddlerInfo": {
            "title": "$:/tags/TiddlerInfo",
            "list": "[[$:/core/ui/TiddlerInfo/Tools]] [[$:/core/ui/TiddlerInfo/References]] [[$:/core/ui/TiddlerInfo/Tagging]] [[$:/core/ui/TiddlerInfo/List]] [[$:/core/ui/TiddlerInfo/Listed]] [[$:/core/ui/TiddlerInfo/Fields]]",
            "text": ""
        },
        "$:/tags/TiddlerInfo/Advanced": {
            "title": "$:/tags/TiddlerInfo/Advanced",
            "list": "[[$:/core/ui/TiddlerInfo/Advanced/ShadowInfo]] [[$:/core/ui/TiddlerInfo/Advanced/PluginInfo]]"
        },
        "$:/tags/ViewTemplate": {
            "title": "$:/tags/ViewTemplate",
            "list": "[[$:/core/ui/ViewTemplate/title]] [[$:/core/ui/ViewTemplate/unfold]] [[$:/core/ui/ViewTemplate/subtitle]] [[$:/core/ui/ViewTemplate/tags]] [[$:/core/ui/ViewTemplate/classic]] [[$:/core/ui/ViewTemplate/body]]"
        },
        "$:/tags/ViewToolbar": {
            "title": "$:/tags/ViewToolbar",
            "list": "[[$:/core/ui/Buttons/more-tiddler-actions]] [[$:/core/ui/Buttons/info]] [[$:/core/ui/Buttons/new-here]] [[$:/core/ui/Buttons/new-journal-here]] [[$:/core/ui/Buttons/clone]] [[$:/core/ui/Buttons/export-tiddler]] [[$:/core/ui/Buttons/edit]] [[$:/core/ui/Buttons/delete]] [[$:/core/ui/Buttons/permalink]] [[$:/core/ui/Buttons/permaview]] [[$:/core/ui/Buttons/open-window]] [[$:/core/ui/Buttons/close-others]] [[$:/core/ui/Buttons/close]] [[$:/core/ui/Buttons/fold-others]] [[$:/core/ui/Buttons/fold]]"
        },
        "$:/snippets/themeswitcher": {
            "title": "$:/snippets/themeswitcher",
            "text": "\\define lingo-base() $:/language/ControlPanel/Theme/\n<<lingo Prompt>> <$view tiddler={{$:/theme}} field=\"name\"/>\n\n<$linkcatcher to=\"$:/theme\">\n<$list filter=\"[plugin-type[theme]sort[title]]\"><div><$reveal state=\"$:/theme\" type=\"match\" text={{!!title}}>&bull;</$reveal><$reveal state=\"$:/theme\" type=\"nomatch\" text={{!!title}}>&nbsp;</$reveal> <$link to={{!!title}}>''<$view field=\"name\" format=\"text\"/>'' <$view field=\"description\" format=\"text\"/></$link></div>\n</$list>\n</$linkcatcher>"
        },
        "$:/core/wiki/title": {
            "title": "$:/core/wiki/title",
            "type": "text/vnd.tiddlywiki",
            "text": "{{$:/SiteTitle}} --- {{$:/SiteSubtitle}}"
        },
        "$:/view": {
            "title": "$:/view",
            "text": "classic"
        },
        "$:/snippets/viewswitcher": {
            "title": "$:/snippets/viewswitcher",
            "text": "\\define lingo-base() $:/language/ControlPanel/StoryView/\n<<lingo Prompt>> <$select tiddler=\"$:/view\">\n<$list filter=\"[storyviews[]]\">\n<option><$view field=\"title\"/></option>\n</$list>\n</$select>"
        }
    }
}
/*\
title: $:/core/modules/parsers/wikiparser/rules/wikilink.js
type: application/javascript
module-type: wikirule

Wiki text inline rule for wiki links. For example:

```
AWikiLink
AnotherLink
~SuppressedLink
```

Precede a camel case word with `~` to prevent it from being recognised as a link.

\*/
(function(){

/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";

exports.name = "wikilink";
exports.types = {inline: true};

exports.init = function(parser) {
	this.parser = parser;
	// Regexp to match
	this.matchRegExp = new RegExp($tw.config.textPrimitives.unWikiLink + "?" + $tw.config.textPrimitives.wikiLink,"mg");
};

/*
Parse the most recent match
*/
exports.parse = function() {
	// Get the details of the match
	var linkText = this.match[0];
	// Move past the macro call
	this.parser.pos = this.matchRegExp.lastIndex;
	// If the link starts with the unwikilink character then just output it as plain text
	if(linkText.substr(0,1) === $tw.config.textPrimitives.unWikiLink) {
		return [{type: "text", text: linkText.substr(1)}];
	}
	// If the link has been preceded with a blocked letter then don't treat it as a link
	if(this.match.index > 0) {
		var preRegExp = new RegExp($tw.config.textPrimitives.blockPrefixLetters,"mg");
		preRegExp.lastIndex = this.match.index-1;
		var preMatch = preRegExp.exec(this.parser.source);
		if(preMatch && preMatch.index === this.match.index-1) {
			return [{type: "text", text: linkText}];
		}
	}
	return [{type: "text", text: linkText}];
	return [{
		type: "link",
		attributes: {
			to: {type: "string", value: linkText}
		},
		children: [{
			type: "text",
			text: linkText
		}]
	}];
};

})();
[[首页]]
UA-46774526-2
下列条目已被导入:

# [[目录]]
no
$:/languages/zh-Hans
{
    "tiddlers": {
        "$:/language/Buttons/AdvancedSearch/Caption": {
            "title": "$:/language/Buttons/AdvancedSearch/Caption",
            "text": "高级查找"
        },
        "$:/language/Buttons/AdvancedSearch/Hint": {
            "title": "$:/language/Buttons/AdvancedSearch/Hint",
            "text": "高级查找"
        },
        "$:/language/Buttons/Cancel/Caption": {
            "title": "$:/language/Buttons/Cancel/Caption",
            "text": "取消"
        },
        "$:/language/Buttons/Cancel/Hint": {
            "title": "$:/language/Buttons/Cancel/Hint",
            "text": "放弃对此条目的更改"
        },
        "$:/language/Buttons/Clone/Caption": {
            "title": "$:/language/Buttons/Clone/Caption",
            "text": "克隆"
        },
        "$:/language/Buttons/Clone/Hint": {
            "title": "$:/language/Buttons/Clone/Hint",
            "text": "克隆此条目"
        },
        "$:/language/Buttons/Close/Caption": {
            "title": "$:/language/Buttons/Close/Caption",
            "text": "关闭"
        },
        "$:/language/Buttons/Close/Hint": {
            "title": "$:/language/Buttons/Close/Hint",
            "text": "关闭此条目"
        },
        "$:/language/Buttons/CloseAll/Caption": {
            "title": "$:/language/Buttons/CloseAll/Caption",
            "text": "全部关闭"
        },
        "$:/language/Buttons/CloseAll/Hint": {
            "title": "$:/language/Buttons/CloseAll/Hint",
            "text": "关闭所有条目"
        },
        "$:/language/Buttons/CloseOthers/Caption": {
            "title": "$:/language/Buttons/CloseOthers/Caption",
            "text": "关闭其他"
        },
        "$:/language/Buttons/CloseOthers/Hint": {
            "title": "$:/language/Buttons/CloseOthers/Hint",
            "text": "关闭其他条目"
        },
        "$:/language/Buttons/ControlPanel/Caption": {
            "title": "$:/language/Buttons/ControlPanel/Caption",
            "text": "控制台"
        },
        "$:/language/Buttons/ControlPanel/Hint": {
            "title": "$:/language/Buttons/ControlPanel/Hint",
            "text": "开启控制台"
        },
        "$:/language/Buttons/Delete/Caption": {
            "title": "$:/language/Buttons/Delete/Caption",
            "text": "删除"
        },
        "$:/language/Buttons/Delete/Hint": {
            "title": "$:/language/Buttons/Delete/Hint",
            "text": "删除此条目"
        },
        "$:/language/Buttons/Edit/Caption": {
            "title": "$:/language/Buttons/Edit/Caption",
            "text": "编辑"
        },
        "$:/language/Buttons/Edit/Hint": {
            "title": "$:/language/Buttons/Edit/Hint",
            "text": "编辑此条目"
        },
        "$:/language/Buttons/Encryption/Caption": {
            "title": "$:/language/Buttons/Encryption/Caption",
            "text": "加密"
        },
        "$:/language/Buttons/Encryption/Hint": {
            "title": "$:/language/Buttons/Encryption/Hint",
            "text": "设置或清除保存此维基的密码"
        },
        "$:/language/Buttons/Encryption/ClearPassword/Caption": {
            "title": "$:/language/Buttons/Encryption/ClearPassword/Caption",
            "text": "清除密码"
        },
        "$:/language/Buttons/Encryption/ClearPassword/Hint": {
            "title": "$:/language/Buttons/Encryption/ClearPassword/Hint",
            "text": "清除密码且不加密保存此维基"
        },
        "$:/language/Buttons/Encryption/SetPassword/Caption": {
            "title": "$:/language/Buttons/Encryption/SetPassword/Caption",
            "text": "设置密码"
        },
        "$:/language/Buttons/Encryption/SetPassword/Hint": {
            "title": "$:/language/Buttons/Encryption/SetPassword/Hint",
            "text": "设置加密保存此维基的密码"
        },
        "$:/language/Buttons/ExportPage/Caption": {
            "title": "$:/language/Buttons/ExportPage/Caption",
            "text": "导出所有条目"
        },
        "$:/language/Buttons/ExportPage/Hint": {
            "title": "$:/language/Buttons/ExportPage/Hint",
            "text": "导出所有条目"
        },
        "$:/language/Buttons/ExportTiddler/Caption": {
            "title": "$:/language/Buttons/ExportTiddler/Caption",
            "text": "导出此条目"
        },
        "$:/language/Buttons/ExportTiddler/Hint": {
            "title": "$:/language/Buttons/ExportTiddler/Hint",
            "text": "导出此条目"
        },
        "$:/language/Buttons/ExportTiddlers/Caption": {
            "title": "$:/language/Buttons/ExportTiddlers/Caption",
            "text": "导出条目"
        },
        "$:/language/Buttons/ExportTiddlers/Hint": {
            "title": "$:/language/Buttons/ExportTiddlers/Hint",
            "text": "导出条目"
        },
        "$:/language/Buttons/Fold/Caption": {
            "title": "$:/language/Buttons/Fold/Caption",
            "text": "收合条目"
        },
        "$:/language/Buttons/Fold/Hint": {
            "title": "$:/language/Buttons/Fold/Hint",
            "text": "收合此条目的内容"
        },
        "$:/language/Buttons/Unfold/Caption": {
            "title": "$:/language/Buttons/Unfold/Caption",
            "text": "展开条目"
        },
        "$:/language/Buttons/Unfold/Hint": {
            "title": "$:/language/Buttons/Unfold/Hint",
            "text": "展开此条目的内容"
        },
        "$:/language/Buttons/FoldOthers/Caption": {
            "title": "$:/language/Buttons/FoldOthers/Caption",
            "text": "收合其他条目"
        },
        "$:/language/Buttons/FoldOthers/Hint": {
            "title": "$:/language/Buttons/FoldOthers/Hint",
            "text": "收合其他已开启条目的内容"
        },
        "$:/language/Buttons/FoldAll/Caption": {
            "title": "$:/language/Buttons/FoldAll/Caption",
            "text": "收合所有条目"
        },
        "$:/language/Buttons/FoldAll/Hint": {
            "title": "$:/language/Buttons/FoldAll/Hint",
            "text": "收合所有已开启条目的内容"
        },
        "$:/language/Buttons/Fold/FoldBar/Caption": {
            "title": "$:/language/Buttons/Fold/FoldBar/Caption",
            "text": "收合栏"
        },
        "$:/language/Buttons/Fold/FoldBar/Hint": {
            "title": "$:/language/Buttons/Fold/FoldBar/Hint",
            "text": "可选的收合与展开条目的长条按钮"
        },
        "$:/language/Buttons/UnfoldAll/Caption": {
            "title": "$:/language/Buttons/UnfoldAll/Caption",
            "text": "展开所有条目"
        },
        "$:/language/Buttons/UnfoldAll/Hint": {
            "title": "$:/language/Buttons/UnfoldAll/Hint",
            "text": "展开所有已开启条目的内容"
        },
        "$:/language/Buttons/FullScreen/Caption": {
            "title": "$:/language/Buttons/FullScreen/Caption",
            "text": "全屏幕"
        },
        "$:/language/Buttons/FullScreen/Hint": {
            "title": "$:/language/Buttons/FullScreen/Hint",
            "text": "进入或离开全屏模式"
        },
        "$:/language/Buttons/Help/Caption": {
            "title": "$:/language/Buttons/Help/Caption",
            "text": "帮助"
        },
        "$:/language/Buttons/Help/Hint": {
            "title": "$:/language/Buttons/Help/Hint",
            "text": "显示帮助面板"
        },
        "$:/language/Buttons/Home/Caption": {
            "title": "$:/language/Buttons/Home/Caption",
            "text": "首页"
        },
        "$:/language/Buttons/Home/Hint": {
            "title": "$:/language/Buttons/Home/Hint",
            "text": "开启首页条目"
        },
        "$:/language/Buttons/Import/Caption": {
            "title": "$:/language/Buttons/Import/Caption",
            "text": "导入"
        },
        "$:/language/Buttons/Import/Hint": {
            "title": "$:/language/Buttons/Import/Hint",
            "text": "导入许多类型的文件包括文本、图像、TiddlyWiki 或 JSON"
        },
        "$:/language/Buttons/Info/Caption": {
            "title": "$:/language/Buttons/Info/Caption",
            "text": "信息"
        },
        "$:/language/Buttons/Info/Hint": {
            "title": "$:/language/Buttons/Info/Hint",
            "text": "显示此条目的信息"
        },
        "$:/language/Buttons/Language/Caption": {
            "title": "$:/language/Buttons/Language/Caption",
            "text": "语言"
        },
        "$:/language/Buttons/Language/Hint": {
            "title": "$:/language/Buttons/Language/Hint",
            "text": "选择用户介面语言"
        },
        "$:/language/Buttons/Manager/Caption": {
            "title": "$:/language/Buttons/Manager/Caption",
            "text": "条目管理器"
        },
        "$:/language/Buttons/Manager/Hint": {
            "title": "$:/language/Buttons/Manager/Hint",
            "text": "开启条目管理器"
        },
        "$:/language/Buttons/More/Caption": {
            "title": "$:/language/Buttons/More/Caption",
            "text": "更多"
        },
        "$:/language/Buttons/More/Hint": {
            "title": "$:/language/Buttons/More/Hint",
            "text": "更多动作"
        },
        "$:/language/Buttons/NewHere/Caption": {
            "title": "$:/language/Buttons/NewHere/Caption",
            "text": "添加子条目"
        },
        "$:/language/Buttons/NewHere/Hint": {
            "title": "$:/language/Buttons/NewHere/Hint",
            "text": "创建一个标签为此条目名称的新条目"
        },
        "$:/language/Buttons/NewJournal/Caption": {
            "title": "$:/language/Buttons/NewJournal/Caption",
            "text": "添加日志"
        },
        "$:/language/Buttons/NewJournal/Hint": {
            "title": "$:/language/Buttons/NewJournal/Hint",
            "text": "创建一个新的日志条目"
        },
        "$:/language/Buttons/NewJournalHere/Caption": {
            "title": "$:/language/Buttons/NewJournalHere/Caption",
            "text": "添加子日志"
        },
        "$:/language/Buttons/NewJournalHere/Hint": {
            "title": "$:/language/Buttons/NewJournalHere/Hint",
            "text": "创建一个标签含此条目名称的新日志条目"
        },
        "$:/language/Buttons/NewImage/Caption": {
            "title": "$:/language/Buttons/NewImage/Caption",
            "text": "添加图像"
        },
        "$:/language/Buttons/NewImage/Hint": {
            "title": "$:/language/Buttons/NewImage/Hint",
            "text": "创建一个新的图像条目"
        },
        "$:/language/Buttons/NewMarkdown/Caption": {
            "title": "$:/language/Buttons/NewMarkdown/Caption",
            "text": "添加 Markdown 条目"
        },
        "$:/language/Buttons/NewMarkdown/Hint": {
            "title": "$:/language/Buttons/NewMarkdown/Hint",
            "text": "创建一个新的 Markdown 条目"
        },
        "$:/language/Buttons/NewTiddler/Caption": {
            "title": "$:/language/Buttons/NewTiddler/Caption",
            "text": "添加条目"
        },
        "$:/language/Buttons/NewTiddler/Hint": {
            "title": "$:/language/Buttons/NewTiddler/Hint",
            "text": "创建一个新的条目"
        },
        "$:/language/Buttons/OpenWindow/Caption": {
            "title": "$:/language/Buttons/OpenWindow/Caption",
            "text": "开启于新窗口"
        },
        "$:/language/Buttons/OpenWindow/Hint": {
            "title": "$:/language/Buttons/OpenWindow/Hint",
            "text": "在新窗口中开启条目"
        },
        "$:/language/Buttons/Palette/Caption": {
            "title": "$:/language/Buttons/Palette/Caption",
            "text": "调色板"
        },
        "$:/language/Buttons/Palette/Hint": {
            "title": "$:/language/Buttons/Palette/Hint",
            "text": "选择调色板"
        },
        "$:/language/Buttons/Permalink/Caption": {
            "title": "$:/language/Buttons/Permalink/Caption",
            "text": "引用链接"
        },
        "$:/language/Buttons/Permalink/Hint": {
            "title": "$:/language/Buttons/Permalink/Hint",
            "text": "设置浏览器网址栏为直接链接到此条目"
        },
        "$:/language/Buttons/Permaview/Caption": {
            "title": "$:/language/Buttons/Permaview/Caption",
            "text": "永久链接"
        },
        "$:/language/Buttons/Permaview/Hint": {
            "title": "$:/language/Buttons/Permaview/Hint",
            "text": "设置浏览器网址栏为直接链接到当前所有已开启条目"
        },
        "$:/language/Buttons/Print/Caption": {
            "title": "$:/language/Buttons/Print/Caption",
            "text": "打印页面"
        },
        "$:/language/Buttons/Print/Hint": {
            "title": "$:/language/Buttons/Print/Hint",
            "text": "打印当前页面"
        },
        "$:/language/Buttons/Refresh/Caption": {
            "title": "$:/language/Buttons/Refresh/Caption",
            "text": "刷新"
        },
        "$:/language/Buttons/Refresh/Hint": {
            "title": "$:/language/Buttons/Refresh/Hint",
            "text": "执行维基的完全刷新"
        },
        "$:/language/Buttons/Save/Caption": {
            "title": "$:/language/Buttons/Save/Caption",
            "text": "确定"
        },
        "$:/language/Buttons/Save/Hint": {
            "title": "$:/language/Buttons/Save/Hint",
            "text": "确定对此条目的更改"
        },
        "$:/language/Buttons/SaveWiki/Caption": {
            "title": "$:/language/Buttons/SaveWiki/Caption",
            "text": "保存变更"
        },
        "$:/language/Buttons/SaveWiki/Hint": {
            "title": "$:/language/Buttons/SaveWiki/Hint",
            "text": "保存变更"
        },
        "$:/language/Buttons/StoryView/Caption": {
            "title": "$:/language/Buttons/StoryView/Caption",
            "text": "查看模式"
        },
        "$:/language/Buttons/StoryView/Hint": {
            "title": "$:/language/Buttons/StoryView/Hint",
            "text": "选择查看条目的视觉效果"
        },
        "$:/language/Buttons/HideSideBar/Caption": {
            "title": "$:/language/Buttons/HideSideBar/Caption",
            "text": "隐藏侧边栏"
        },
        "$:/language/Buttons/HideSideBar/Hint": {
            "title": "$:/language/Buttons/HideSideBar/Hint",
            "text": "隐藏侧边栏"
        },
        "$:/language/Buttons/ShowSideBar/Caption": {
            "title": "$:/language/Buttons/ShowSideBar/Caption",
            "text": "显示侧边栏"
        },
        "$:/language/Buttons/ShowSideBar/Hint": {
            "title": "$:/language/Buttons/ShowSideBar/Hint",
            "text": "显示侧边栏"
        },
        "$:/language/Buttons/TagManager/Caption": {
            "title": "$:/language/Buttons/TagManager/Caption",
            "text": "标签管理"
        },
        "$:/language/Buttons/TagManager/Hint": {
            "title": "$:/language/Buttons/TagManager/Hint",
            "text": "标签管理"
        },
        "$:/language/Buttons/Timestamp/Caption": {
            "title": "$:/language/Buttons/Timestamp/Caption",
            "text": "时间戳记"
        },
        "$:/language/Buttons/Timestamp/Hint": {
            "title": "$:/language/Buttons/Timestamp/Hint",
            "text": "选择修改是否更新时间戳记"
        },
        "$:/language/Buttons/Timestamp/On/Caption": {
            "title": "$:/language/Buttons/Timestamp/On/Caption",
            "text": "时间戳记开启"
        },
        "$:/language/Buttons/Timestamp/On/Hint": {
            "title": "$:/language/Buttons/Timestamp/On/Hint",
            "text": "条目被修改时,更新时间戳记"
        },
        "$:/language/Buttons/Timestamp/Off/Caption": {
            "title": "$:/language/Buttons/Timestamp/Off/Caption",
            "text": "时间戳记关闭"
        },
        "$:/language/Buttons/Timestamp/Off/Hint": {
            "title": "$:/language/Buttons/Timestamp/Off/Hint",
            "text": "条目被修改时,不更新时间戳记"
        },
        "$:/language/Buttons/Theme/Caption": {
            "title": "$:/language/Buttons/Theme/Caption",
            "text": "布景主题"
        },
        "$:/language/Buttons/Theme/Hint": {
            "title": "$:/language/Buttons/Theme/Hint",
            "text": "选择布景主题"
        },
        "$:/language/Buttons/Bold/Caption": {
            "title": "$:/language/Buttons/Bold/Caption",
            "text": "粗体"
        },
        "$:/language/Buttons/Bold/Hint": {
            "title": "$:/language/Buttons/Bold/Hint",
            "text": "套用粗体格式于所选文本"
        },
        "$:/language/Buttons/Clear/Caption": {
            "title": "$:/language/Buttons/Clear/Caption",
            "text": "清除"
        },
        "$:/language/Buttons/Clear/Hint": {
            "title": "$:/language/Buttons/Clear/Hint",
            "text": "清除图像为纯色"
        },
        "$:/language/Buttons/EditorHeight/Caption": {
            "title": "$:/language/Buttons/EditorHeight/Caption",
            "text": "编辑器高度"
        },
        "$:/language/Buttons/EditorHeight/Caption/Auto": {
            "title": "$:/language/Buttons/EditorHeight/Caption/Auto",
            "text": "自动调整高度以适合内容"
        },
        "$:/language/Buttons/EditorHeight/Caption/Fixed": {
            "title": "$:/language/Buttons/EditorHeight/Caption/Fixed",
            "text": "固定高度︰"
        },
        "$:/language/Buttons/EditorHeight/Hint": {
            "title": "$:/language/Buttons/EditorHeight/Hint",
            "text": "选择文本编辑器的高度"
        },
        "$:/language/Buttons/Excise/Caption": {
            "title": "$:/language/Buttons/Excise/Caption",
            "text": "剪切"
        },
        "$:/language/Buttons/Excise/Caption/Excise": {
            "title": "$:/language/Buttons/Excise/Caption/Excise",
            "text": "执行剪切"
        },
        "$:/language/Buttons/Excise/Caption/MacroName": {
            "title": "$:/language/Buttons/Excise/Caption/MacroName",
            "text": "宏的名称︰"
        },
        "$:/language/Buttons/Excise/Caption/NewTitle": {
            "title": "$:/language/Buttons/Excise/Caption/NewTitle",
            "text": "新条目的名称︰"
        },
        "$:/language/Buttons/Excise/Caption/Replace": {
            "title": "$:/language/Buttons/Excise/Caption/Replace",
            "text": "替换剪切的文本为:"
        },
        "$:/language/Buttons/Excise/Caption/Replace/Macro": {
            "title": "$:/language/Buttons/Excise/Caption/Replace/Macro",
            "text": "宏"
        },
        "$:/language/Buttons/Excise/Caption/Replace/Link": {
            "title": "$:/language/Buttons/Excise/Caption/Replace/Link",
            "text": "链接"
        },
        "$:/language/Buttons/Excise/Caption/Replace/Transclusion": {
            "title": "$:/language/Buttons/Excise/Caption/Replace/Transclusion",
            "text": "嵌入"
        },
        "$:/language/Buttons/Excise/Caption/Tag": {
            "title": "$:/language/Buttons/Excise/Caption/Tag",
            "text": "将新条目的标签设为此条目的名称"
        },
        "$:/language/Buttons/Excise/Caption/TiddlerExists": {
            "title": "$:/language/Buttons/Excise/Caption/TiddlerExists",
            "text": "警示:条目已经存在"
        },
        "$:/language/Buttons/Excise/Hint": {
            "title": "$:/language/Buttons/Excise/Hint",
            "text": "剪切所选文本到一个新条目"
        },
        "$:/language/Buttons/Heading1/Caption": {
            "title": "$:/language/Buttons/Heading1/Caption",
            "text": "标题 1"
        },
        "$:/language/Buttons/Heading1/Hint": {
            "title": "$:/language/Buttons/Heading1/Hint",
            "text": "套用标题级别 1 的格式于包含所选文本的列"
        },
        "$:/language/Buttons/Heading2/Caption": {
            "title": "$:/language/Buttons/Heading2/Caption",
            "text": "标题 2"
        },
        "$:/language/Buttons/Heading2/Hint": {
            "title": "$:/language/Buttons/Heading2/Hint",
            "text": "套用标题级别 2 的格式于包含所选文本的列"
        },
        "$:/language/Buttons/Heading3/Caption": {
            "title": "$:/language/Buttons/Heading3/Caption",
            "text": "标题 3"
        },
        "$:/language/Buttons/Heading3/Hint": {
            "title": "$:/language/Buttons/Heading3/Hint",
            "text": "套用标题级别 3 的格式于包含所选文本的列"
        },
        "$:/language/Buttons/Heading4/Caption": {
            "title": "$:/language/Buttons/Heading4/Caption",
            "text": "标题 4"
        },
        "$:/language/Buttons/Heading4/Hint": {
            "title": "$:/language/Buttons/Heading4/Hint",
            "text": "套用标题级别 4 的格式于包含所选文本的列"
        },
        "$:/language/Buttons/Heading5/Caption": {
            "title": "$:/language/Buttons/Heading5/Caption",
            "text": "标题 5"
        },
        "$:/language/Buttons/Heading5/Hint": {
            "title": "$:/language/Buttons/Heading5/Hint",
            "text": "套用标题级别 5 的格式于包含所选文本的列"
        },
        "$:/language/Buttons/Heading6/Caption": {
            "title": "$:/language/Buttons/Heading6/Caption",
            "text": "标题 6"
        },
        "$:/language/Buttons/Heading6/Hint": {
            "title": "$:/language/Buttons/Heading6/Hint",
            "text": "套用标题级别 6 的格式于包含所选文本的列"
        },
        "$:/language/Buttons/Italic/Caption": {
            "title": "$:/language/Buttons/Italic/Caption",
            "text": "斜体"
        },
        "$:/language/Buttons/Italic/Hint": {
            "title": "$:/language/Buttons/Italic/Hint",
            "text": "套用斜体格式于所选文本"
        },
        "$:/language/Buttons/LineWidth/Caption": {
            "title": "$:/language/Buttons/LineWidth/Caption",
            "text": "线宽"
        },
        "$:/language/Buttons/LineWidth/Hint": {
            "title": "$:/language/Buttons/LineWidth/Hint",
            "text": "设置绘画的线条宽度"
        },
        "$:/language/Buttons/Link/Caption": {
            "title": "$:/language/Buttons/Link/Caption",
            "text": "链接"
        },
        "$:/language/Buttons/Link/Hint": {
            "title": "$:/language/Buttons/Link/Hint",
            "text": "创建维基文字链接"
        },
        "$:/language/Buttons/ListBullet/Caption": {
            "title": "$:/language/Buttons/ListBullet/Caption",
            "text": "符号清单"
        },
        "$:/language/Buttons/ListBullet/Hint": {
            "title": "$:/language/Buttons/ListBullet/Hint",
            "text": "套用符号清单格式于包含所选文本的列"
        },
        "$:/language/Buttons/ListNumber/Caption": {
            "title": "$:/language/Buttons/ListNumber/Caption",
            "text": "数字清单"
        },
        "$:/language/Buttons/ListNumber/Hint": {
            "title": "$:/language/Buttons/ListNumber/Hint",
            "text": "套用数字清单格式于包含所选文本的列"
        },
        "$:/language/Buttons/MonoBlock/Caption": {
            "title": "$:/language/Buttons/MonoBlock/Caption",
            "text": "等宽区块"
        },
        "$:/language/Buttons/MonoBlock/Hint": {
            "title": "$:/language/Buttons/MonoBlock/Hint",
            "text": "套用等宽区块格式于包含所选文本的列"
        },
        "$:/language/Buttons/MonoLine/Caption": {
            "title": "$:/language/Buttons/MonoLine/Caption",
            "text": "等宽"
        },
        "$:/language/Buttons/MonoLine/Hint": {
            "title": "$:/language/Buttons/MonoLine/Hint",
            "text": "套用等宽字符格式于所选文本"
        },
        "$:/language/Buttons/Opacity/Caption": {
            "title": "$:/language/Buttons/Opacity/Caption",
            "text": "不透明度"
        },
        "$:/language/Buttons/Opacity/Hint": {
            "title": "$:/language/Buttons/Opacity/Hint",
            "text": "设置绘画的不透明度"
        },
        "$:/language/Buttons/Paint/Caption": {
            "title": "$:/language/Buttons/Paint/Caption",
            "text": "绘画颜色"
        },
        "$:/language/Buttons/Paint/Hint": {
            "title": "$:/language/Buttons/Paint/Hint",
            "text": "设置绘画的颜色"
        },
        "$:/language/Buttons/Picture/Caption": {
            "title": "$:/language/Buttons/Picture/Caption",
            "text": "图片"
        },
        "$:/language/Buttons/Picture/Hint": {
            "title": "$:/language/Buttons/Picture/Hint",
            "text": "插入图片"
        },
        "$:/language/Buttons/Preview/Caption": {
            "title": "$:/language/Buttons/Preview/Caption",
            "text": "预览"
        },
        "$:/language/Buttons/Preview/Hint": {
            "title": "$:/language/Buttons/Preview/Hint",
            "text": "显示预览窗格"
        },
        "$:/language/Buttons/PreviewType/Caption": {
            "title": "$:/language/Buttons/PreviewType/Caption",
            "text": "预览类型"
        },
        "$:/language/Buttons/PreviewType/Hint": {
            "title": "$:/language/Buttons/PreviewType/Hint",
            "text": "选择预览类型"
        },
        "$:/language/Buttons/Quote/Caption": {
            "title": "$:/language/Buttons/Quote/Caption",
            "text": "引言"
        },
        "$:/language/Buttons/Quote/Hint": {
            "title": "$:/language/Buttons/Quote/Hint",
            "text": "套用引言文本格式于包含所选文本的列"
        },
        "$:/language/Buttons/Size/Caption": {
            "title": "$:/language/Buttons/Size/Caption",
            "text": "图像大小"
        },
        "$:/language/Buttons/Size/Caption/Height": {
            "title": "$:/language/Buttons/Size/Caption/Height",
            "text": "高度︰"
        },
        "$:/language/Buttons/Size/Caption/Resize": {
            "title": "$:/language/Buttons/Size/Caption/Resize",
            "text": "调整图像的大小"
        },
        "$:/language/Buttons/Size/Caption/Width": {
            "title": "$:/language/Buttons/Size/Caption/Width",
            "text": "宽度:"
        },
        "$:/language/Buttons/Size/Hint": {
            "title": "$:/language/Buttons/Size/Hint",
            "text": "设置图像的大小"
        },
        "$:/language/Buttons/Stamp/Caption": {
            "title": "$:/language/Buttons/Stamp/Caption",
            "text": "印记"
        },
        "$:/language/Buttons/Stamp/Caption/New": {
            "title": "$:/language/Buttons/Stamp/Caption/New",
            "text": "添加您自己的"
        },
        "$:/language/Buttons/Stamp/Hint": {
            "title": "$:/language/Buttons/Stamp/Hint",
            "text": "插入一个预配置的文本片段"
        },
        "$:/language/Buttons/Stamp/New/Title": {
            "title": "$:/language/Buttons/Stamp/New/Title",
            "text": "在选单中显示的标题"
        },
        "$:/language/Buttons/Stamp/New/Text": {
            "title": "$:/language/Buttons/Stamp/New/Text",
            "text": "片段的文本。(记得在 `caption` 栏位中添加一个说明性的标题)。"
        },
        "$:/language/Buttons/Strikethrough/Caption": {
            "title": "$:/language/Buttons/Strikethrough/Caption",
            "text": "删除线"
        },
        "$:/language/Buttons/Strikethrough/Hint": {
            "title": "$:/language/Buttons/Strikethrough/Hint",
            "text": "套用删除线格式于所选文本"
        },
        "$:/language/Buttons/Subscript/Caption": {
            "title": "$:/language/Buttons/Subscript/Caption",
            "text": "下标"
        },
        "$:/language/Buttons/Subscript/Hint": {
            "title": "$:/language/Buttons/Subscript/Hint",
            "text": "套用下标格式于所选文本"
        },
        "$:/language/Buttons/Superscript/Caption": {
            "title": "$:/language/Buttons/Superscript/Caption",
            "text": "上标"
        },
        "$:/language/Buttons/Superscript/Hint": {
            "title": "$:/language/Buttons/Superscript/Hint",
            "text": "套用上标格式于所选文本"
        },
        "$:/language/Buttons/Underline/Caption": {
            "title": "$:/language/Buttons/Underline/Caption",
            "text": "下划线"
        },
        "$:/language/Buttons/Underline/Hint": {
            "title": "$:/language/Buttons/Underline/Hint",
            "text": "套用下划线格式于所选文本"
        },
        "$:/language/ControlPanel/Advanced/Caption": {
            "title": "$:/language/ControlPanel/Advanced/Caption",
            "text": "高级"
        },
        "$:/language/ControlPanel/Advanced/Hint": {
            "title": "$:/language/ControlPanel/Advanced/Hint",
            "text": "关于此 TiddlyWiki 的内部信息"
        },
        "$:/language/ControlPanel/Appearance/Caption": {
            "title": "$:/language/ControlPanel/Appearance/Caption",
            "text": "视觉外观"
        },
        "$:/language/ControlPanel/Appearance/Hint": {
            "title": "$:/language/ControlPanel/Appearance/Hint",
            "text": "定制您的 TiddlyWiki 外观。"
        },
        "$:/language/ControlPanel/Basics/AnimDuration/Prompt": {
            "title": "$:/language/ControlPanel/Basics/AnimDuration/Prompt",
            "text": "动画持续时间:"
        },
        "$:/language/ControlPanel/Basics/Caption": {
            "title": "$:/language/ControlPanel/Basics/Caption",
            "text": "基本"
        },
        "$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint": {
            "title": "$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint",
            "text": "标题含空白时请使用 &#91;&#91;双中括弧&#93;&#93;,或者您可用 <$button set=\"$:/DefaultTiddlers\" setTo=\"[list[$:/StoryList]]\">保留开启中的条目顺序</$button>"
        },
        "$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt",
            "text": "首页:"
        },
        "$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint": {
            "title": "$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint",
            "text": "默认开启的条目:"
        },
        "$:/language/ControlPanel/Basics/Language/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Language/Prompt",
            "text": "您好!当前的语言:"
        },
        "$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt",
            "text": "新日志条目的标签"
        },
        "$:/language/ControlPanel/Basics/NewJournal/Text/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewJournal/Text/Prompt",
            "text": "新日志条目的内容"
        },
        "$:/language/ControlPanel/Basics/NewJournal/Title/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewJournal/Title/Prompt",
            "text": "新日志条目的名称"
        },
        "$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt",
            "text": "被覆写的默认条目数量:"
        },
        "$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt",
            "text": "默认条目数量:"
        },
        "$:/language/ControlPanel/Basics/Subtitle/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Subtitle/Prompt",
            "text": "副标题:"
        },
        "$:/language/ControlPanel/Basics/SystemTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/SystemTiddlers/Prompt",
            "text": "系统条目数量:"
        },
        "$:/language/ControlPanel/Basics/Tags/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Tags/Prompt",
            "text": "标签数量:"
        },
        "$:/language/ControlPanel/Basics/Tiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Tiddlers/Prompt",
            "text": "一般条目数量:"
        },
        "$:/language/ControlPanel/Basics/Title/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Title/Prompt",
            "text": "标题:"
        },
        "$:/language/ControlPanel/Basics/Username/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Username/Prompt",
            "text": "编辑者署名:"
        },
        "$:/language/ControlPanel/Basics/Version/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Version/Prompt",
            "text": "~TiddlyWiki 版本:"
        },
        "$:/language/ControlPanel/EditorTypes/Caption": {
            "title": "$:/language/ControlPanel/EditorTypes/Caption",
            "text": "编辑器类型"
        },
        "$:/language/ControlPanel/EditorTypes/Editor/Caption": {
            "title": "$:/language/ControlPanel/EditorTypes/Editor/Caption",
            "text": "编辑器"
        },
        "$:/language/ControlPanel/EditorTypes/Hint": {
            "title": "$:/language/ControlPanel/EditorTypes/Hint",
            "text": "这些条目决定使用哪个编辑器来编辑特定条目类型。"
        },
        "$:/language/ControlPanel/EditorTypes/Type/Caption": {
            "title": "$:/language/ControlPanel/EditorTypes/Type/Caption",
            "text": "类型"
        },
        "$:/language/ControlPanel/Info/Caption": {
            "title": "$:/language/ControlPanel/Info/Caption",
            "text": "信息"
        },
        "$:/language/ControlPanel/Info/Hint": {
            "title": "$:/language/ControlPanel/Info/Hint",
            "text": "有关此 TiddlyWiki 的信息"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt",
            "text": "在此输入快捷键"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Add/Caption": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Caption",
            "text": "添加快捷键"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Caption": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Caption",
            "text": "快捷键"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Hint": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Hint",
            "text": "管理键盘快捷键分配"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption",
            "text": "尚无指定快捷键"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint",
            "text": "删除快捷键"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/All": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/All",
            "text": "所有平台"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac",
            "text": "仅 Macintosh 平台"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac",
            "text": "仅非 Macintosh 平台"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux",
            "text": "仅 Linux 平台"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux",
            "text": "仅非 Linux 平台"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows",
            "text": "仅 Windows 平台"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows",
            "text": "仅非 Windows 平台"
        },
        "$:/language/ControlPanel/LoadedModules/Caption": {
            "title": "$:/language/ControlPanel/LoadedModules/Caption",
            "text": "已加载的模块"
        },
        "$:/language/ControlPanel/LoadedModules/Hint": {
            "title": "$:/language/ControlPanel/LoadedModules/Hint",
            "text": "这些是当前已加载的模块之源码条目。斜体的模块则无源码条目,通常是因为它们是在引导过程中设置。"
        },
        "$:/language/ControlPanel/Palette/Caption": {
            "title": "$:/language/ControlPanel/Palette/Caption",
            "text": "调色板"
        },
        "$:/language/ControlPanel/Palette/Editor/Clone/Caption": {
            "title": "$:/language/ControlPanel/Palette/Editor/Clone/Caption",
            "text": "复制"
        },
        "$:/language/ControlPanel/Palette/Editor/Clone/Prompt": {
            "title": "$:/language/ControlPanel/Palette/Editor/Clone/Prompt",
            "text": "建议您修改前先复制此默认调色板"
        },
        "$:/language/ControlPanel/Palette/Editor/Prompt/Modified": {
            "title": "$:/language/ControlPanel/Palette/Editor/Prompt/Modified",
            "text": "此默认调色板已被修改过"
        },
        "$:/language/ControlPanel/Palette/Editor/Prompt": {
            "title": "$:/language/ControlPanel/Palette/Editor/Prompt",
            "text": "编辑"
        },
        "$:/language/ControlPanel/Palette/Editor/Reset/Caption": {
            "title": "$:/language/ControlPanel/Palette/Editor/Reset/Caption",
            "text": "重置"
        },
        "$:/language/ControlPanel/Palette/HideEditor/Caption": {
            "title": "$:/language/ControlPanel/Palette/HideEditor/Caption",
            "text": "隐藏编辑器"
        },
        "$:/language/ControlPanel/Palette/Prompt": {
            "title": "$:/language/ControlPanel/Palette/Prompt",
            "text": "当前的调色板:"
        },
        "$:/language/ControlPanel/Palette/ShowEditor/Caption": {
            "title": "$:/language/ControlPanel/Palette/ShowEditor/Caption",
            "text": "显示编辑器"
        },
        "$:/language/ControlPanel/Plugins/Add/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Add/Hint",
            "text": "从官方插件库安装插件"
        },
        "$:/language/ControlPanel/Plugins/Add/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Add/Caption",
            "text": "获取更多插件"
        },
        "$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint": {
            "title": "$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint",
            "text": "此插件已经安装版本 <$text text=<<installedVersion>>/>"
        },
        "$:/language/ControlPanel/Plugins/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Caption",
            "text": "插件"
        },
        "$:/language/ControlPanel/Plugins/Disable/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Disable/Caption",
            "text": "禁用"
        },
        "$:/language/ControlPanel/Plugins/Disable/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Disable/Hint",
            "text": "重新加载页面时禁用此插件"
        },
        "$:/language/ControlPanel/Plugins/Disabled/Status": {
            "title": "$:/language/ControlPanel/Plugins/Disabled/Status",
            "text": "(已禁用)"
        },
        "$:/language/ControlPanel/Plugins/Empty/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Empty/Hint",
            "text": "无"
        },
        "$:/language/ControlPanel/Plugins/Enable/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Enable/Caption",
            "text": "启用"
        },
        "$:/language/ControlPanel/Plugins/Enable/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Enable/Hint",
            "text": "重新加载页面时启用此插件"
        },
        "$:/language/ControlPanel/Plugins/Install/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Install/Caption",
            "text": "安装"
        },
        "$:/language/ControlPanel/Plugins/Installed/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Installed/Hint",
            "text": "当前已安装的插件:"
        },
        "$:/language/ControlPanel/Plugins/Languages/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Languages/Caption",
            "text": "语言"
        },
        "$:/language/ControlPanel/Plugins/Languages/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Languages/Hint",
            "text": "语言包插件"
        },
        "$:/language/ControlPanel/Plugins/NoInfoFound/Hint": {
            "title": "$:/language/ControlPanel/Plugins/NoInfoFound/Hint",
            "text": "无 ''\"<$text text=<<currentTab>>/>\"''"
        },
        "$:/language/ControlPanel/Plugins/NoInformation/Hint": {
            "title": "$:/language/ControlPanel/Plugins/NoInformation/Hint",
            "text": "未提供信息"
        },
        "$:/language/ControlPanel/Plugins/NotInstalled/Hint": {
            "title": "$:/language/ControlPanel/Plugins/NotInstalled/Hint",
            "text": "尚未安装此插件"
        },
        "$:/language/ControlPanel/Plugins/OpenPluginLibrary": {
            "title": "$:/language/ControlPanel/Plugins/OpenPluginLibrary",
            "text": "开启插件程式库"
        },
        "$:/language/ControlPanel/Plugins/ClosePluginLibrary": {
            "title": "$:/language/ControlPanel/Plugins/ClosePluginLibrary",
            "text": "关闭插件程式库"
        },
        "$:/language/ControlPanel/Plugins/Plugins/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Plugins/Caption",
            "text": "插件"
        },
        "$:/language/ControlPanel/Plugins/Plugins/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Plugins/Hint",
            "text": "插件"
        },
        "$:/language/ControlPanel/Plugins/Reinstall/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Reinstall/Caption",
            "text": "重新安装"
        },
        "$:/language/ControlPanel/Plugins/Themes/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Themes/Caption",
            "text": "布景主题"
        },
        "$:/language/ControlPanel/Plugins/Themes/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Themes/Hint",
            "text": "布景主题插件"
        },
        "$:/language/ControlPanel/Parsing/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Caption",
            "text": "解析"
        },
        "$:/language/ControlPanel/Parsing/Hint": {
            "title": "$:/language/ControlPanel/Parsing/Hint",
            "text": "在此您可以全域禁用或启用维基解析规则。要使更改生效,请保存并重新加载您的维基。禁用某些解析规则,会妨碍 <$text text=\"TiddlyWiki\"/> 正常运作。可使用[[安全模式|http://tiddlywiki.com/#SafeMode]]恢复正常操作。"
        },
        "$:/language/ControlPanel/Parsing/Block/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Block/Caption",
            "text": "区块解析规则"
        },
        "$:/language/ControlPanel/Parsing/Inline/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Inline/Caption",
            "text": "内联解析规则"
        },
        "$:/language/ControlPanel/Parsing/Pragma/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Pragma/Caption",
            "text": "编译指示解析规则"
        },
        "$:/language/ControlPanel/Saving/Caption": {
            "title": "$:/language/ControlPanel/Saving/Caption",
            "text": "保存"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description",
            "text": "允许下载保存模块的自动保存"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint",
            "text": "启用下载保存模块的自动保存"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/Caption": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/Caption",
            "text": "下载保存模块"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/Hint": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/Hint",
            "text": "这些设置适用于兼容 HTML5 的下载保存模块"
        },
        "$:/language/ControlPanel/Saving/General/Caption": {
            "title": "$:/language/ControlPanel/Saving/General/Caption",
            "text": "通用"
        },
        "$:/language/ControlPanel/Saving/General/Hint": {
            "title": "$:/language/ControlPanel/Saving/General/Hint",
            "text": "这些设置适用于所有已载入的保存模块"
        },
        "$:/language/ControlPanel/Saving/Hint": {
            "title": "$:/language/ControlPanel/Saving/Hint",
            "text": "用于通过保存模块将整个 TiddlyWiki 保存为单个文件的设置"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading",
            "text": "高级设置"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/BackupDir": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/BackupDir",
            "text": "备份文件夹"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Backups": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Backups",
            "text": "备份"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Caption": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Caption",
            "text": "~TiddlySpot 保存模块"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Description": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Description",
            "text": "这些设置只适用于保存到 http://tiddlyspot.com 或兼容的远程服务器时。"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Filename": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Filename",
            "text": "上传文件名"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Heading": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Heading",
            "text": "~TiddlySpot"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Hint": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Hint",
            "text": "//默认之服务器网址 `http://<wikiname>.tiddlyspot.com/store.cgi`,可改为定制之服务器网址,例如 `http://example.com/store.php`。//"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Password": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Password",
            "text": "密码"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/ServerURL": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/ServerURL",
            "text": "服务器网址"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/UploadDir": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/UploadDir",
            "text": "上传文件夹"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/UserName": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/UserName",
            "text": "用户"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Caption": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Caption",
            "text": "自动保存"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Disabled/Description": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Disabled/Description",
            "text": "不要自动保存变更"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Enabled/Description": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Enabled/Description",
            "text": "自动保存变更"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Hint": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Hint",
            "text": "当使用支持的保存模块时,在编辑期间尝试自动保存变更"
        },
        "$:/language/ControlPanel/Settings/CamelCase/Caption": {
            "title": "$:/language/ControlPanel/Settings/CamelCase/Caption",
            "text": "驼峰式维基链接"
        },
        "$:/language/ControlPanel/Settings/CamelCase/Hint": {
            "title": "$:/language/ControlPanel/Settings/CamelCase/Hint",
            "text": "您可以全域禁用驼峰式短语自动链接。须保存后重新加载,方才生效。"
        },
        "$:/language/ControlPanel/Settings/CamelCase/Description": {
            "title": "$:/language/ControlPanel/Settings/CamelCase/Description",
            "text": "启用自动驼峰式链接"
        },
        "$:/language/ControlPanel/Settings/Caption": {
            "title": "$:/language/ControlPanel/Settings/Caption",
            "text": "设置"
        },
        "$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption": {
            "title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption",
            "text": "默认侧边栏页签"
        },
        "$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint": {
            "title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint",
            "text": "指定默认显示的侧边栏页签"
        },
        "$:/language/ControlPanel/Settings/EditorToolbar/Caption": {
            "title": "$:/language/ControlPanel/Settings/EditorToolbar/Caption",
            "text": "编辑器工具栏"
        },
        "$:/language/ControlPanel/Settings/EditorToolbar/Hint": {
            "title": "$:/language/ControlPanel/Settings/EditorToolbar/Hint",
            "text": "启用或禁用编辑器工具栏︰"
        },
        "$:/language/ControlPanel/Settings/EditorToolbar/Description": {
            "title": "$:/language/ControlPanel/Settings/EditorToolbar/Description",
            "text": "显示编辑器工具栏"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Caption": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Caption",
            "text": "条目信息面板模式"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Hint": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Hint",
            "text": "控制条目信息面板何时关闭︰"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description",
            "text": "条目信息面板自动关闭"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description",
            "text": "条目信息面板保持打开状态,直到明确关闭"
        },
        "$:/language/ControlPanel/Settings/Hint": {
            "title": "$:/language/ControlPanel/Settings/Hint",
            "text": "这些高级设置让您定制 TiddlyWiki 的行为。"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/Caption": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/Caption",
            "text": "条目开启行为"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint",
            "text": "从故事河//中//导航"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint",
            "text": "从故事河//外//导航"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove",
            "text": "开启于当前条目之上"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow",
            "text": "开启于当前条目之下"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop",
            "text": "开启于故事河的顶端"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom",
            "text": "开启于故事河的底部"
        },
        "$:/language/ControlPanel/Settings/MissingLinks/Caption": {
            "title": "$:/language/ControlPanel/Settings/MissingLinks/Caption",
            "text": "维基链接"
        },
        "$:/language/ControlPanel/Settings/MissingLinks/Hint": {
            "title": "$:/language/ControlPanel/Settings/MissingLinks/Hint",
            "text": "选择是否要链接到尚未存在的条目"
        },
        "$:/language/ControlPanel/Settings/MissingLinks/Description": {
            "title": "$:/language/ControlPanel/Settings/MissingLinks/Description",
            "text": "启用链接到佚失条目"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Caption": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Caption",
            "text": "网址栏导览"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Hint": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Hint",
            "text": "在浏览器网址栏导览到条目时的行为:"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description",
            "text": "不更新网址栏"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description",
            "text": "包含目标条目"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description",
            "text": "包括目标条目和当前已开启的条目序列"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/Caption": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/Caption",
            "text": "历史记录导览"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/Hint": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/Hint",
            "text": "当导览到条目时,更新浏览器历史记录:"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/No/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/No/Description",
            "text": "不更新历史记录"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description",
            "text": "更新历史记录"
        },
        "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption": {
            "title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption",
            "text": "性能检测"
        },
        "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint": {
            "title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint",
            "text": "在浏览器的开发人员控制台,显示性能统计数据。需要重新加载才能生效。"
        },
        "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description": {
            "title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description",
            "text": "启用性能检测"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption",
            "text": "工具栏按钮样式"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint",
            "text": "选择工具栏按钮的样式:"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless",
            "text": "无边框"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed",
            "text": "方框"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded",
            "text": "圆形"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Caption": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Caption",
            "text": "工具栏按钮"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Hint": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Hint",
            "text": "默认的工具栏按钮外观:"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description",
            "text": "包含图标"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description",
            "text": "包含文本"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/Caption": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/Caption",
            "text": "条目标题"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/Hint": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/Hint",
            "text": "可选地显示条目标题为链接"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/No/Description": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/No/Description",
            "text": "不显示条目标题为链接"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/Yes/Description": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/Yes/Description",
            "text": "显示条目标题为链接"
        },
        "$:/language/ControlPanel/StoryView/Caption": {
            "title": "$:/language/ControlPanel/StoryView/Caption",
            "text": "查看模式"
        },
        "$:/language/ControlPanel/StoryView/Prompt": {
            "title": "$:/language/ControlPanel/StoryView/Prompt",
            "text": "当前的查看模式:"
        },
        "$:/language/ControlPanel/Theme/Caption": {
            "title": "$:/language/ControlPanel/Theme/Caption",
            "text": "布景主题"
        },
        "$:/language/ControlPanel/Theme/Prompt": {
            "title": "$:/language/ControlPanel/Theme/Prompt",
            "text": "当前的布景主题:"
        },
        "$:/language/ControlPanel/TiddlerFields/Caption": {
            "title": "$:/language/ControlPanel/TiddlerFields/Caption",
            "text": "条目栏位"
        },
        "$:/language/ControlPanel/TiddlerFields/Hint": {
            "title": "$:/language/ControlPanel/TiddlerFields/Hint",
            "text": "这是本维基使用中的所有条目栏位(含系统条目的栏位,但默认条目的栏位除外)。"
        },
        "$:/language/ControlPanel/Toolbars/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/Caption",
            "text": "工具栏"
        },
        "$:/language/ControlPanel/Toolbars/EditToolbar/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/EditToolbar/Caption",
            "text": "编辑工具栏"
        },
        "$:/language/ControlPanel/Toolbars/EditToolbar/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/EditToolbar/Hint",
            "text": "选择将显示哪些按钮于条目的编辑模式工具栏。拖放可改变顺序。"
        },
        "$:/language/ControlPanel/Toolbars/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/Hint",
            "text": "选择将显示哪些工具栏按钮"
        },
        "$:/language/ControlPanel/Toolbars/PageControls/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/PageControls/Caption",
            "text": "页面工具栏"
        },
        "$:/language/ControlPanel/Toolbars/PageControls/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/PageControls/Hint",
            "text": "选择将显示哪些按钮于主页面的工具栏。拖放可改变顺序。"
        },
        "$:/language/ControlPanel/Toolbars/EditorToolbar/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Caption",
            "text": "编辑器工具栏"
        },
        "$:/language/ControlPanel/Toolbars/EditorToolbar/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Hint",
            "text": "选择将显示哪些按钮于编辑器工具栏。请注意,某些按钮只会出现在编辑某一类型的条目时。拖放可改变顺序。"
        },
        "$:/language/ControlPanel/Toolbars/ViewToolbar/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Caption",
            "text": "查看工具栏"
        },
        "$:/language/ControlPanel/Toolbars/ViewToolbar/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Hint",
            "text": "选择将显示哪些按钮于条目的查看模式工具栏。拖放可改变顺序。"
        },
        "$:/language/ControlPanel/Tools/Download/Full/Caption": {
            "title": "$:/language/ControlPanel/Tools/Download/Full/Caption",
            "text": "下载完整副本"
        },
        "$:/core/zh-Hans/readme": {
            "title": "$:/core/zh-Hans/readme",
            "text": "此插件包含 TiddlyWiki 的核心组件,包括:\n\n* JavaScript 代码模块\n* 图标\n* 创建 TiddlyWiki 的用户介面所需的模板\n* 核心所使用的可当地语系化字串的英国英语 (''en-GB'') 翻译\n"
        },
        "$:/language/Date/Long/Day/0": {
            "title": "$:/language/Date/Long/Day/0",
            "text": "周日"
        },
        "$:/language/Date/Long/Day/1": {
            "title": "$:/language/Date/Long/Day/1",
            "text": "周一"
        },
        "$:/language/Date/Long/Day/2": {
            "title": "$:/language/Date/Long/Day/2",
            "text": "周二"
        },
        "$:/language/Date/Long/Day/3": {
            "title": "$:/language/Date/Long/Day/3",
            "text": "周三"
        },
        "$:/language/Date/Long/Day/4": {
            "title": "$:/language/Date/Long/Day/4",
            "text": "周四"
        },
        "$:/language/Date/Long/Day/5": {
            "title": "$:/language/Date/Long/Day/5",
            "text": "周五"
        },
        "$:/language/Date/Long/Day/6": {
            "title": "$:/language/Date/Long/Day/6",
            "text": "周六"
        },
        "$:/language/Date/Long/Month/1": {
            "title": "$:/language/Date/Long/Month/1",
            "text": "一月"
        },
        "$:/language/Date/Long/Month/2": {
            "title": "$:/language/Date/Long/Month/2",
            "text": "二月"
        },
        "$:/language/Date/Long/Month/3": {
            "title": "$:/language/Date/Long/Month/3",
            "text": "三月"
        },
        "$:/language/Date/Long/Month/4": {
            "title": "$:/language/Date/Long/Month/4",
            "text": "四月"
        },
        "$:/language/Date/Long/Month/5": {
            "title": "$:/language/Date/Long/Month/5",
            "text": "五月"
        },
        "$:/language/Date/Long/Month/6": {
            "title": "$:/language/Date/Long/Month/6",
            "text": "六月"
        },
        "$:/language/Date/Long/Month/7": {
            "title": "$:/language/Date/Long/Month/7",
            "text": "七月"
        },
        "$:/language/Date/Long/Month/8": {
            "title": "$:/language/Date/Long/Month/8",
            "text": "八月"
        },
        "$:/language/Date/Long/Month/9": {
            "title": "$:/language/Date/Long/Month/9",
            "text": "九月"
        },
        "$:/language/Date/Long/Month/10": {
            "title": "$:/language/Date/Long/Month/10",
            "text": "十月"
        },
        "$:/language/Date/Long/Month/11": {
            "title": "$:/language/Date/Long/Month/11",
            "text": "十一月"
        },
        "$:/language/Date/Long/Month/12": {
            "title": "$:/language/Date/Long/Month/12",
            "text": "十二月"
        },
        "$:/language/Date/Period/am": {
            "title": "$:/language/Date/Period/am",
            "text": "上午"
        },
        "$:/language/Date/Period/pm": {
            "title": "$:/language/Date/Period/pm",
            "text": "下午"
        },
        "$:/language/Date/Short/Day/0": {
            "title": "$:/language/Date/Short/Day/0",
            "text": "日"
        },
        "$:/language/Date/Short/Day/1": {
            "title": "$:/language/Date/Short/Day/1",
            "text": "一"
        },
        "$:/language/Date/Short/Day/2": {
            "title": "$:/language/Date/Short/Day/2",
            "text": "二"
        },
        "$:/language/Date/Short/Day/3": {
            "title": "$:/language/Date/Short/Day/3",
            "text": "三"
        },
        "$:/language/Date/Short/Day/4": {
            "title": "$:/language/Date/Short/Day/4",
            "text": "四"
        },
        "$:/language/Date/Short/Day/5": {
            "title": "$:/language/Date/Short/Day/5",
            "text": "五"
        },
        "$:/language/Date/Short/Day/6": {
            "title": "$:/language/Date/Short/Day/6",
            "text": "六"
        },
        "$:/language/Date/Short/Month/1": {
            "title": "$:/language/Date/Short/Month/1",
            "text": "01月"
        },
        "$:/language/Date/Short/Month/2": {
            "title": "$:/language/Date/Short/Month/2",
            "text": "02月"
        },
        "$:/language/Date/Short/Month/3": {
            "title": "$:/language/Date/Short/Month/3",
            "text": "03月"
        },
        "$:/language/Date/Short/Month/4": {
            "title": "$:/language/Date/Short/Month/4",
            "text": "04月"
        },
        "$:/language/Date/Short/Month/5": {
            "title": "$:/language/Date/Short/Month/5",
            "text": "05月"
        },
        "$:/language/Date/Short/Month/6": {
            "title": "$:/language/Date/Short/Month/6",
            "text": "06月"
        },
        "$:/language/Date/Short/Month/7": {
            "title": "$:/language/Date/Short/Month/7",
            "text": "07月"
        },
        "$:/language/Date/Short/Month/8": {
            "title": "$:/language/Date/Short/Month/8",
            "text": "08月"
        },
        "$:/language/Date/Short/Month/9": {
            "title": "$:/language/Date/Short/Month/9",
            "text": "09月"
        },
        "$:/language/Date/Short/Month/10": {
            "title": "$:/language/Date/Short/Month/10",
            "text": "10月"
        },
        "$:/language/Date/Short/Month/11": {
            "title": "$:/language/Date/Short/Month/11",
            "text": "11月"
        },
        "$:/language/Date/Short/Month/12": {
            "title": "$:/language/Date/Short/Month/12",
            "text": "12月"
        },
        "$:/language/RelativeDate/Future/Days": {
            "title": "$:/language/RelativeDate/Future/Days",
            "text": "<<period>> 天后"
        },
        "$:/language/RelativeDate/Future/Hours": {
            "title": "$:/language/RelativeDate/Future/Hours",
            "text": "<<period>> 小时后"
        },
        "$:/language/RelativeDate/Future/Minutes": {
            "title": "$:/language/RelativeDate/Future/Minutes",
            "text": "<<period>> 分钟后"
        },
        "$:/language/RelativeDate/Future/Months": {
            "title": "$:/language/RelativeDate/Future/Months",
            "text": "<<period>> 个月后"
        },
        "$:/language/RelativeDate/Future/Second": {
            "title": "$:/language/RelativeDate/Future/Second",
            "text": "1 秒后"
        },
        "$:/language/RelativeDate/Future/Seconds": {
            "title": "$:/language/RelativeDate/Future/Seconds",
            "text": "<<period>> 秒后"
        },
        "$:/language/RelativeDate/Future/Years": {
            "title": "$:/language/RelativeDate/Future/Years",
            "text": "<<period>> 年后"
        },
        "$:/language/RelativeDate/Past/Days": {
            "title": "$:/language/RelativeDate/Past/Days",
            "text": "<<period>> 天前"
        },
        "$:/language/RelativeDate/Past/Hours": {
            "title": "$:/language/RelativeDate/Past/Hours",
            "text": "<<period>> 小时前"
        },
        "$:/language/RelativeDate/Past/Minutes": {
            "title": "$:/language/RelativeDate/Past/Minutes",
            "text": "<<period>> 分钟前"
        },
        "$:/language/RelativeDate/Past/Months": {
            "title": "$:/language/RelativeDate/Past/Months",
            "text": "<<period>> 个月前"
        },
        "$:/language/RelativeDate/Past/Second": {
            "title": "$:/language/RelativeDate/Past/Second",
            "text": "1 秒前"
        },
        "$:/language/RelativeDate/Past/Seconds": {
            "title": "$:/language/RelativeDate/Past/Seconds",
            "text": "<<period>> 秒前"
        },
        "$:/language/RelativeDate/Past/Years": {
            "title": "$:/language/RelativeDate/Past/Years",
            "text": "<<period>> 年前"
        },
        "$:/language/Docs/ModuleTypes/allfilteroperator": {
            "title": "$:/language/Docs/ModuleTypes/allfilteroperator",
            "text": "''all'' 筛选器算子的子算子。"
        },
        "$:/language/Docs/ModuleTypes/animation": {
            "title": "$:/language/Docs/ModuleTypes/animation",
            "text": "动画模块包含可用于 RevealWidget 的动画。"
        },
        "$:/language/Docs/ModuleTypes/bitmapeditoroperation": {
            "title": "$:/language/Docs/ModuleTypes/bitmapeditoroperation",
            "text": "一个位图编辑器工具栏操作。"
        },
        "$:/language/Docs/ModuleTypes/command": {
            "title": "$:/language/Docs/ModuleTypes/command",
            "text": "可于 Node.js 执行的指令。"
        },
        "$:/language/Docs/ModuleTypes/config": {
            "title": "$:/language/Docs/ModuleTypes/config",
            "text": "加入 `$tw.config` 的数据。"
        },
        "$:/language/Docs/ModuleTypes/filteroperator": {
            "title": "$:/language/Docs/ModuleTypes/filteroperator",
            "text": "个别筛选器算子方法。"
        },
        "$:/language/Docs/ModuleTypes/global": {
            "title": "$:/language/Docs/ModuleTypes/global",
            "text": "加入 `$tw` 的全域数据。"
        },
        "$:/language/Docs/ModuleTypes/info": {
            "title": "$:/language/Docs/ModuleTypes/info",
            "text": "透过 [[$:/temp/info-plugin]] 伪插件,发布系统信息。"
        },
        "$:/language/Docs/ModuleTypes/isfilteroperator": {
            "title": "$:/language/Docs/ModuleTypes/isfilteroperator",
            "text": "''is'' 筛选器算子的运算符。"
        },
        "$:/language/Docs/ModuleTypes/library": {
            "title": "$:/language/Docs/ModuleTypes/library",
            "text": "一般用途的 JavaScript 模块的通用模块类型。"
        },
        "$:/language/Docs/ModuleTypes/macro": {
            "title": "$:/language/Docs/ModuleTypes/macro",
            "text": "JavaScript ''宏''定义。"
        },
        "$:/language/Docs/ModuleTypes/parser": {
            "title": "$:/language/Docs/ModuleTypes/parser",
            "text": "不同内容类型的解析器。"
        },
        "$:/language/Docs/ModuleTypes/saver": {
            "title": "$:/language/Docs/ModuleTypes/saver",
            "text": "于浏览器保存文件的不同的保存处理方法。"
        },
        "$:/language/Docs/ModuleTypes/startup": {
            "title": "$:/language/Docs/ModuleTypes/startup",
            "text": "启动时期的功能函数。"
        },
        "$:/language/Docs/ModuleTypes/storyview": {
            "title": "$:/language/Docs/ModuleTypes/storyview",
            "text": "查看模式用以自订 list 小部件的动画与行为。"
        },
        "$:/language/Docs/ModuleTypes/texteditoroperation": {
            "title": "$:/language/Docs/ModuleTypes/texteditoroperation",
            "text": "一个文本编辑器工具栏操作。"
        },
        "$:/language/Docs/ModuleTypes/tiddlerdeserializer": {
            "title": "$:/language/Docs/ModuleTypes/tiddlerdeserializer",
            "text": "转换不同内容类型至条目。"
        },
        "$:/language/Docs/ModuleTypes/tiddlerfield": {
            "title": "$:/language/Docs/ModuleTypes/tiddlerfield",
            "text": "定义个别条目栏位的行为。"
        },
        "$:/language/Docs/ModuleTypes/tiddlermethod": {
            "title": "$:/language/Docs/ModuleTypes/tiddlermethod",
            "text": "添加方法至 `$tw.Tiddler` 原型。"
        },
        "$:/language/Docs/ModuleTypes/upgrader": {
            "title": "$:/language/Docs/ModuleTypes/upgrader",
            "text": "于升级/导入过程中,套用升级处理至条目。"
        },
        "$:/language/Docs/ModuleTypes/utils": {
            "title": "$:/language/Docs/ModuleTypes/utils",
            "text": "添加方法至 `$tw.utils`。"
        },
        "$:/language/Docs/ModuleTypes/utils-node": {
            "title": "$:/language/Docs/ModuleTypes/utils-node",
            "text": "将特定于 Node.js 的方法添加到 '$tw.utils'。"
        },
        "$:/language/Docs/ModuleTypes/widget": {
            "title": "$:/language/Docs/ModuleTypes/widget",
            "text": "封装 DOM 渲染和刷新的小部件。"
        },
        "$:/language/Docs/ModuleTypes/wikimethod": {
            "title": "$:/language/Docs/ModuleTypes/wikimethod",
            "text": "添加方法至 `$tw.Wiki`。"
        },
        "$:/language/Docs/ModuleTypes/wikirule": {
            "title": "$:/language/Docs/ModuleTypes/wikirule",
            "text": "WikiText 解析器的个别的语法规则。"
        },
        "$:/language/Docs/PaletteColours/alert-background": {
            "title": "$:/language/Docs/PaletteColours/alert-background",
            "text": "警示背景"
        },
        "$:/language/Docs/PaletteColours/alert-border": {
            "title": "$:/language/Docs/PaletteColours/alert-border",
            "text": "警示边框"
        },
        "$:/language/Docs/PaletteColours/alert-highlight": {
            "title": "$:/language/Docs/PaletteColours/alert-highlight",
            "text": "警示高亮度"
        },
        "$:/language/Docs/PaletteColours/alert-muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/alert-muted-foreground",
            "text": "警示的低调前景"
        },
        "$:/language/Docs/PaletteColours/background": {
            "title": "$:/language/Docs/PaletteColours/background",
            "text": "一般背景"
        },
        "$:/language/Docs/PaletteColours/blockquote-bar": {
            "title": "$:/language/Docs/PaletteColours/blockquote-bar",
            "text": "引言条"
        },
        "$:/language/Docs/PaletteColours/button-background": {
            "title": "$:/language/Docs/PaletteColours/button-background",
            "text": "默认按钮背景"
        },
        "$:/language/Docs/PaletteColours/button-border": {
            "title": "$:/language/Docs/PaletteColours/button-border",
            "text": "默认按钮边框"
        },
        "$:/language/Docs/PaletteColours/button-foreground": {
            "title": "$:/language/Docs/PaletteColours/button-foreground",
            "text": "默认按钮前景"
        },
        "$:/language/Docs/PaletteColours/code-background": {
            "title": "$:/language/Docs/PaletteColours/code-background",
            "text": "代码背景"
        },
        "$:/language/Docs/PaletteColours/code-border": {
            "title": "$:/language/Docs/PaletteColours/code-border",
            "text": "代码边框"
        },
        "$:/language/Docs/PaletteColours/code-foreground": {
            "title": "$:/language/Docs/PaletteColours/code-foreground",
            "text": "代码前景"
        },
        "$:/language/Docs/PaletteColours/dirty-indicator": {
            "title": "$:/language/Docs/PaletteColours/dirty-indicator",
            "text": "未保存变更指示器"
        },
        "$:/language/Docs/PaletteColours/download-background": {
            "title": "$:/language/Docs/PaletteColours/download-background",
            "text": "下载按钮背景"
        },
        "$:/language/Docs/PaletteColours/download-foreground": {
            "title": "$:/language/Docs/PaletteColours/download-foreground",
            "text": "下载按钮前景"
        },
        "$:/language/Docs/PaletteColours/dragger-background": {
            "title": "$:/language/Docs/PaletteColours/dragger-background",
            "text": "拖动区背景"
        },
        "$:/language/Docs/PaletteColours/dragger-foreground": {
            "title": "$:/language/Docs/PaletteColours/dragger-foreground",
            "text": "拖动区前景"
        },
        "$:/language/Docs/PaletteColours/dropdown-background": {
            "title": "$:/language/Docs/PaletteColours/dropdown-background",
            "text": "下拉背景"
        },
        "$:/language/Docs/PaletteColours/dropdown-border": {
            "title": "$:/language/Docs/PaletteColours/dropdown-border",
            "text": "下拉边框"
        },
        "$:/language/Docs/PaletteColours/dropdown-tab-background-selected": {
            "title": "$:/language/Docs/PaletteColours/dropdown-tab-background-selected",
            "text": "选定的下拉页签背景"
        },
        "$:/language/Docs/PaletteColours/dropdown-tab-background": {
            "title": "$:/language/Docs/PaletteColours/dropdown-tab-background",
            "text": "下拉页签背景"
        },
        "$:/language/Docs/PaletteColours/dropzone-background": {
            "title": "$:/language/Docs/PaletteColours/dropzone-background",
            "text": "拖放背景"
        },
        "$:/language/Docs/PaletteColours/external-link-background-hover": {
            "title": "$:/language/Docs/PaletteColours/external-link-background-hover",
            "text": "悬停外部链结背景"
        },
        "$:/language/Docs/PaletteColours/external-link-background-visited": {
            "title": "$:/language/Docs/PaletteColours/external-link-background-visited",
            "text": "已造访过的外部链结背景"
        },
        "$:/language/Docs/PaletteColours/external-link-background": {
            "title": "$:/language/Docs/PaletteColours/external-link-background",
            "text": "外部链结背景"
        },
        "$:/language/Docs/PaletteColours/external-link-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/external-link-foreground-hover",
            "text": "悬停外部链结前景"
        },
        "$:/language/Docs/PaletteColours/external-link-foreground-visited": {
            "title": "$:/language/Docs/PaletteColours/external-link-foreground-visited",
            "text": "已造访过的外部链结前景"
        },
        "$:/language/Docs/PaletteColours/external-link-foreground": {
            "title": "$:/language/Docs/PaletteColours/external-link-foreground",
            "text": "外部链结前景"
        },
        "$:/language/Docs/PaletteColours/foreground": {
            "title": "$:/language/Docs/PaletteColours/foreground",
            "text": "一般前景"
        },
        "$:/language/Docs/PaletteColours/message-background": {
            "title": "$:/language/Docs/PaletteColours/message-background",
            "text": "信息框背景"
        },
        "$:/language/Docs/PaletteColours/message-border": {
            "title": "$:/language/Docs/PaletteColours/message-border",
            "text": "信息边框"
        },
        "$:/language/Docs/PaletteColours/message-foreground": {
            "title": "$:/language/Docs/PaletteColours/message-foreground",
            "text": "信息框前景"
        },
        "$:/language/Docs/PaletteColours/modal-backdrop": {
            "title": "$:/language/Docs/PaletteColours/modal-backdrop",
            "text": "模块背景幕"
        },
        "$:/language/Docs/PaletteColours/modal-background": {
            "title": "$:/language/Docs/PaletteColours/modal-background",
            "text": "模块背景"
        },
        "$:/language/Docs/PaletteColours/modal-border": {
            "title": "$:/language/Docs/PaletteColours/modal-border",
            "text": "模块边框"
        },
        "$:/language/Docs/PaletteColours/modal-footer-background": {
            "title": "$:/language/Docs/PaletteColours/modal-footer-background",
            "text": "模块页脚背景"
        },
        "$:/language/Docs/PaletteColours/modal-footer-border": {
            "title": "$:/language/Docs/PaletteColours/modal-footer-border",
            "text": "模块页脚边框"
        },
        "$:/language/Docs/PaletteColours/modal-header-border": {
            "title": "$:/language/Docs/PaletteColours/modal-header-border",
            "text": "模块标题边框"
        },
        "$:/language/Docs/PaletteColours/muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/muted-foreground",
            "text": "一般低调前景"
        },
        "$:/language/Docs/PaletteColours/notification-background": {
            "title": "$:/language/Docs/PaletteColours/notification-background",
            "text": "通知背景"
        },
        "$:/language/Docs/PaletteColours/notification-border": {
            "title": "$:/language/Docs/PaletteColours/notification-border",
            "text": "通知边框"
        },
        "$:/language/Docs/PaletteColours/page-background": {
            "title": "$:/language/Docs/PaletteColours/page-background",
            "text": "页面背景"
        },
        "$:/language/Docs/PaletteColours/pre-background": {
            "title": "$:/language/Docs/PaletteColours/pre-background",
            "text": "pre 背景"
        },
        "$:/language/Docs/PaletteColours/pre-border": {
            "title": "$:/language/Docs/PaletteColours/pre-border",
            "text": "pre 边框"
        },
        "$:/language/Docs/PaletteColours/primary": {
            "title": "$:/language/Docs/PaletteColours/primary",
            "text": "主颜色"
        },
        "$:/language/Docs/PaletteColours/sidebar-button-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-button-foreground",
            "text": "侧边栏按钮前景"
        },
        "$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover",
            "text": "悬停侧边栏控制项前景"
        },
        "$:/language/Docs/PaletteColours/sidebar-controls-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground",
            "text": "侧边栏控制项前景"
        },
        "$:/language/Docs/PaletteColours/sidebar-foreground-shadow": {
            "title": "$:/language/Docs/PaletteColours/sidebar-foreground-shadow",
            "text": "侧边栏前景阴影"
        },
        "$:/language/Docs/PaletteColours/sidebar-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-foreground",
            "text": "侧边栏前景"
        },
        "$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover",
            "text": "悬停侧边栏低调前景"
        },
        "$:/language/Docs/PaletteColours/sidebar-muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground",
            "text": "侧边栏低调前景"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-background-selected": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-background-selected",
            "text": "侧边栏选定页签背景"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-background": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-background",
            "text": "侧边栏页签背景"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-border-selected": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-border-selected",
            "text": "侧边栏选定页签边框"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-border": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-border",
            "text": "侧边栏页签边框"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-divider": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-divider",
            "text": "侧边栏页签分隔线"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected",
            "text": "侧边栏选定页签前景"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground",
            "text": "侧边栏页签前景"
        },
        "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover",
            "text": "侧边栏悬停条目链结前景"
        },
        "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground",
            "text": "侧边栏条目链结前景"
        },
        "$:/language/Docs/PaletteColours/site-title-foreground": {
            "title": "$:/language/Docs/PaletteColours/site-title-foreground",
            "text": "网站标题前景"
        },
        "$:/language/Docs/PaletteColours/static-alert-foreground": {
            "title": "$:/language/Docs/PaletteColours/static-alert-foreground",
            "text": "静态警示前景"
        },
        "$:/language/Docs/PaletteColours/tab-background-selected": {
            "title": "$:/language/Docs/PaletteColours/tab-background-selected",
            "text": "选定的页签背景"
        },
        "$:/language/Docs/PaletteColours/tab-background": {
            "title": "$:/language/Docs/PaletteColours/tab-background",
            "text": "页签背景"
        },
        "$:/language/Docs/PaletteColours/tab-border-selected": {
            "title": "$:/language/Docs/PaletteColours/tab-border-selected",
            "text": "选定的页签边框"
        },
        "$:/language/Docs/PaletteColours/tab-border": {
            "title": "$:/language/Docs/PaletteColours/tab-border",
            "text": "页签边框"
        },
        "$:/language/Docs/PaletteColours/tab-divider": {
            "title": "$:/language/Docs/PaletteColours/tab-divider",
            "text": "页签分隔线"
        },
        "$:/language/Docs/PaletteColours/tab-foreground-selected": {
            "title": "$:/language/Docs/PaletteColours/tab-foreground-selected",
            "text": "选定的页签前景"
        },
        "$:/language/Docs/PaletteColours/tab-foreground": {
            "title": "$:/language/Docs/PaletteColours/tab-foreground",
            "text": "页签前景"
        },
        "$:/language/Docs/PaletteColours/table-border": {
            "title": "$:/language/Docs/PaletteColours/table-border",
            "text": "表格边框"
        },
        "$:/language/Docs/PaletteColours/table-footer-background": {
            "title": "$:/language/Docs/PaletteColours/table-footer-background",
            "text": "表格页脚背景"
        },
        "$:/language/Docs/PaletteColours/table-header-background": {
            "title": "$:/language/Docs/PaletteColours/table-header-background",
            "text": "表格标题背景"
        },
        "$:/language/Docs/PaletteColours/tag-background": {
            "title": "$:/language/Docs/PaletteColours/tag-background",
            "text": "标签背景"
        },
        "$:/language/Docs/PaletteColours/tag-foreground": {
            "title": "$:/language/Docs/PaletteColours/tag-foreground",
            "text": "标签前景"
        },
        "$:/language/Docs/PaletteColours/tiddler-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-background",
            "text": "条目背景"
        },
        "$:/language/Docs/PaletteColours/tiddler-border": {
            "title": "$:/language/Docs/PaletteColours/tiddler-border",
            "text": "条目边框"
        },
        "$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover",
            "text": "悬停的条目控制项前景"
        },
        "$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected": {
            "title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected",
            "text": "选定的条目控制项前景"
        },
        "$:/language/Docs/PaletteColours/tiddler-controls-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground",
            "text": "条目控制项前景"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-background",
            "text": "条目编辑器背景"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-border-image": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-border-image",
            "text": "条目编辑器边框图片"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-border": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-border",
            "text": "条目编辑器边框"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-fields-even": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-even",
            "text": "条目编辑器中偶数栏位背景"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-fields-odd": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-odd",
            "text": "条目编辑器中奇数栏位背景"
        },
        "$:/language/Docs/PaletteColours/tiddler-info-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-info-background",
            "text": "条目信息面板背景"
        },
        "$:/language/Docs/PaletteColours/tiddler-info-border": {
            "title": "$:/language/Docs/PaletteColours/tiddler-info-border",
            "text": "条目信息面板边框"
        },
        "$:/language/Docs/PaletteColours/tiddler-info-tab-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-info-tab-background",
            "text": "条目信息面板页签背景"
        },
        "$:/language/Docs/PaletteColours/tiddler-link-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-link-background",
            "text": "条目链结背景"
        },
        "$:/language/Docs/PaletteColours/tiddler-link-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-link-foreground",
            "text": "条目链结前景"
        },
        "$:/language/Docs/PaletteColours/tiddler-subtitle-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-subtitle-foreground",
            "text": "条目副标题前景"
        },
        "$:/language/Docs/PaletteColours/tiddler-title-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-title-foreground",
            "text": "条目标题前景"
        },
        "$:/language/Docs/PaletteColours/toolbar-new-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-new-button",
            "text": "工具栏 '添加条目' 按钮前景"
        },
        "$:/language/Docs/PaletteColours/toolbar-options-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-options-button",
            "text": "工具栏 '选项' 按钮前景"
        },
        "$:/language/Docs/PaletteColours/toolbar-save-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-save-button",
            "text": "工具栏 '保存' 按钮前景"
        },
        "$:/language/Docs/PaletteColours/toolbar-info-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-info-button",
            "text": "工具栏 '资讯' 按钮前景"
        },
        "$:/language/Docs/PaletteColours/toolbar-edit-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-edit-button",
            "text": "工具栏 '编辑' 按钮前景"
        },
        "$:/language/Docs/PaletteColours/toolbar-close-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-close-button",
            "text": "工具栏 '关闭' 按钮前景"
        },
        "$:/language/Docs/PaletteColours/toolbar-delete-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-delete-button",
            "text": "工具栏 '删除' 按钮前景"
        },
        "$:/language/Docs/PaletteColours/toolbar-cancel-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-cancel-button",
            "text": "工具栏 '取消' 按钮前景"
        },
        "$:/language/Docs/PaletteColours/toolbar-done-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-done-button",
            "text": "工具栏 '完成  按钮前景"
        },
        "$:/language/Docs/PaletteColours/untagged-background": {
            "title": "$:/language/Docs/PaletteColours/untagged-background",
            "text": "未设标签的背景"
        },
        "$:/language/Docs/PaletteColours/very-muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/very-muted-foreground",
            "text": "非常低调前景"
        },
        "$:/language/EditTemplate/Body/External/Hint": {
            "title": "$:/language/EditTemplate/Body/External/Hint",
            "text": "这是保存于主要的 TiddlyWiki 文件之外的外部条目。你可以编辑其标签和栏位,但不能直接编辑内容本身"
        },
        "$:/language/EditTemplate/Body/Placeholder": {
            "title": "$:/language/EditTemplate/Body/Placeholder",
            "text": "输入此条目的内容"
        },
        "$:/language/EditTemplate/Body/Preview/Type/Output": {
            "title": "$:/language/EditTemplate/Body/Preview/Type/Output",
            "text": "输出"
        },
        "$:/language/EditTemplate/Field/Remove/Caption": {
            "title": "$:/language/EditTemplate/Field/Remove/Caption",
            "text": "删除栏位"
        },
        "$:/language/EditTemplate/Field/Remove/Hint": {
            "title": "$:/language/EditTemplate/Field/Remove/Hint",
            "text": "删除栏位"
        },
        "$:/language/EditTemplate/Fields/Add/Button": {
            "title": "$:/language/EditTemplate/Fields/Add/Button",
            "text": "添加"
        },
        "$:/language/EditTemplate/Fields/Add/Dropdown/System": {
            "title": "$:/language/EditTemplate/Fields/Add/Dropdown/System",
            "text": "系统栏位"
        },
        "$:/language/EditTemplate/Fields/Add/Dropdown/User": {
            "title": "$:/language/EditTemplate/Fields/Add/Dropdown/User",
            "text": "使用者栏位"
        },
        "$:/language/EditTemplate/Fields/Add/Name/Placeholder": {
            "title": "$:/language/EditTemplate/Fields/Add/Name/Placeholder",
            "text": "栏位名称"
        },
        "$:/language/EditTemplate/Fields/Add/Prompt": {
            "title": "$:/language/EditTemplate/Fields/Add/Prompt",
            "text": "添加栏位:"
        },
        "$:/language/EditTemplate/Fields/Add/Value/Placeholder": {
            "title": "$:/language/EditTemplate/Fields/Add/Value/Placeholder",
            "text": "栏位内容"
        },
        "$:/language/EditTemplate/Shadow/Warning": {
            "title": "$:/language/EditTemplate/Shadow/Warning",
            "text": "这是一个默认条目。您做的任何更改将会覆盖来自 <<pluginLink>> 插件的默认版本。"
        },
        "$:/language/EditTemplate/Shadow/OverriddenWarning": {
            "title": "$:/language/EditTemplate/Shadow/OverriddenWarning",
            "text": "这是一个修改过的默认条目。删除此条目可以还原为 <<pluginLink>> 插件中的默认版本。"
        },
        "$:/language/EditTemplate/Tags/Add/Button": {
            "title": "$:/language/EditTemplate/Tags/Add/Button",
            "text": "添加"
        },
        "$:/language/EditTemplate/Tags/Add/Placeholder": {
            "title": "$:/language/EditTemplate/Tags/Add/Placeholder",
            "text": "标签名称"
        },
        "$:/language/EditTemplate/Tags/Dropdown/Caption": {
            "title": "$:/language/EditTemplate/Tags/Dropdown/Caption",
            "text": "标签清单"
        },
        "$:/language/EditTemplate/Tags/Dropdown/Hint": {
            "title": "$:/language/EditTemplate/Tags/Dropdown/Hint",
            "text": "显示标签清单"
        },
        "$:/language/EditTemplate/Title/BadCharacterWarning": {
            "title": "$:/language/EditTemplate/Title/BadCharacterWarning",
            "text": "请注意,避免在条目名称中使用这些字符:<<bad-chars>>"
        },
        "$:/language/EditTemplate/Title/Exists/Prompt": {
            "title": "$:/language/EditTemplate/Title/Exists/Prompt",
            "text": "目标条目已经存在"
        },
        "$:/language/EditTemplate/Title/Relink/Prompt": {
            "title": "$:/language/EditTemplate/Title/Relink/Prompt",
            "text": "将在其他条目的 //tags// 和 //list// 栏位中的 ''<$text text=<<fromTitle>>/>'' 改为 ''<$text text=<<toTitle>>/>''"
        },
        "$:/language/EditTemplate/Type/Dropdown/Caption": {
            "title": "$:/language/EditTemplate/Type/Dropdown/Caption",
            "text": "内容类型清单"
        },
        "$:/language/EditTemplate/Type/Dropdown/Hint": {
            "title": "$:/language/EditTemplate/Type/Dropdown/Hint",
            "text": "显示内容类型清单"
        },
        "$:/language/EditTemplate/Type/Delete/Caption": {
            "title": "$:/language/EditTemplate/Type/Delete/Caption",
            "text": "删除内容类型"
        },
        "$:/language/EditTemplate/Type/Delete/Hint": {
            "title": "$:/language/EditTemplate/Type/Delete/Hint",
            "text": "删除内容类型"
        },
        "$:/language/EditTemplate/Type/Placeholder": {
            "title": "$:/language/EditTemplate/Type/Placeholder",
            "text": "内容类型"
        },
        "$:/language/EditTemplate/Type/Prompt": {
            "title": "$:/language/EditTemplate/Type/Prompt",
            "text": "类型:"
        },
        "$:/language/Exporters/StaticRiver": {
            "title": "$:/language/Exporters/StaticRiver",
            "text": "静态 HTML"
        },
        "$:/language/Exporters/JsonFile": {
            "title": "$:/language/Exporters/JsonFile",
            "text": "JSON 文件"
        },
        "$:/language/Exporters/CsvFile": {
            "title": "$:/language/Exporters/CsvFile",
            "text": "CSV 文件"
        },
        "$:/language/Exporters/TidFile": {
            "title": "$:/language/Exporters/TidFile",
            "text": "\".tid\" 文件"
        },
        "$:/language/Docs/Fields/_canonical_uri": {
            "title": "$:/language/Docs/Fields/_canonical_uri",
            "text": "外部图像条目的完整的 URI"
        },
        "$:/language/Docs/Fields/bag": {
            "title": "$:/language/Docs/Fields/bag",
            "text": "条目的来源集的名称"
        },
        "$:/language/Docs/Fields/caption": {
            "title": "$:/language/Docs/Fields/caption",
            "text": "显示于页签或按钮上的标题文字"
        },
        "$:/language/Docs/Fields/color": {
            "title": "$:/language/Docs/Fields/color",
            "text": "条目的 CSS 颜色值"
        },
        "$:/language/Docs/Fields/component": {
            "title": "$:/language/Docs/Fields/component",
            "text": "负责[[警示条目|AlertMechanism]]的组件名称"
        },
        "$:/language/Docs/Fields/created": {
            "title": "$:/language/Docs/Fields/created",
            "text": "条目的创建日期"
        },
        "$:/language/Docs/Fields/creator": {
            "title": "$:/language/Docs/Fields/creator",
            "text": "条目的创建者"
        },
        "$:/language/Docs/Fields/current-tiddler": {
            "title": "$:/language/Docs/Fields/current-tiddler",
            "text": "用于缓存[[浏览历史列表|HistoryMechanism]]的最上层条目"
        },
        "$:/language/Docs/Fields/dependents": {
            "title": "$:/language/Docs/Fields/dependents",
            "text": "插件的相依插件列表"
        },
        "$:/language/Docs/Fields/description": {
            "title": "$:/language/Docs/Fields/description",
            "text": "插件的说明、描述"
        },
        "$:/language/Docs/Fields/draft.of": {
            "title": "$:/language/Docs/Fields/draft.of",
            "text": "草稿条目,包含条目的标题、标签、栏位 ..."
        },
        "$:/language/Docs/Fields/draft.title": {
            "title": "$:/language/Docs/Fields/draft.title",
            "text": "草稿条目的标题"
        },
        "$:/language/Docs/Fields/footer": {
            "title": "$:/language/Docs/Fields/footer",
            "text": "wizard 的注脚"
        },
        "$:/language/Docs/Fields/hack-to-give-us-something-to-compare-against": {
            "title": "$:/language/Docs/Fields/hack-to-give-us-something-to-compare-against",
            "text": "于 [[$:/core/templates/static.content]] 使用的临时保存栏位"
        },
        "$:/language/Docs/Fields/icon": {
            "title": "$:/language/Docs/Fields/icon",
            "text": "条目的标题含有与条目关联的图标"
        },
        "$:/language/Docs/Fields/library": {
            "title": "$:/language/Docs/Fields/library",
            "text": "若设为 “yes”,表示条目应该被保存为一个 JavaScript 程序库"
        },
        "$:/language/Docs/Fields/list": {
            "title": "$:/language/Docs/Fields/list",
            "text": "条目的列表,指定一些条目的标题清单"
        },
        "$:/language/Docs/Fields/list-before": {
            "title": "$:/language/Docs/Fields/list-before",
            "text": "前条目名称将被添加到条目排序清单中的设置条目名称之前,或若此栏位存在但是空的,则在清单的起始位置"
        },
        "$:/language/Docs/Fields/list-after": {
            "title": "$:/language/Docs/Fields/list-after",
            "text": "当前条目名称将被添加到条目排序清单的设置条目名称之后"
        },
        "$:/language/Docs/Fields/modified": {
            "title": "$:/language/Docs/Fields/modified",
            "text": "条目的最近修改日期与时间"
        },
        "$:/language/Docs/Fields/modifier": {
            "title": "$:/language/Docs/Fields/modifier",
            "text": "条目的最近修改者"
        },
        "$:/language/Docs/Fields/name": {
            "title": "$:/language/Docs/Fields/name",
            "text": "具可读性的插件条目的名称"
        },
        "$:/language/Docs/Fields/plugin-priority": {
            "title": "$:/language/Docs/Fields/plugin-priority",
            "text": "插件条目的优先级数值"
        },
        "$:/language/Docs/Fields/plugin-type": {
            "title": "$:/language/Docs/Fields/plugin-type",
            "text": "插件条目的类型"
        },
        "$:/language/Docs/Fields/released": {
            "title": "$:/language/Docs/Fields/released",
            "text": "TiddlyWiki 的发布日期"
        },
        "$:/language/Docs/Fields/revision": {
            "title": "$:/language/Docs/Fields/revision",
            "text": "条目存放于服务器中的修订版本"
        },
        "$:/language/Docs/Fields/source": {
            "title": "$:/language/Docs/Fields/source",
            "text": "条目的网址"
        },
        "$:/language/Docs/Fields/subtitle": {
            "title": "$:/language/Docs/Fields/subtitle",
            "text": "一个 wizard 的副标题"
        },
        "$:/language/Docs/Fields/tags": {
            "title": "$:/language/Docs/Fields/tags",
            "text": "条目的标签清单"
        },
        "$:/language/Docs/Fields/text": {
            "title": "$:/language/Docs/Fields/text",
            "text": "条目的内文"
        },
        "$:/language/Docs/Fields/title": {
            "title": "$:/language/Docs/Fields/title",
            "text": "条目的唯一名称"
        },
        "$:/language/Docs/Fields/type": {
            "title": "$:/language/Docs/Fields/type",
            "text": "条目的内容类型"
        },
        "$:/language/Docs/Fields/version": {
            "title": "$:/language/Docs/Fields/version",
            "text": "插件的版本信息"
        },
        "$:/language/Filters/AllTiddlers": {
            "title": "$:/language/Filters/AllTiddlers",
            "text": "所有条目,不含系统条目"
        },
        "$:/language/Filters/RecentSystemTiddlers": {
            "title": "$:/language/Filters/RecentSystemTiddlers",
            "text": "最近修改的条目,包含系统条目"
        },
        "$:/language/Filters/RecentTiddlers": {
            "title": "$:/language/Filters/RecentTiddlers",
            "text": "最近修改的条目"
        },
        "$:/language/Filters/AllTags": {
            "title": "$:/language/Filters/AllTags",
            "text": "所有标签,不含系统标签"
        },
        "$:/language/Filters/Missing": {
            "title": "$:/language/Filters/Missing",
            "text": "缺失条目"
        },
        "$:/language/Filters/Drafts": {
            "title": "$:/language/Filters/Drafts",
            "text": "草稿条目"
        },
        "$:/language/Filters/Orphans": {
            "title": "$:/language/Filters/Orphans",
            "text": "孤立条目"
        },
        "$:/language/Filters/SystemTiddlers": {
            "title": "$:/language/Filters/SystemTiddlers",
            "text": "系统条目"
        },
        "$:/language/Filters/ShadowTiddlers": {
            "title": "$:/language/Filters/ShadowTiddlers",
            "text": "默认条目"
        },
        "$:/language/Filters/OverriddenShadowTiddlers": {
            "title": "$:/language/Filters/OverriddenShadowTiddlers",
            "text": "被覆写的默认条目"
        },
        "$:/language/Filters/SystemTags": {
            "title": "$:/language/Filters/SystemTags",
            "text": "系统标签"
        },
        "$:/language/Filters/StoryList": {
            "title": "$:/language/Filters/StoryList",
            "text": "故事河中的条目,不含 ~$:/AdvancedSearch"
        },
        "$:/language/Filters/TypedTiddlers": {
            "title": "$:/language/Filters/TypedTiddlers",
            "text": "非维基文字条目"
        },
        "GettingStarted": {
            "title": "GettingStarted",
            "text": "\\define lingo-base() $:/language/ControlPanel/Basics/\n欢迎使用 ~TiddlyWiki 及参与 ~TiddlyWiki 社群\n\n开始将重要资讯存放于 ~TiddlyWiki 之前,确认您可以可靠地保存变更是很重要的。详细资讯请参阅 http://tiddlywiki.com/#GettingStarted\n\n!! 设置此 ~TiddlyWiki\n\n<div class=\"tc-control-panel\">\n\n|<$link to=\"$:/SiteTitle\"><<lingo Title/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/SiteSubtitle\"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/DefaultTiddlers\"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n</div>\n\n请参阅[[控制台|$:/ControlPanel]]查看更多选项。"
        },
        "$:/language/Help/build": {
            "title": "$:/language/Help/build",
            "description": "自动执行已配置的命令",
            "text": "生成指定的生成目标为当前 wiki。若未指定任何生成目标,则生成所有可用的目标。\n\n```\n--build <target> [<target> ...]\n```\n\n生成目标在 wiki 文件夹的 `tiddlywiki.info` 文件中定义。\n"
        },
        "$:/language/Help/clearpassword": {
            "title": "$:/language/Help/clearpassword",
            "description": "清除用于后续加密的密码",
            "text": "清除用于后续加密的密码\n\n```\n--clearpassword\n```\n"
        },
        "$:/language/Help/default": {
            "title": "$:/language/Help/default",
            "text": "\\define commandTitle()\n$:/language/Help/$(command)$\n\\end\n```\n用法: tiddlywiki [<wikifolder>] [--<command> [<args>...]...]\n```\n\n可用的命令:\n\n<ul>\n<$list filter=\"[commands[]sort[title]]\" variable=\"command\">\n<li><$link to=<<commandTitle>>><$macrocall $name=\"command\" $type=\"text/plain\" $output=\"text/plain\"/></$link>: <$transclude tiddler=<<commandTitle>> field=\"description\"/></li>\n</$list>\n</ul>\n\n取得关于某个命令的详细帮助:\n\n```\ntiddlywiki --help <command>\n```\n"
        },
        "$:/language/Help/editions": {
            "title": "$:/language/Help/editions",
            "description": "列出可用的 TiddlyWiki 版本",
            "text": "列出可用版本的名称和描述。您可以用 `--init` 命令创建一个指定版本的新维基。\n\n```\n--editions\n```\n"
        },
        "$:/language/Help/fetch": {
            "title": "$:/language/Help/fetch",
            "description": "通过网址从维基撷取条目",
            "text": "通过 HTTP/HTTPS 撷取一个或多个文件,并导入匹配筛选器的条目,可选的转换传入的名称。\n\n```\n--fetch file <url> <import-filter> <transform-filter>\n--fetch files <url-filter> <import-filter> <transform-filter>\n```\n\n使用 \"file\" 选项为仅撷取单个文件,且第一个参数为要读取文件的网址。\n\n使用 \"files\" 选项为撷取多个文件,且第一个参数是一个产生要读取文件的网址清单的筛选器。例如,给定标签为 \"remote-server\" 的一组具有字段 \"url\" 的条目,筛选器 `[tag[remote-server]get[url]]` 将取回所有可用的网址。\n\n`<import-filter>` 参数指定一个筛选器,用于确定要导入哪些条目。如果未提供,则默认为 `[all[tiddlers]]`。\n\n`<transform-filter>` 参数指定一个可选的筛选器,用于转换导入条目的名称。例如,`[addprefix[$:/myimports/]]` 会将前缀 `$:/myimports/` 加至每个名称。\n\n于 `--fetch` 之前使用 `--verbose` 命令,将在导入期间输出进度信息。\n\n请注意,TiddlyWiki 不会撷取一个已经加载插件的旧版本。\n\n以下示例从 http://tiddlywiki.com 取回所有非系统条目,并将其保存到一个 JSON 文件:\n\n```\ntiddlywiki --verbose --fetch file \"http://tiddlywiki.com/\" \"[!is[system]]\" \"\" --rendertiddler \"$:/core/templates/exporters/JsonFile\" output.json text/plain \"\" exportFilter \"[!is[system]]\"\n```\n\n"
        },
        "$:/language/Help/help": {
            "title": "$:/language/Help/help",
            "description": "显示 TiddlyWiki 命令的说明",
            "text": "显示命令的帮助文本:\n\n```\n--help [<command>]\n```\n\n若省略命令名称,则显示可用命令的清单。\n"
        },
        "$:/language/Help/init": {
            "title": "$:/language/Help/init",
            "description": "初始化一个新的 wiki 文件夹",
            "text": "初始化一个空的 [[WikiFolder|WikiFolders]] 的指定版本的副本。\n\n```\n--init <edition> [<edition> ...]\n```\n\n例如:\n\n```\ntiddlywiki ./MyWikiFolder --init empty\n```\n\n注意:\n\n* 若有需要,将创建 wiki 文件夹目录\n* 其中 \"edition\" 默认为 ''empty''\n* 若 wiki 文件夹不是空的,则初始化命令将失败\n* 初始化命令会删除 'tiddlywiki.info' 文件内所有 'includeWikis' 的定义。\n* 当指定多个版本时,这些版本于初始化后,将覆写早期版本共用的所有文件 (故此最终的 `tiddlywiki.info` 文件将是从最近的版本复制而得)\n* `--editions` 传回所有可用版本的清单。\n"
        },
        "$:/language/Help/load": {
            "title": "$:/language/Help/load",
            "description": "从文件中加载条目",
            "text": "从 2.x.x TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` 或其他文件加载条目\n\n```\n--load <filepath>\n```\n\n从已加密的 TiddlyWiki 文件中加载条目,须使用 PasswordCommand 指定密码,例如:\n\n```\ntiddlywiki ./MyWiki --password pa55w0rd --load my_encrypted_wiki.html\n```\n\n请注意 TiddlyWiki 将不加载旧版本的已挂载的插件。\n"
        },
        "$:/language/Help/makelibrary": {
            "title": "$:/language/Help/makelibrary",
            "description": "构建升级处理所需的程式库插件",
            "text": "为升级处理构建 `$:/UpgradeLibrary` 条目。\n\n升级程式库被格式化为一个插件类型为 `library` 的一般插件条目。它包含 TiddlyWiki5 存储库中所有可用的插件、布景主题和语言包的副本。\n\n此命令仅供内部使用;它只是与使用者构建一个自订的升级程序相关。\n\n```\n--makelibrary <title>\n```\n\n标题参数默认为 `$:/UpgradeLibrary`。\n"
        },
        "$:/language/Help/notfound": {
            "title": "$:/language/Help/notfound",
            "text": "无此帮助项目"
        },
        "$:/language/Help/output": {
            "title": "$:/language/Help/output",
            "description": "设置后续命令的基准输出文件夹",
            "text": "设置后续命令的基准输出文件夹,默认为该版本文件夹的 `output` 子文件夹。\n\n```\n--output <pathname>\n```\n\n若指定的路径是相对路径,则它是被解析相对于当前的工作文件夹。例如:`--output .` 將輸出文件夹設置為當前工作文件夹。"
        },
        "$:/language/Help/password": {
            "title": "$:/language/Help/password",
            "description": "设置用以加密的密码",
            "text": "设置用以加密的密码\n\n```\n--password <password>\n```\n\n''请注意'':这不是用于提供 TiddlyWiki 具有密码保护功能。相反地,请看 [[ServerCommand]] 的密码选项说明。\n"
        },
        "$:/language/Help/rendertiddler": {
            "title": "$:/language/Help/rendertiddler",
            "description": "呈现个别条目为指定的内容类型",
            "text": "呈现个别条目为指定的[[内容类型|ContentType]],默认为 `text/html` 且保存为指定的文件名。\n\n还可以指定一个模板,在这种情况下,\"currentTiddler\" 变量设为正在呈现的条目 (第一个参数值) 与模板条目合并呈现。\n\n也能可选地指定附加变量的名称与其值。\n\n```\n--rendertiddler <title> <filename> [<type>] [<template>]\n```\n\n默认情况下,文件名被解析为相对于版本文件夹的 `output` 子文件夹。 `--output` 命令可以用于将输出指定到一个不同的文件夹。\n\n自动创建在文件名称的路径中任何缺少的文件夹。\n\n例如,以下命令通过使用核心模板 `$:/core/templates/exporters/JsonFile`,将所有匹配筛选器 `[tag[done]]` 的条目保存到名为 `output.json` 的 JSON 文件。\n\n```\n--rendertiddler \"$:/core/templates/exporters/JsonFile\" output.json text/plain \"\" exportFilter \"[tag[done]]\"\n```"
        },
        "$:/language/Help/rendertiddlers": {
            "title": "$:/language/Help/rendertiddlers",
            "description": "呈现符合筛选条件的条目为指定的内容类型",
            "text": "呈现符合筛选条的条目为指定的[[内容类型|ContentType]] (默认为 `text/html`) 与扩展名 (默认为 `.html`).\n\n```\n--rendertiddlers <filter> <template> <pathname> [<type>] [<extension>] [\"noclean\"]\n```\n\n例如:\n\n```\n--rendertiddlers [!is[system]] $:/core/templates/static.tiddler.html ./static text/plain\n```\n\n默认情况下,路径名被解析为相对于版本文件夹的 `output` 子文件夹。 `--output` 命令可以用于将输出指定到一个不同的文件。\n\n在目标文件夹中的任何文件都会被删除,除非指定 ''noclean'' 旗标。若缺少目标文件夹,则以递归方式创建。"
        },
        "$:/language/Help/savetiddler": {
            "title": "$:/language/Help/savetiddler",
            "description": "将条目的原始内容保存到一个文件",
            "text": "保存个别条目的原始文本或二进制格式到指定的文件名。\n\n```\n--savetiddler <title> <filename>\n```\n\n默认情况下,文件名被解析为相对于版本文件夹的 `output` 子文件夹。 `--output` 命令可以用于将输出指定到一个不同的文件。\n\n自动创建在文件名称的路径中任何缺少的文件夹。\n"
        },
        "$:/language/Help/savetiddlers": {
            "title": "$:/language/Help/savetiddlers",
            "description": "将一群条目的原始内容保存到一个文件夹",
            "text": "保存一群条目的原始文字或二进制格式到指定的文件夹。\n\n```\n--savetiddlers <filter> <pathname> [noclean]\n```\n\n默认情况下,路径名被解析为相对于版本文件夹的 `output` 子文件夹。 `--output` 命令可以用于将输出指定到一个不同的文件夹。\n\n保存指定的文件之前,会先清除输出目录的现有文件。可藉由指定 ''noclean'' 旗标,禁用该删除动作。\n\n自动创建在路径中任何缺少的文件夹。\n"
        },
        "$:/language/Help/server": {
            "title": "$:/language/Help/server",
            "description": "提供一个 HTTP 服务器介面到 TiddlyWiki",
            "text": "在服务器中内置 TiddlyWiki5 是非常简单。虽与 TiddlyWeb 兼容,但不支持许多健全互联网面向的使用方式所需的功能。\n\n提供呈现一个指定条目,也可将个别条目编码成 JSON,且支持基本的 HTTP 操作 `GET`、`PUT` 及 `DELETE`.\n\n```\n--server <port> <roottiddler> <rendertype> <servetype> <username> <password> <host> <pathprefix>\n```\n\n参数说明:\n\n* ''port'' - 服务的埠号 (默认为 \"8080\")\n* ''roottiddler'' - 服务的基本条目 (默认为 \"$:/core/save/all\")\n* ''rendertype'' - 呈现的基本条目内容类型 (默认为 \"text/plain\")\n* ''servetype'' - 服务的基本条目内容类型(默认为 \"text/html\")\n* ''username'' - 默认的编辑者署名\n* ''password'' - 可选的基本验证密码\n* ''host'' - 可选的主机名称, (默认为 \"127.0.0.1\" 或名为 \"localhost\")\n* ''pathprefix'' - 可选的路径前缀\n\n若指定密码参数,浏览器将提示使用者输入用户名与密码。注意,密码系以明码方式传递,因此并不适合一般正式用途。\n\n例如:\n\n```\n--server 8080 $:/core/save/all text/plain text/html MyUserName passw0rd\n```\n\n若您需要设置主机名称或路径前缀而不要求输入密码,则可以指定空字符串的使用者名和密码:\n\n```\n--server 8080 $:/core/save/all text/plain text/html \"\" \"\" 192.168.0.245\n```\n\n同时执行多个 TiddlyWiki 服务,须分别指定不同的埠号。\n"
        },
        "$:/language/Help/setfield": {
            "title": "$:/language/Help/setfield",
            "description": "准备用于外部条目",
            "text": "//请注意此命令是试验性的,且可能会更改或在最终定稿前被替换//\n\n设置一群条目的指定栏位到 wikifying 范本条目的结果,其中的  `currentTiddler` 变数设置为各该条目。\n\n```\n--setfield <filter> <fieldname> <templatetitle> <rendertype>\n```\n\n参数说明:\n\n* ''filter'' - 受影响的辨识条目的筛选条件\n* ''fieldname'' - 要修改的栏位(默认为 \"text\")\n* ''templatetitle'' - 该条目 wikify 到指定栏位。若为空白或丢失,则删除指定的栏位\n* ''rendertype'' - 要呈现的文本类型(默认为 \"text/plain\"; \"text/html\" 可以用于包含 HTML 标记))\n"
        },
        "$:/language/Help/unpackplugin": {
            "title": "$:/language/Help/unpackplugin",
            "description": "从插件解开附属的条目",
            "text": "提取插件的附属条目,将其建立为一般条目:\n\n```\n--unpackplugin <title>\n```\n"
        },
        "$:/language/Help/verbose": {
            "title": "$:/language/Help/verbose",
            "description": "触发详细的输出模式",
            "text": "触发显示详细的命令执行过程,可用于调试\n\n```\n--verbose\n```\n"
        },
        "$:/language/Help/version": {
            "title": "$:/language/Help/version",
            "description": "显示 TiddlyWiki 的版本编号",
            "text": "显示 TiddlyWiki 的版本编号。\n\n```\n--version\n```\n"
        },
        "$:/language/Import/Imported/Hint": {
            "title": "$:/language/Import/Imported/Hint",
            "text": "下列条目已被导入:"
        },
        "$:/language/Import/Listing/Cancel/Caption": {
            "title": "$:/language/Import/Listing/Cancel/Caption",
            "text": "取消"
        },
        "$:/language/Import/Listing/Hint": {
            "title": "$:/language/Import/Listing/Hint",
            "text": "这些条目已备妥导入:"
        },
        "$:/language/Import/Listing/Import/Caption": {
            "title": "$:/language/Import/Listing/Import/Caption",
            "text": "导入"
        },
        "$:/language/Import/Listing/Select/Caption": {
            "title": "$:/language/Import/Listing/Select/Caption",
            "text": "选择"
        },
        "$:/language/Import/Listing/Status/Caption": {
            "title": "$:/language/Import/Listing/Status/Caption",
            "text": "状态"
        },
        "$:/language/Import/Listing/Title/Caption": {
            "title": "$:/language/Import/Listing/Title/Caption",
            "text": "条目"
        },
        "$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible": {
            "title": "$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible",
            "text": "封锁的不兼容或过时插件"
        },
        "$:/language/Import/Upgrader/Plugins/Suppressed/Version": {
            "title": "$:/language/Import/Upgrader/Plugins/Suppressed/Version",
            "text": "封锁的插件 (由于传入的 <<incoming>> 较现有版本 <<existing>> 旧)"
        },
        "$:/language/Import/Upgrader/Plugins/Upgraded": {
            "title": "$:/language/Import/Upgrader/Plugins/Upgraded",
            "text": "升级插件,从 <<incoming>> 到 <<upgraded>>"
        },
        "$:/language/Import/Upgrader/State/Suppressed": {
            "title": "$:/language/Import/Upgrader/State/Suppressed",
            "text": "封锁的暂存状态条目"
        },
        "$:/language/Import/Upgrader/System/Suppressed": {
            "title": "$:/language/Import/Upgrader/System/Suppressed",
            "text": "封锁的系统条目"
        },
        "$:/language/Import/Upgrader/ThemeTweaks/Created": {
            "title": "$:/language/Import/Upgrader/ThemeTweaks/Created",
            "text": "从 <$text text=<<from>>/> 迁移布景主题"
        },
        "$:/language/AboveStory/ClassicPlugin/Warning": {
            "title": "$:/language/AboveStory/ClassicPlugin/Warning",
            "text": "您貌似要加载为 ~TiddlyWiki 经典版设计的插件。请注意,[[这些插件无法运行于 TiddlyWiki 5.x.x 版|http://tiddlywiki.com/#TiddlyWikiClassic]]。检测到 ~TiddlyWiki 经典版插件:"
        },
        "$:/language/BinaryWarning/Prompt": {
            "title": "$:/language/BinaryWarning/Prompt",
            "text": "此条目包含二进制数据"
        },
        "$:/language/ClassicWarning/Hint": {
            "title": "$:/language/ClassicWarning/Hint",
            "text": "此条目以经典版 TiddlyWiki 标记格式撰写,不完全兼容新版 TiddlyWiki 的格式,详细信息请参阅:http://tiddlywiki.com/static/Upgrading。"
        },
        "$:/language/ClassicWarning/Upgrade/Caption": {
            "title": "$:/language/ClassicWarning/Upgrade/Caption",
            "text": "升级"
        },
        "$:/language/CloseAll/Button": {
            "title": "$:/language/CloseAll/Button",
            "text": "全部关闭"
        },
        "$:/language/ColourPicker/Recent": {
            "title": "$:/language/ColourPicker/Recent",
            "text": "最近︰"
        },
        "$:/language/ConfirmCancelTiddler": {
            "title": "$:/language/ConfirmCancelTiddler",
            "text": "您确定要放弃对条目 \"<$text text=<<title>>/>\" 的更改?"
        },
        "$:/language/ConfirmDeleteTiddler": {
            "title": "$:/language/ConfirmDeleteTiddler",
            "text": "您确定要删除条目 \"<$text text=<<title>>/>\"?"
        },
        "$:/language/ConfirmOverwriteTiddler": {
            "title": "$:/language/ConfirmOverwriteTiddler",
            "text": "您确定要覆写条目 \"<$text text=<<title>>/>\"?"
        },
        "$:/language/ConfirmEditShadowTiddler": {
            "title": "$:/language/ConfirmEditShadowTiddler",
            "text": "您即将要编辑默认条目,任何更改将会覆盖默认的系统,使未来的升级不寻常。您确定要编辑 \"<$text text=<<title>>/>\"?"
        },
        "$:/language/Count": {
            "title": "$:/language/Count",
            "text": "计数"
        },
        "$:/language/DefaultNewTiddlerTitle": {
            "title": "$:/language/DefaultNewTiddlerTitle",
            "text": "新条目"
        },
        "$:/language/DropMessage": {
            "title": "$:/language/DropMessage",
            "text": "拖放到此处 (或按 ESC 键取消)"
        },
        "$:/language/Encryption/Cancel": {
            "title": "$:/language/Encryption/Cancel",
            "text": "取消"
        },
        "$:/language/Encryption/ConfirmClearPassword": {
            "title": "$:/language/Encryption/ConfirmClearPassword",
            "text": "您要清除密码吗?当保存此维基时,这将删除已套用的加密"
        },
        "$:/language/Encryption/Username": {
            "title": "$:/language/Encryption/Username",
            "text": "用户名称"
        },
        "$:/language/Encryption/Password": {
            "title": "$:/language/Encryption/Password",
            "text": "密码"
        },
        "$:/language/Encryption/PromptSetPassword": {
            "title": "$:/language/Encryption/PromptSetPassword",
            "text": "为此 TiddlyWiki 设置一个新密码"
        },
        "$:/language/Encryption/RepeatPassword": {
            "title": "$:/language/Encryption/RepeatPassword",
            "text": "重复输入密码"
        },
        "$:/language/Encryption/PasswordNoMatch": {
            "title": "$:/language/Encryption/PasswordNoMatch",
            "text": "密码不匹配"
        },
        "$:/language/Encryption/SetPassword": {
            "title": "$:/language/Encryption/SetPassword",
            "text": "设定密码"
        },
        "$:/language/Error/Caption": {
            "title": "$:/language/Error/Caption",
            "text": "错误"
        },
        "$:/language/Error/EditConflict": {
            "title": "$:/language/Error/EditConflict",
            "text": "服务器上的文件已更改"
        },
        "$:/language/Error/Filter": {
            "title": "$:/language/Error/Filter",
            "text": "筛选器错误"
        },
        "$:/language/Error/FilterSyntax": {
            "title": "$:/language/Error/FilterSyntax",
            "text": "筛选器运算式中的语法错误"
        },
        "$:/language/Error/IsFilterOperator": {
            "title": "$:/language/Error/IsFilterOperator",
            "text": "筛选器错误︰'is' 筛选器运算符的未知操作数"
        },
        "$:/language/Error/LoadingPluginLibrary": {
            "title": "$:/language/Error/LoadingPluginLibrary",
            "text": "加载插件程式库时,发生错误"
        },
        "$:/language/Error/RecursiveTransclusion": {
            "title": "$:/language/Error/RecursiveTransclusion",
            "text": "于 transclude 小部件中的递回嵌入错误"
        },
        "$:/language/Error/RetrievingSkinny": {
            "title": "$:/language/Error/RetrievingSkinny",
            "text": "简要条目清单撷取错误"
        },
        "$:/language/Error/SavingToTWEdit": {
            "title": "$:/language/Error/SavingToTWEdit",
            "text": "保存到 TWEdit 时,发生错误"
        },
        "$:/language/Error/WhileSaving": {
            "title": "$:/language/Error/WhileSaving",
            "text": "保存时,发生错误"
        },
        "$:/language/Error/XMLHttpRequest": {
            "title": "$:/language/Error/XMLHttpRequest",
            "text": "XMLHttpRequest 错误代码"
        },
        "$:/language/InternalJavaScriptError/Title": {
            "title": "$:/language/InternalJavaScriptError/Title",
            "text": "内部的 JavaScript 错误"
        },
        "$:/language/InternalJavaScriptError/Hint": {
            "title": "$:/language/InternalJavaScriptError/Hint",
            "text": "喔,真是令人尴尬。建议刷新您的浏览器,重新启动 TiddlyWiki"
        },
        "$:/language/InvalidFieldName": {
            "title": "$:/language/InvalidFieldName",
            "text": "栏位名称 \"<$text text=<<fieldName>>/>\" 包含无效字符,栏位名称只能包含小写字母、数字、底线 (`_`)、 连字号 (`-`) 和小数点 (`.`)"
        },
        "$:/language/LazyLoadingWarning": {
            "title": "$:/language/LazyLoadingWarning",
            "text": "<p>正在从 ''<$text text={{!!_canonical_uri}}/>'' 加载外部条目 ...</p><p>如果此信息未消失,可能您使用的浏览器不支援此配置的外部条目。请参阅 http://tiddlywiki.com/#ExternalText</p>"
        },
        "$:/language/LoginToTiddlySpace": {
            "title": "$:/language/LoginToTiddlySpace",
            "text": "登录 TiddlySpace"
        },
        "$:/language/Manager/Controls/FilterByTag/None": {
            "title": "$:/language/Manager/Controls/FilterByTag/None",
            "text": "(无)"
        },
        "$:/language/Manager/Controls/FilterByTag/Prompt": {
            "title": "$:/language/Manager/Controls/FilterByTag/Prompt",
            "text": "依标签筛选︰"
        },
        "$:/language/Manager/Controls/Order/Prompt": {
            "title": "$:/language/Manager/Controls/Order/Prompt",
            "text": "反向顺序"
        },
        "$:/language/Manager/Controls/Search/Placeholder": {
            "title": "$:/language/Manager/Controls/Search/Placeholder",
            "text": "搜寻"
        },
        "$:/language/Manager/Controls/Search/Prompt": {
            "title": "$:/language/Manager/Controls/Search/Prompt",
            "text": "搜寻︰"
        },
        "$:/language/Manager/Controls/Show/Option/Tags": {
            "title": "$:/language/Manager/Controls/Show/Option/Tags",
            "text": "标签"
        },
        "$:/language/Manager/Controls/Show/Option/Tiddlers": {
            "title": "$:/language/Manager/Controls/Show/Option/Tiddlers",
            "text": "条目"
        },
        "$:/language/Manager/Controls/Show/Prompt": {
            "title": "$:/language/Manager/Controls/Show/Prompt",
            "text": "显示︰"
        },
        "$:/language/Manager/Controls/Sort/Prompt": {
            "title": "$:/language/Manager/Controls/Sort/Prompt",
            "text": "排序︰"
        },
        "$:/language/Manager/Item/Colour": {
            "title": "$:/language/Manager/Item/Colour",
            "text": "颜色"
        },
        "$:/language/Manager/Item/Fields": {
            "title": "$:/language/Manager/Item/Fields",
            "text": "栏位"
        },
        "$:/language/Manager/Item/Icon/None": {
            "title": "$:/language/Manager/Item/Icon/None",
            "text": "(无)"
        },
        "$:/language/Manager/Item/Icon": {
            "title": "$:/language/Manager/Item/Icon",
            "text": "图标"
        },
        "$:/language/Manager/Item/RawText": {
            "title": "$:/language/Manager/Item/RawText",
            "text": "原始文字"
        },
        "$:/language/Manager/Item/Tags": {
            "title": "$:/language/Manager/Item/Tags",
            "text": "标签"
        },
        "$:/language/Manager/Item/Tools": {
            "title": "$:/language/Manager/Item/Tools",
            "text": "工具"
        },
        "$:/language/Manager/Item/WikifiedText": {
            "title": "$:/language/Manager/Item/WikifiedText",
            "text": "Wikified 文字"
        },
        "$:/language/MissingTiddler/Hint": {
            "title": "$:/language/MissingTiddler/Hint",
            "text": "佚失条目 \"<$text text=<<currentTiddler>>/>\" - 点击 {{$:/core/images/edit-button}} 可创建此条目"
        },
        "$:/language/No": {
            "title": "$:/language/No",
            "text": "否"
        },
        "$:/language/OfficialPluginLibrary": {
            "title": "$:/language/OfficialPluginLibrary",
            "text": "~TiddlyWiki 官方插件程式库"
        },
        "$:/language/OfficialPluginLibrary/Hint": {
            "title": "$:/language/OfficialPluginLibrary/Hint",
            "text": "此为在 tiddlywiki.com 的 ~TiddlyWiki 官方插件程式库。由核心团队维护的插件、主题和语言包。"
        },
        "$:/language/PluginReloadWarning": {
            "title": "$:/language/PluginReloadWarning",
            "text": "请保存 {{$:/core/ui/Buttons/save-wiki}} 并刷新页面 {{$:/core/ui/Buttons/refresh}} 允许更改插件才能生效"
        },
        "$:/language/RecentChanges/DateFormat": {
            "title": "$:/language/RecentChanges/DateFormat",
            "text": "YYYY年0MM月0DD日"
        },
        "$:/language/SystemTiddler/Tooltip": {
            "title": "$:/language/SystemTiddler/Tooltip",
            "text": "此为系统条目"
        },
        "$:/language/SystemTiddlers/Include/Prompt": {
            "title": "$:/language/SystemTiddlers/Include/Prompt",
            "text": "包括系统条目"
        },
        "$:/language/TagManager/Colour/Heading": {
            "title": "$:/language/TagManager/Colour/Heading",
            "text": "颜色"
        },
        "$:/language/TagManager/Count/Heading": {
            "title": "$:/language/TagManager/Count/Heading",
            "text": "计数"
        },
        "$:/language/TagManager/Icon/Heading": {
            "title": "$:/language/TagManager/Icon/Heading",
            "text": "图标"
        },
        "$:/language/TagManager/Info/Heading": {
            "title": "$:/language/TagManager/Info/Heading",
            "text": "信息"
        },
        "$:/language/TagManager/Tag/Heading": {
            "title": "$:/language/TagManager/Tag/Heading",
            "text": "标签"
        },
        "$:/language/Tiddler/DateFormat": {
            "title": "$:/language/Tiddler/DateFormat",
            "text": "YYYY年0MM月0DD日 0hh:0mm"
        },
        "$:/language/UnsavedChangesWarning": {
            "title": "$:/language/UnsavedChangesWarning",
            "text": "在此 TiddlyWiki 您有尚未保存的变更"
        },
        "$:/language/Yes": {
            "title": "$:/language/Yes",
            "text": "是"
        },
        "$:/language/Modals/Download": {
            "title": "$:/language/Modals/Download",
            "type": "text/vnd.tiddlywiki",
            "subtitle": "Download changes",
            "footer": "<$button message=\"tm-close-tiddler\">关闭</$button>",
            "help": "http://tiddlywiki.com/",
            "text": "您的浏览器只支援手动保存。\n\n要保存更动的维基,右键点击下方的下载链结,选择\"下载文件\"或\"保存文件\",然后选择文件夹或文件名。\n\n//您可以藉由按一下 Ctrl 键(Windows)或 options/ alt 键(Mac OS X)中的链接,稍微加速操作。您不会被提示文件夹或文件名,您的浏览器可能无法辨认它的文件名 -- 在做其他任何事之前,您可能需要重新命名扩展名为 `.html` 的文件。//\n\n在智能型手机上,不允许下载文件,但您可以标记链结,然后从一台可以正常保存维基的台式机的维基同步你的书签。"
        },
        "$:/language/Modals/SaveInstructions": {
            "title": "$:/language/Modals/SaveInstructions",
            "type": "text/vnd.tiddlywiki",
            "subtitle": "Save your work",
            "footer": "<$button message=\"tm-close-tiddler\">关闭</$button>",
            "help": "http://tiddlywiki.com/static/SavingChanges.html",
            "text": "您对此 wiki 的变更需被保存为 ~TiddlyWiki HTML 文件。\n\n!!! 桌面版浏览器\n\n# 从''文件''菜单点选 ''另存为''\n# 选定文件名及保存位置\n#* 某些浏览器依然需要明确指定文件格式为 ''Webpage, HTML only'' 或类似的。\n# 关闭此页签\n\n!!! 智能手机版浏览器\n\n# 为此页建立书签\n#* 若您已设置 iCloud 或 Google 同步,该书签将自动与之前开启及保存于您电脑的书签同步。\n# 关闭此页签\n\n//若您再次于 Mobile Safari 开启该书签,将会再看到此信息。若要继续使用该文件,只需点击下列 ''关闭'' 按钮//\n"
        },
        "$:/config/NewJournal/Title": {
            "title": "$:/config/NewJournal/Title",
            "text": "YYYY年0MM月0DD日"
        },
        "$:/config/NewJournal/Text": {
            "title": "$:/config/NewJournal/Text",
            "text": ""
        },
        "$:/config/NewJournal/Tags": {
            "title": "$:/config/NewJournal/Tags",
            "text": "日志"
        },
        "$:/language/Notifications/Save/Done": {
            "title": "$:/language/Notifications/Save/Done",
            "text": "已保存 wiki"
        },
        "$:/language/Notifications/Save/Starting": {
            "title": "$:/language/Notifications/Save/Starting",
            "text": "开始保存 wiki"
        },
        "$:/language/Search/DefaultResults/Caption": {
            "title": "$:/language/Search/DefaultResults/Caption",
            "text": "列表"
        },
        "$:/language/Search/Filter/Caption": {
            "title": "$:/language/Search/Filter/Caption",
            "text": "筛选"
        },
        "$:/language/Search/Filter/Hint": {
            "title": "$:/language/Search/Filter/Hint",
            "text": "以[[筛选表达式|http://tiddlywiki.com/static/Filters.html]]查找"
        },
        "$:/language/Search/Filter/Matches": {
            "title": "$:/language/Search/Filter/Matches",
            "text": "//<small><<resultCount>> 个条目符合条件</small>//"
        },
        "$:/language/Search/Matches": {
            "title": "$:/language/Search/Matches",
            "text": "//<small><<resultCount>> 个条目符合条件</small>//"
        },
        "$:/language/Search/Matches/All": {
            "title": "$:/language/Search/Matches/All",
            "text": "所有匹配:"
        },
        "$:/language/Search/Matches/Title": {
            "title": "$:/language/Search/Matches/Title",
            "text": "条目名称匹配:"
        },
        "$:/language/Search/Search": {
            "title": "$:/language/Search/Search",
            "text": "查找"
        },
        "$:/language/Search/Search/TooShort": {
            "title": "$:/language/Search/Search/TooShort",
            "text": "查找文本太短"
        },
        "$:/language/Search/Shadows/Caption": {
            "title": "$:/language/Search/Shadows/Caption",
            "text": "默认"
        },
        "$:/language/Search/Shadows/Hint": {
            "title": "$:/language/Search/Shadows/Hint",
            "text": "查找默认条目"
        },
        "$:/language/Search/Shadows/Matches": {
            "title": "$:/language/Search/Shadows/Matches",
            "text": "//<small><<resultCount>> 个条目符合条件</small>//"
        },
        "$:/language/Search/Standard/Caption": {
            "title": "$:/language/Search/Standard/Caption",
            "text": "标准"
        },
        "$:/language/Search/Standard/Hint": {
            "title": "$:/language/Search/Standard/Hint",
            "text": "查找一般条目"
        },
        "$:/language/Search/Standard/Matches": {
            "title": "$:/language/Search/Standard/Matches",
            "text": "//<small><<resultCount>> 个条目符合条件</small>//"
        },
        "$:/language/Search/System/Caption": {
            "title": "$:/language/Search/System/Caption",
            "text": "系统"
        },
        "$:/language/Search/System/Hint": {
            "title": "$:/language/Search/System/Hint",
            "text": "查找系统条目"
        },
        "$:/language/Search/System/Matches": {
            "title": "$:/language/Search/System/Matches",
            "text": "//<small><<resultCount>> 个条目符合条件</small>//"
        },
        "$:/language/SideBar/All/Caption": {
            "title": "$:/language/SideBar/All/Caption",
            "text": "全部"
        },
        "$:/language/SideBar/Contents/Caption": {
            "title": "$:/language/SideBar/Contents/Caption",
            "text": "目录"
        },
        "$:/language/SideBar/Drafts/Caption": {
            "title": "$:/language/SideBar/Drafts/Caption",
            "text": "草稿"
        },
        "$:/language/SideBar/Missing/Caption": {
            "title": "$:/language/SideBar/Missing/Caption",
            "text": "缺失"
        },
        "$:/language/SideBar/More/Caption": {
            "title": "$:/language/SideBar/More/Caption",
            "text": "更多"
        },
        "$:/language/SideBar/Open/Caption": {
            "title": "$:/language/SideBar/Open/Caption",
            "text": "开启"
        },
        "$:/language/SideBar/Orphans/Caption": {
            "title": "$:/language/SideBar/Orphans/Caption",
            "text": "孤立"
        },
        "$:/language/SideBar/Recent/Caption": {
            "title": "$:/language/SideBar/Recent/Caption",
            "text": "最近"
        },
        "$:/language/SideBar/Shadows/Caption": {
            "title": "$:/language/SideBar/Shadows/Caption",
            "text": "默认"
        },
        "$:/language/SideBar/System/Caption": {
            "title": "$:/language/SideBar/System/Caption",
            "text": "系统"
        },
        "$:/language/SideBar/Tags/Caption": {
            "title": "$:/language/SideBar/Tags/Caption",
            "text": "标签"
        },
        "$:/language/SideBar/Tags/Untagged/Caption": {
            "title": "$:/language/SideBar/Tags/Untagged/Caption",
            "text": "未设标签"
        },
        "$:/language/SideBar/Tools/Caption": {
            "title": "$:/language/SideBar/Tools/Caption",
            "text": "工具"
        },
        "$:/language/SideBar/Types/Caption": {
            "title": "$:/language/SideBar/Types/Caption",
            "text": "类型"
        },
        "$:/SiteSubtitle": {
            "title": "$:/SiteSubtitle",
            "text": "一个非线性的网页式笔记"
        },
        "$:/SiteTitle": {
            "title": "$:/SiteTitle",
            "text": "我的 ~TiddlyWiki"
        },
        "$:/language/Snippets/ListByTag": {
            "title": "$:/language/Snippets/ListByTag",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "依标签筛选的条目列表",
            "text": "<<list-links \"[tag[task]sort[title]]\">>\n"
        },
        "$:/language/Snippets/MacroDefinition": {
            "title": "$:/language/Snippets/MacroDefinition",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "宏的定义",
            "text": "\\define macroName(param1:\"默认值\",param2)\n宏的内容\n\\end\n"
        },
        "$:/language/Snippets/Table4x3": {
            "title": "$:/language/Snippets/Table4x3",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "4 x 3 的表格",
            "text": "|! | !一 | !二 | !三 | !四 |\n|! 1| | | | |\n|! 2| | | | |\n|! 3 | | | | |\n"
        },
        "$:/language/Snippets/TableOfContents": {
            "title": "$:/language/Snippets/TableOfContents",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "目录",
            "text": "<div class=\"tc-table-of-contents\">\n\n<<toc-selective-expandable 'TableOfContents'>>\n\n</div>"
        },
        "$:/language/ThemeTweaks/ThemeTweaks": {
            "title": "$:/language/ThemeTweaks/ThemeTweaks",
            "text": "主题调整"
        },
        "$:/language/ThemeTweaks/ThemeTweaks/Hint": {
            "title": "$:/language/ThemeTweaks/ThemeTweaks/Hint",
            "text": "您可以调整 ''Vanilla'' 布景主题的某些样貌。"
        },
        "$:/language/ThemeTweaks/Options": {
            "title": "$:/language/ThemeTweaks/Options",
            "text": "选项"
        },
        "$:/language/ThemeTweaks/Options/SidebarLayout": {
            "title": "$:/language/ThemeTweaks/Options/SidebarLayout",
            "text": "侧边栏布局"
        },
        "$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid": {
            "title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid",
            "text": "固定故事,浮动侧边栏"
        },
        "$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed": {
            "title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed",
            "text": "浮动故事,固定侧边栏"
        },
        "$:/language/ThemeTweaks/Options/StickyTitles": {
            "title": "$:/language/ThemeTweaks/Options/StickyTitles",
            "text": "置顶标题"
        },
        "$:/language/ThemeTweaks/Options/StickyTitles/Hint": {
            "title": "$:/language/ThemeTweaks/Options/StickyTitles/Hint",
            "text": "导致条目名称\"黏着\"于浏览器窗口的顶部。<br>注意︰此功能无法运作于 Chrome,且于 Firefox 中会导致一些布局问题"
        },
        "$:/language/ThemeTweaks/Options/CodeWrapping": {
            "title": "$:/language/ThemeTweaks/Options/CodeWrapping",
            "text": "在代码区块中折行"
        },
        "$:/language/ThemeTweaks/Settings": {
            "title": "$:/language/ThemeTweaks/Settings",
            "text": "设置"
        },
        "$:/language/ThemeTweaks/Settings/FontFamily": {
            "title": "$:/language/ThemeTweaks/Settings/FontFamily",
            "text": "字型"
        },
        "$:/language/ThemeTweaks/Settings/CodeFontFamily": {
            "title": "$:/language/ThemeTweaks/Settings/CodeFontFamily",
            "text": "代码字型"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImage": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImage",
            "text": "页面背景图像"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment",
            "text": "页面背景图像附属"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll",
            "text": "随条目卷动"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed",
            "text": "固定于窗口"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize",
            "text": "页面背景图像大小"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto",
            "text": "自动"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover",
            "text": "覆盖"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain",
            "text": "包含"
        },
        "$:/language/ThemeTweaks/Metrics": {
            "title": "$:/language/ThemeTweaks/Metrics",
            "text": "大小"
        },
        "$:/language/ThemeTweaks/Metrics/FontSize": {
            "title": "$:/language/ThemeTweaks/Metrics/FontSize",
            "text": "字体大小"
        },
        "$:/language/ThemeTweaks/Metrics/LineHeight": {
            "title": "$:/language/ThemeTweaks/Metrics/LineHeight",
            "text": "行高"
        },
        "$:/language/ThemeTweaks/Metrics/BodyFontSize": {
            "title": "$:/language/ThemeTweaks/Metrics/BodyFontSize",
            "text": "条目本文的字体大小"
        },
        "$:/language/ThemeTweaks/Metrics/BodyLineHeight": {
            "title": "$:/language/ThemeTweaks/Metrics/BodyLineHeight",
            "text": "条目本文的行高"
        },
        "$:/language/ThemeTweaks/Metrics/StoryLeft": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryLeft",
            "text": "故事左侧位置"
        },
        "$:/language/ThemeTweaks/Metrics/StoryLeft/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryLeft/Hint",
            "text": "故事河(条目区)的左边缘与页面左端的间距"
        },
        "$:/language/ThemeTweaks/Metrics/StoryTop": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryTop",
            "text": "故事顶端位置"
        },
        "$:/language/ThemeTweaks/Metrics/StoryTop/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryTop/Hint",
            "text": "故事河(条目区)的上边缘与页面顶端的间距"
        },
        "$:/language/ThemeTweaks/Metrics/StoryRight": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryRight",
            "text": "故事右侧位置"
        },
        "$:/language/ThemeTweaks/Metrics/StoryRight/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryRight/Hint",
            "text": "侧边栏的左边缘与页面左端的间距"
        },
        "$:/language/ThemeTweaks/Metrics/StoryWidth": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryWidth",
            "text": "故事的宽度"
        },
        "$:/language/ThemeTweaks/Metrics/StoryWidth/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryWidth/Hint",
            "text": "故事河的整体宽度"
        },
        "$:/language/ThemeTweaks/Metrics/TiddlerWidth": {
            "title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth",
            "text": "条目宽度"
        },
        "$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint",
            "text": "在故事河内"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint",
            "text": "侧边栏中断点"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint",
            "text": "故事河和侧边栏会并排显示的最小页面宽度"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarWidth": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarWidth",
            "text": "侧边栏宽度"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint",
            "text": "在浮动-固定布局中,侧边栏的宽度"
        },
        "$:/language/TiddlerInfo/Advanced/Caption": {
            "title": "$:/language/TiddlerInfo/Advanced/Caption",
            "text": "高级"
        },
        "$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint",
            "text": "无信息"
        },
        "$:/language/TiddlerInfo/Advanced/PluginInfo/Heading": {
            "title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Heading",
            "text": "插件明细"
        },
        "$:/language/TiddlerInfo/Advanced/PluginInfo/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Hint",
            "text": "此插件包含以下预设条目:"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading",
            "text": "默认条目状态"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint",
            "text": "<$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> 不是一个默认条目"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint",
            "text": "<$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> 是一个默认条目"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source",
            "text": "此条目定义于插件 <$link to=<<pluginTiddler>>><$text text=<<pluginTiddler>>/></$link>"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint",
            "text": "已被一般条目覆写"
        },
        "$:/language/TiddlerInfo/Fields/Caption": {
            "title": "$:/language/TiddlerInfo/Fields/Caption",
            "text": "栏位"
        },
        "$:/language/TiddlerInfo/List/Caption": {
            "title": "$:/language/TiddlerInfo/List/Caption",
            "text": "列表"
        },
        "$:/language/TiddlerInfo/List/Empty": {
            "title": "$:/language/TiddlerInfo/List/Empty",
            "text": "此条目无指定列表"
        },
        "$:/language/TiddlerInfo/Listed/Caption": {
            "title": "$:/language/TiddlerInfo/Listed/Caption",
            "text": "被列于"
        },
        "$:/language/TiddlerInfo/Listed/Empty": {
            "title": "$:/language/TiddlerInfo/Listed/Empty",
            "text": "此条目未出现于其他条目的列表中"
        },
        "$:/language/TiddlerInfo/References/Caption": {
            "title": "$:/language/TiddlerInfo/References/Caption",
            "text": "参照"
        },
        "$:/language/TiddlerInfo/References/Empty": {
            "title": "$:/language/TiddlerInfo/References/Empty",
            "text": "无条目链接至此"
        },
        "$:/language/TiddlerInfo/Tagging/Caption": {
            "title": "$:/language/TiddlerInfo/Tagging/Caption",
            "text": "子条目"
        },
        "$:/language/TiddlerInfo/Tagging/Empty": {
            "title": "$:/language/TiddlerInfo/Tagging/Empty",
            "text": "无任何条目以此条目之标题为标签"
        },
        "$:/language/TiddlerInfo/Tools/Caption": {
            "title": "$:/language/TiddlerInfo/Tools/Caption",
            "text": "工具"
        },
        "$:/language/Docs/Types/application/javascript": {
            "title": "$:/language/Docs/Types/application/javascript",
            "description": "JavaScript 源码",
            "name": "application/javascript",
            "group": "开发者"
        },
        "$:/language/Docs/Types/application/json": {
            "title": "$:/language/Docs/Types/application/json",
            "description": "JSON 数据",
            "name": "application/json",
            "group": "开发者"
        },
        "$:/language/Docs/Types/application/x-tiddler-dictionary": {
            "title": "$:/language/Docs/Types/application/x-tiddler-dictionary",
            "description": "数据字典",
            "name": "application/x-tiddler-dictionary",
            "group": "开发者"
        },
        "$:/language/Docs/Types/image/gif": {
            "title": "$:/language/Docs/Types/image/gif",
            "description": "GIF 图像",
            "name": "image/gif",
            "group": "图像"
        },
        "$:/language/Docs/Types/image/jpeg": {
            "title": "$:/language/Docs/Types/image/jpeg",
            "description": "JPEG 图像",
            "name": "image/jpeg",
            "group": "图像"
        },
        "$:/language/Docs/Types/image/png": {
            "title": "$:/language/Docs/Types/image/png",
            "description": "PNG 图像",
            "name": "image/png",
            "group": "图像"
        },
        "$:/language/Docs/Types/image/svg+xml": {
            "title": "$:/language/Docs/Types/image/svg+xml",
            "description": "结构式矢量图",
            "name": "image/svg+xml",
            "group": "图像"
        },
        "$:/language/Docs/Types/image/x-icon": {
            "title": "$:/language/Docs/Types/image/x-icon",
            "description": "图标",
            "name": "image/x-icon",
            "group": "图像"
        },
        "$:/language/Docs/Types/text/css": {
            "title": "$:/language/Docs/Types/text/css",
            "description": "静态样式",
            "name": "text/css",
            "group": "开发者"
        },
        "$:/language/Docs/Types/text/html": {
            "title": "$:/language/Docs/Types/text/html",
            "description": "HTML 标记",
            "name": "text/html",
            "group": "文本"
        },
        "$:/language/Docs/Types/text/plain": {
            "title": "$:/language/Docs/Types/text/plain",
            "description": "纯文本",
            "name": "text/plain",
            "group": "文本"
        },
        "$:/language/Docs/Types/text/vnd.tiddlywiki": {
            "title": "$:/language/Docs/Types/text/vnd.tiddlywiki",
            "description": "TiddlyWiki 5",
            "name": "text/vnd.tiddlywiki",
            "group": "文本"
        },
        "$:/language/Docs/Types/text/x-tiddlywiki": {
            "title": "$:/language/Docs/Types/text/x-tiddlywiki",
            "description": "TiddlyWiki 2",
            "name": "text/x-tiddlywiki",
            "group": "文本"
        },
        "$:/languages/zh-Hans/icon": {
            "title": "$:/languages/zh-Hans/icon",
            "type": "image/svg+xml",
            "text": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"1500\" height=\"1000\" viewBox=\"-5 -5 30 20\">\n<title>Flag of the People's Republic of China</title>\n<rect fill=\"#de2910\" x=\"-5\" y=\"-5\" width=\"30\" height=\"20\"/>\n<defs>\n<polygon id=\"s\" points=\"0,-513674 301930,415571 -488533,-158734 488533,-158734 -301930,415571\"\nfill=\"#ffde00\" transform=\"scale(0.0000019467600073)\"/>\n</defs>\n<use xlink:href=\"#s\" transform=\"scale(3)\"/>\n<use xlink:href=\"#s\" transform=\"translate(5,-3) rotate(-120.963756)\"/>\n<use xlink:href=\"#s\" transform=\"translate(7,-1) rotate(-98.130102)\"/>\n<use xlink:href=\"#s\" transform=\"translate(7,2) rotate(-74.054604)\"/>\n<use xlink:href=\"#s\" transform=\"translate(5,4) rotate(-51.3401917)\"/>\n</svg>\n"
        }
    }
}
{
    "tiddlers": {
        "$:/plugins/danielo/encryptTiddler/Changelog": {
            "title": "$:/plugins/danielo/encryptTiddler/Changelog",
            "text": "!! V2.1\n* Added control panel.\n* Added ability to batch encrypt and decrypt tiddlers.\n* Added some documentation an language strings.\n\n"
        },
        "$:/plugins/danielo/encryptTiddler/control-panel/batch-encrypt": {
            "title": "$:/plugins/danielo/encryptTiddler/control-panel/batch-encrypt",
            "caption": "Batch Encryption",
            "text": "\\define lingo-base() $:/language/Search/\n<<lingo Filter/Hint>>\n{{$:/plugins/danielo/encryptTiddler/language/batch}}\n\n<$linkcatcher to=\"$:/temp/encrypt/filter\">\n\n<div class=\"tc-search tc-advanced-search\">\n<$edit-text tiddler=\"$:/temp/encrypt/filter\" type=\"search\" tag=\"input\" default=\"\" placeholder=\"filter tiddlers\"/>\n<$button popup=<<qualify \"$:/state/filterDropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n<$reveal state=\"$:/temp/encrypt/filter\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/encrypt/filter\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n\n\n<$edit-text tag=\"input\" tiddler=\"$:/temp/password\" placeholder=\"password\" type=\"password\" default=\"\" col=\"4\"/><$encryptTiddler passwordTiddler=\"$:/temp/password\" filter={{$:/temp/encrypt/filter}}>\n<$button message=\"tw-encrypt-tiddler\">\nEncrypt\n</$button>\n<$button message=\"tw-decrypt-tiddler\">\nDecrypt\n</$button>\n</$encryptTiddler>\n</$reveal>\n</div>\n\n<div class=\"tc-block-dropdown-wrapper\">\n<$reveal state=<<qualify \"$:/state/filterDropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Filter]!sort[]] -[[$:/core/Filters/SystemTags]] -[[$:/core/Filters/AllTags]]\"><$link to={{!!filter}}><$transclude field=\"description\"/></$link>\n</$list>\n</div>\n</$reveal>\n</div>\n\n</$linkcatcher>\n\n<$reveal state=\"$:/temp/encrypt/filter\" type=\"nomatch\" text=\"\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter={{$:/temp/encrypt/filter}}/>\"\"\">\n<div class=\"tc-search-results\">\n<<lingo Filter/Matches>>\n<$list filter={{$:/temp/encrypt/filter}} template=\"$:/plugins/danielo/encryptTiddler/ui/listItemTemplate\"/>\n</div>\n</$set>\n</$reveal>"
        },
        "$:/plugins/danielo/encryptTiddler/control-panel": {
            "title": "$:/plugins/danielo/encryptTiddler/control-panel",
            "tags": "$:/tags/ControlPanel",
            "caption": "Encrypt Tiddlers",
            "text": "\\define prefix(name) $:/plugins/danielo/encryptTiddler/control-panel/$name$\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]prefix[$:/plugins/danielo/encryptTiddler/control-panel/]]\" default=<<prefix \"batch-encrypt\">> state=\"$:/state/encryptTiddler/control-panel/tabs\">>"
        },
        "$:/plugins/danielo/encryptTiddler/crypt-batch-button": {
            "creator": "Danielo",
            "title": "$:/plugins/danielo/encryptTiddler/crypt-batch-button",
            "text": "<span title=\"Encrypt/Decrypt tiddler\" class=\"pc-batch-controls\">\n<$reveal state=<<qualify \"$:/state/encrypt\">> type=\"nomatch\" text={{!!title}} animate=\"no\"><$button set=<<qualify \"$:/state/encrypt\">> setTo={{!!title}} class=\"tc-btn-invisible\">{{$:/plugins/danielo/encryptTiddler/unlocked}}</$button></$reveal><$reveal state=<<qualify \"$:/state/encrypt\">> type=\"match\" text={{!!title}} animate=\"no\"><$button set=<<qualify \"$:/state/encrypt\">> setTo=\"\" class=\"tc-btn-invisible\">{{$:/plugins/danielo/encryptTiddler/unlocked}}</$button></$reveal>\n<$encryptTiddler passwordTiddler=\"$:/temp/password\" filter={{$:/temp/encrypt/filter}}><$reveal state=<<qualify \"$:/state/encrypt\">> type=\"match\" text={{!!title}} animate=\"yes\">\n<div class=\"tc-block-dropdown tw-crypt-dropdown\">\n<span class=\"tw-password-field\"><$edit-text tiddler=\"$:/temp/password\" tag=\"input\" type=\"password\" default=\"\" placeholder=\"password\" class=\"tc-edit-texteditor\"/></span>\n<span class=\"tw-crypt-button\"> <$button message=\"tw-encrypt-tiddler\"  set=<<qualify \"$:/state/encrypt\">> setTo=\"\" >Encrypt</$button> <$button message=\"tw-decrypt-tiddler\" set=<<qualify \"$:/state/encrypt\">> setTo=\"\" >Decrypt</$button></span>\n</div>\n</$reveal></$encryptTiddler>\n</span>"
        },
        "$:/plugins/danielo/encryptTiddler/crypt-button": {
            "created": "20140405233000477",
            "creator": "Danielo",
            "modified": "20140608121335075",
            "tags": "$:/tags/ViewToolbar button encrypt export",
            "title": "$:/plugins/danielo/encryptTiddler/crypt-button",
            "type": "text/vnd.tiddlywiki",
            "text": "<span title=\"Encrypt/Decrypt tiddler\"><$transclude tiddler=\"$:/plugins/danielo/encryptTiddler/openPopup\"/>\n</span><$encryptTiddler passwordTiddler=\"$:/temp/password\"><$reveal state=\"$:/state/encrypt\" type=\"match\" text={{!!title}} animate=\"yes\">\n<div class=\"tc-block-dropdown tw-crypt-dropdown\">\n<span class=\"tw-password-field\"><$edit-text tiddler=\"$:/temp/password\" tag=\"input\" type=\"password\" default=\"\" placeholder=\"password\" class=\"tc-edit-texteditor\"/></span>\n<span class=\"tw-crypt-button\"> <$list filter=\"[all[current]!has[encrypted]]\"> <$button message=\"tw-encrypt-tiddler\"  set=\"$:/state/encrypt\" setTo=\"\" >Encrypt</$button></$list><$list filter=\"[is[current]has[encrypted]]\"> <$button message=\"tw-decrypt-tiddler\" set=\"$:/state/encrypt\" setTo=\"\" >Decrypt</$button></$list></span>\n</div>\n</$reveal></$encryptTiddler>\n"
        },
        "$:/plugins/danielo/encryptTiddler/Encrypt-Tiddler": {
            "created": "20140406153742691",
            "creator": "pepito",
            "description": "add the hability to encrypt individual tiddlers",
            "modified": "20141029152631265",
            "modifier": "Danielo Rodriguez",
            "tags": "index plugins",
            "title": "$:/plugins/danielo/encryptTiddler/Encrypt-Tiddler",
            "type": "text/vnd.tiddlywiki",
            "caption": "readme",
            "text": "This plugin adds the ability to encrypt your tiddlers individually. This have several advantages:\n\n* You can specify a different password for each tiddler if you want.\n* You don't have to encrypt your whole wiky.\n* If you forget your password, you only lose a tiddler.\n* It's possible to edit the tiddler content , tags and fields ''except the encrypt field'' after encryption. Decrypting your tiddler will restore it to its original state when you encrypted it. This way you can hide the encrypted tiddlers as a \"different\" thing.\n* You can even encrypt images.\n* You can have sensible data in a day to day wiky.\n* I didn't try this, but theoretically you can apply double encryption by encrypting your wiki too."
        },
        "$:/plugins/danielo/encryptTiddler/encrypttiddler.js": {
            "text": "/*\\\ntitle: $:/plugins/danielo/encryptTiddler/encrypttiddler.js\ntype: application/javascript\nmodule-type: widget\n\nencrypttiddler widget\n\n```\n\n```\n\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar encryptTiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t\t{type: \"tw-encrypt-tiddler\", handler: \"handleEncryptevent\"},\n\t\t\t{type: \"tw-decrypt-tiddler\", handler: \"handleDecryptevent\"},\n\t\t\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nencryptTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nencryptTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tconsole.log(\"Render\");\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nencryptTiddlerWidget.prototype.execute = function() {\n\t// Get attributes\n\t this.tiddlerTitle=this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t this.filter=this.getAttribute(\"filter\",undefined);\n \t this.passwordTiddler=this.getAttribute(\"passwordTiddler\");\n\t// Construct the child widgets\n\tconsole.log(this.targetTiddler);\n\t\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nencryptTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.filter) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nencryptTiddlerWidget.prototype.getTiddlersToProcess = function(){\n\tif(this.filter){ //we have a filter to work with\n\t\treturn this.wiki.filterTiddlers(this.filter);\n\t}else{ //single tiddler case\n\t\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle);\n\t\treturn tiddler? [tiddler.fields.title] : [];\n\t}\n};\n\nencryptTiddlerWidget.prototype.handleEncryptevent = function(event){\n\tvar password = this.getPassword();\n\tvar tiddlers = this.getTiddlersToProcess();\n\n\tif(tiddlers.length > 0 && password){\n\t\tvar self = this;\n\t\t$tw.utils.each(tiddlers, function(title){\n\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\tvar fields={text:\"!This is an encrypted Tiddler\",\n\t\t\t\t\t\t\t\t  encrypted:self.encryptFields(title,password)};\n\t\t\tself.saveTiddler(tiddler,fields);\n\t\t});\n\n\t}else{\n\t\tconsole.log(\"We did not find any tiddler to encrypt or password not set!\")\n\t}\n};\n\nencryptTiddlerWidget.prototype.handleDecryptevent = function(event){\n\tvar password =this.getPassword();\n\tvar tiddlers = this.getTiddlersToProcess();\n\n\tif(tiddlers.length > 0 && password){\n\t\tvar self = this;\n\t\t$tw.utils.each(tiddlers, function(title){\n\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\tvar fields = self.decryptFields(tiddler,password);\n\t\t\tif(fields)self.saveTiddler(tiddler,fields);\n\t\t});\n\t}\n};\n\nencryptTiddlerWidget.prototype.saveTiddler=function(tiddler,fields){\n\tthis.wiki.addTiddler(  new $tw.Tiddler(this.wiki.getModificationFields(),tiddler,this.clearNonStandardFields(tiddler), fields ) )\n}\n\nencryptTiddlerWidget.prototype.encryptFields = function (title,password){\n\tvar jsonData=this.wiki.getTiddlerAsJson(title);\n\treturn $tw.crypto.encrypt(jsonData,password);\n\n};\n\nencryptTiddlerWidget.prototype.decryptFields = function(tiddler,password){\n\t\tvar JSONfields =$tw.crypto.decrypt(tiddler.fields.encrypted,password);\n\t\tif(JSONfields!==null){\n\t\t\treturn JSON.parse(JSONfields);\n\t\t}\n\t\tconsole.log(\"Error decrypting \"+tiddler.fields.title+\". Probably bad password\")\n\t\treturn false\n};\n\nencryptTiddlerWidget.prototype.getPassword = function(){\n\tvar tiddler=this.wiki.getTiddler(this.passwordTiddler);\n\tif(tiddler){\n\t\tvar password=tiddler.fields.text;\n\t\tthis.saveTiddler(tiddler); //reset password tiddler\n\t\treturn password;\n\t}\n\n\treturn false\n};\n\n// This function erases every field of a tiddler that is not standard and also\n// the text field\nencryptTiddlerWidget.prototype.clearNonStandardFields =function(tiddler) {\n\tvar standardFieldNames = \"title tags modified modifier created creator\".split(\" \");\n\t\tvar clearFields = {};\n\t\tfor(var fieldName in tiddler.fields) {\n\t\t\tif(standardFieldNames.indexOf(fieldName) === -1) {\n\t\t\t\tclearFields[fieldName] = undefined;\n\t\t\t}\n\t\t}\n\t\tconsole.log(\"Cleared fields \"+JSON.stringify(clearFields));\n\t\treturn clearFields;\n};\n\nexports.encryptTiddler = encryptTiddlerWidget;\n\n})();",
            "title": "$:/plugins/danielo/encryptTiddler/encrypttiddler.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/plugins/danielo/encryptTiddler/Filters/encrypted-tiddlers": {
            "title": "$:/plugins/danielo/encryptTiddler/Filters/encrypted-tiddlers",
            "description": "All encrypted tiddlers",
            "filter": "[has[encrypted]]",
            "tags": "$:/tags/Filter"
        },
        "$:/plugins/danielo/encryptTiddler/Filters/normal-unencrypted-tiddlers": {
            "title": "$:/plugins/danielo/encryptTiddler/Filters/normal-unencrypted-tiddlers",
            "filter": "[!is[system]!has[encrypted]]",
            "description": "Non-encrypted normal tiddlers",
            "tags": "$:/tags/Filter"
        },
        "$:/plugins/danielo/encryptTiddler/language/batch": {
            "title": "$:/plugins/danielo/encryptTiddler/language/batch",
            "text": "Use below controls to encrypt or decrypt a bunch of tiddlers. Encryption ''controls are hidden'' until you type something in the search box. All listed tiddlers will be affected. The presence of a small padlock (<span class=\"pc-listItem-lock\">{{$:/core/images/locked-padlock}}</span>) next to the tiddler title indicates that particular tiddler is already encrypted."
        },
        "$:/plugins/danielo/encryptTiddler/ui/listItemTemplate": {
            "title": "$:/plugins/danielo/encryptTiddler/ui/listItemTemplate",
            "text": "<div class=\"tc-menu-list-item\">\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n<$list filter=\"[all[current]has[encrypted]]\">\n<span class=\"pc-listItem-lock\">{{$:/core/images/locked-padlock}}</span>\n</$list>\n</$link>\n</div>"
        },
        "$:/plugins/danielo/encryptTiddler/openPopup": {
            "created": "20140406151910358",
            "creator": "Danielo",
            "modified": "20140608121417975",
            "modifier": "pepito",
            "tags": "button encrypt export",
            "title": "$:/plugins/danielo/encryptTiddler/openPopup",
            "type": "text/vnd.tiddlywiki",
            "text": "<$reveal state=\"$:/state/encrypt\" type=\"nomatch\" text={{!!title}} animate=\"no\"><$button set=\"$:/state/encrypt\" setTo={{!!title}} class=\"tc-btn-invisible\">{{$:/plugins/danielo/encryptTiddler/unlocked}}</$button></$reveal><$reveal state=\"$:/state/encrypt\" type=\"match\" text={{!!title}} animate=\"no\"><$button set=\"$:/state/encrypt\" setTo=\"\" class=\"tc-btn-invisible\">{{$:/plugins/danielo/encryptTiddler/unlocked}}</$button></$reveal>"
        },
        "$:/plugins/danielo/encryptTiddler/styles": {
            "created": "20140406110705085",
            "creator": "pepito",
            "modified": "20140608121510064",
            "modifier": "pepito",
            "tags": "$:/tags/Stylesheet encrypt export",
            "title": "$:/plugins/danielo/encryptTiddler/styles",
            "type": "text/plain",
            "text": ".tw-password-field {\n\tdisplay: inline-block;\n\twidth: 55%;\n  font-size:1em;\n  line-height:0;\n  margin:0;\n\tpadding-left:7%;\n}\n\n.pc-batch-controls .tw-crypt-dropdown{\n\tright: 0px;\n}\n\n.pc-batch-controls{\n\t\tposition:relative;\n}\n\n.pc-listItem-lock svg{\n\theight: 1em;\n\twidth: 1em;\n\tfill: #aaaaaa;\n}\n\n/*It is for use in combination with tc-block-dropdown */\n.tw-crypt-dropdown{\n      line-height:0;\n\t\t\tpadding-left:5px;\n\t\t\t}\n\n.tw-password-field input{\n       font-size:0.5em;\n\n}\n\n.tw-crypt-button {\n\tdisplay: inline-block;\n\twidth: 10%;\n}\n\n.tw-crypt-button button{\n\tfont-size:0.5em;\n}\n"
        },
        "$:/plugins/danielo/encryptTiddler/unlocked": {
            "created": "20140406101339943",
            "creator": "danielo515",
            "modified": "20140608121532690",
            "modifier": "danielo515",
            "tags": "encrypt export",
            "title": "$:/plugins/danielo/encryptTiddler/unlocked",
            "type": "text/vnd.tiddlywiki",
            "text": "<svg version=\"1.1\" id=\"Capa_1\" xmlns=\"http://www.w3.org/2000/svg\" class=\"tc-image-button\"\n\t viewBox=\"0 0 100 100\" style=\"enable-background:new 0 0 100 100;\" xml:space=\"preserve\">\n<g>\n\t<path d=\"M77.555,50H35.304V31.63c0-4.057,1.435-7.521,4.305-10.391c2.87-2.87,6.333-4.305,10.391-4.305\n\t\tc4.056,0,7.52,1.435,10.39,4.305s4.305,6.335,4.305,10.391c0,0.996,0.363,1.857,1.091,2.583c0.727,0.729,1.588,1.09,2.583,1.09\n\t\th3.674c0.995,0,1.856-0.361,2.583-1.09c0.727-0.727,1.091-1.588,1.091-2.583c0-7.079-2.517-13.136-7.549-18.17\n\t\tC63.136,8.428,57.08,5.912,50,5.912c-7.081,0-13.137,2.516-18.169,7.548c-5.033,5.034-7.549,11.091-7.549,18.17V50h-1.837\n\t\tc-1.531,0-2.833,0.536-3.904,1.608c-1.072,1.072-1.607,2.372-1.607,3.902v33.067c0,1.532,0.535,2.832,1.607,3.904\n\t\tc1.071,1.072,2.372,1.608,3.904,1.608h55.11c1.53,0,2.832-0.536,3.904-1.608c1.071-1.072,1.607-2.372,1.607-3.904V55.51\n\t\tc0-1.529-0.536-2.83-1.607-3.902C80.387,50.536,79.085,50,77.555,50z M54.315,72.937V83.72c0,2.173-1.762,3.935-3.935,3.935H49.62\n\t\tc-2.173,0-3.935-1.762-3.935-3.935V72.937c-2.31-1.443-3.852-4.001-3.852-6.925c0-4.511,3.657-8.167,8.167-8.167\n\t\ts8.167,3.657,8.167,8.167C58.167,68.937,56.625,71.495,54.315,72.937z\"/>\n</g>\n</svg>\n"
        }
    }
}




{}


{
    "originalVersion": "0.13.4+9665",
    "dataStructureState": "0.11.0",
    "showWelcomeMessage": false
}
{
    "tiddlers": {
        "$:/plugins/telmiger/EditorCounter/counter.js": {
            "created": "20170207230719552",
            "creator": "Thomas Elmiger",
            "text": "/*\\\ntitle: $:/plugins/telmiger/EditorCounter/counter.js\ntype: application/javascript\nmodule-type: widget\n\nversion: 0.6.3\n\nCount the number of words or characters in a tiddler/field/input string – Autosave while editing\n\nUsage: see the plugin’s readme.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CounterWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCounterWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM – reset autosave attributes\n*/\nCounterWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\t// autosave attributes\n\tthis.diffTotal = 0;\n\tthis.saveNow = false;\n\t// calculate state \n\tthis.execute();\n\tif(this.mode == \"autosave\") {\n\t\t// store the number of last saved characters\n\t\tthis.lastSavedCount = this.currentCount;\n\t\tthis.diffLastCount = this.currentCount;\n\t} \n\tvar textNode = this.document.createTextNode(this.currentCount);\n\tvar domNode = this.document.createElement(\"span\");\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCalculate the numbers\n*/\nCounterWidget.prototype.getLength = function(text) {\n\tvar result = 0;\n\tswitch(this.mode) {\n\t\tcase \"character\":\n\t\t\tresult = text.length.toString();\n\t\t\tbreak;\n\t\tcase \"autosave\":\n\t\t\tresult = text.length.toString();\n\t\t\t// sum up difference since last count\n\t\t\tthis.diffTotal += this.checkAutosave(result);\n\t\t\t// check saving limit\n\t\t\tthis.saveNow = (this.diffTotal >= this.saveLimit) ? true : false;\n\t\t\tbreak;\n\t\tcase \"word\":\n\t\t\tif(text.match(/\\w+/g)) {\n\t\t\t\tresult = text.match(/\\w+/g).length.toString();\n\t\t\t} else {\n\t\t\t\tresult = 0;\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault: // \"?!\"\n\t\t\tresult = \"mode undefined\";\n\t}\n\treturn result;\n}\n\n/*\nSet autosave \n*/\nCounterWidget.prototype.checkAutosave = function(textlength) {\n\t// calculate difference since last count\n\tthis.diffChars = Math.abs(textlength - this.diffLastCount);\n\t// store text length\n\tthis.diffLastCount = textlength;\n\treturn this.diffChars;\n}\n\n/*\nGet the colors as an array\n*/\nCounterWidget.prototype.getColors = function() {\n\tvar color_array1 = this.colors.split(',');\n\tvar i;\n\tcolor_array1.sort(function sortfunction(a, b){\n\t\treturn a.split(':')[1] - b.split(':')[1];\n\t});\n\tfor(i = 0; i < color_array1.length; i++) {\n\t\tthis.color_array[i] = color_array1[i].split(':')[0];\n\t\tthis.count_array[i] = color_array1[i].split(':')[1];\n\t}\n}\n\n/*\nGet the numbers\n*/\nCounterWidget.prototype.getNumber = function() {\n\t// Count letters or words as appropriate.\n\tvar result = 0;\n\tif(this.countText) {\n\t\t// text supplied as parameter \n\t\tresult = this.getLength(this.countText);\n\t} else {\n\t\tvar tiddler = this.wiki.getTiddler(this.tiddler);\n\t\tvar fieldContent = tiddler.getFieldString(this.field);\n\t\tif(fieldContent) {\n\t\t\tresult = this.getLength(fieldContent);\n\t\t} else {\n\t\t\tresult = 0;\n\t\t}\n\t}\n\treturn result;\n}\n\n/*\nCompute the internal state of the widget\n*/\nCounterWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.mode = this.getAttribute(\"mode\",\"character\");\n\tthis.saveLimit = this.getAttribute(\"savelimit\",200);\n\tthis.tiddler = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.field = this.getAttribute(\"field\",\"text\");\n\tthis.countText = this.getAttribute(\"text\");\n\tthis.colors = this.getAttribute(\"colors\");\n\tthis.stateTiddler = this.getAttribute(\"colorState\");\n\t// Count letters or words as appropriate.\n\tthis.currentCount = this.getNumber();\n\tthis.diffChars = 0;\n\t//Find the color cut-offs, if any.\n\tif(this.colors) {\n\t\tthis.color_array = [];\n\t\tthis.count_array = [];\n\t\tvar i;\n\t\tthis.getColors();\n\n\t\t// set the color if the counter is high enough. The color with the largest value that is less than this.currentCount wins.\n\t\tfor(i = 0; i < this.color_array.length; i++) {\n\t\t\tif(Number(this.currentCount) >= Number(this.count_array[this.color_array.length - 1 - i])) {\n\t\t\t\tif(this.stateTiddler) {\n\t\t\t\t\tthis.wiki.setText(this.stateTiddler,\"text\",undefined,this.color_array[this.color_array.length -1 - i]);\n\t\t\t\t}\n\t\t\t\tthis.currentCount = '@@color:' + this.color_array[this.color_array.length -1 - i] + ';' \n\t\t\t\t\t+ this.currentCount + '@@';\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(this.stateTiddler && i === this.color_array.length-1) {\n\t\t\t\tthis.wiki.setText(this.stateTiddler,\"text\",undefined,'');\n\t\t\t}\n\t\t}\n\t}\n\tvar parser = this.wiki.parseText(\"text/vnd.tiddlywiki\",this.currentCount,{parseAsInline: true});\n\tvar parseTreeNodes = parser ? parser.tree : [];\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCounterWidget.prototype.refresh = function(changedTiddlers) {\n\tvar refreshed = false;\n\t// Re-execute the filter to get the count\n\tthis.computeAttributes();\n\tvar oldCount = this.currentCount;\n\tthis.execute();\n\tif(this.currentCount !== oldCount && this.mode !== \"autosave\") {\n\t\t// Regenerate and rerender the widget and replace the existing DOM node\n\t\tthis.refreshSelf();\n\t\trefreshed = true;\n\t}\n\tif(this.saveNow) {\n\t\t// Trigger an autosave and refresh\n\t\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\t\tthis.refreshSelf();\n\t\trefreshed = true;\n\t} \n\treturn refreshed;\n};\n\nexports[\"editor-counter\"] = CounterWidget;\n\n})();\n",
            "type": "application/javascript",
            "title": "$:/plugins/telmiger/EditorCounter/counter.js",
            "tags": "EditorCounter",
            "module-type": "widget",
            "modifier": "Thomas Elmiger",
            "modified": "20170513200904421"
        },
        "$:/plugins/telmiger/EditorCounter/icon": {
            "created": "20170209074404836",
            "text": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"64.003\" height=\"64.003\" viewBox=\"-500.5 395.5 64.003 64.003\"><path d=\"M-468.5 396.5l26.426 15.5v31l-26.425 15.5-26.426-15.5v-31l26.427-15.5z\"/><path fill=\"#FFF\" d=\"M-485.996 419.088h34.99v16.824h-34.99z\"/><path fill=\"#E2001A\" d=\"M-468.5 405.5c-12.15 0-22 9.85-22 22s9.85 22 22 22 22-9.85 22-22-9.85-22-22-22zm13.11 21.637c-1.022.682-2.674 1.023-4.954 1.023h-2.838c-1.505 0-2.598.3-3.28.9-.68.6-1.22 1.804-1.622 3.615 0 0-.063.526-.178.526s-.13-.31-.184-.562c-.056-.263-.14-.59-.256-.977-.224-.758-.447-1.332-.67-1.72-.27-.482-.613-.87-1.024-1.165-.412-.294-.883-.47-1.413-.528l-.74-.088h-3.637c-2.178 0-3.796-.343-4.855-1.024-1.764-1.12-2.71-3.24-2.842-6.357-.01-.25 0-.48.047-.772h.208c.142 1.41 1.304 2.502 2.158 3.274.853.77 2.222 1.155 4.104 1.155h3.3c1.896 0 3.28.436 4.158 1.306.79.786 1.31 2.017 1.56 3.69.028.183.012.263.064.263.053 0 .04-.09.06-.278.253-2.173 1.094-3.627 2.522-4.363.88-.46 2.28-.676 4.196-.652l2.257.035c1.527.023 2.814-.278 3.86-.908 1.046-.63 2.285-1.803 2.425-3.52h.21c.065.17.057.56.045.828-.13 3.105-1.023 5.206-2.68 6.3z\"/></svg>",
            "type": "image/svg+xml",
            "title": "$:/plugins/telmiger/EditorCounter/icon",
            "tags": "",
            "modified": "20170209074423973"
        },
        "$:/plugins/telmiger/EditorCounter/readme": {
            "created": "20170209064758307",
            "creator": "Thomas Elmiger",
            "text": "!! Count Your Texts & Autosave\nThe [[EditorCounter plugin|https://tid.li/tw5/plugins.html#EditorCounter]] provides counters for words and characters in the edit view of your tiddlers. And it can save your texts automagically in the background while you work.\n\n!!! The counters\n* In edit mode users can see stats concerning the tiddler’s text and title fields. The numbers are updated whenever they pause typing.\n* Counters for words and characters can be activated in the [[plugin settings|$:/plugins/telmiger/EditorCounter/settings]].\n* The colours of the counters change at some predefined numbers.\n** Settings for colors and color limits are not available in the plugin configuration. <br>Workaround: edit [[the template|$:/plugins/telmiger/EditorCounter/EditTemplate]].\n\n!!! Autosave\n* When activated in the [[plugin settings|$:/plugins/telmiger/EditorCounter/settings]], //autosave// will try to save the wiki in the background during editing: whenever a predefined number of characters has been added or removed, a save is triggered.\n** As an option you can show a checkbox in the editor to pause/activate automatic saving.\n\n!!! Parameters\n\n|!Parameter |!Description |\n|colors |Optionally, define an array of color and number pairs to set minimal color limits. |\n|colorState |Optional state tiddler to save the color value. |\n|field |Calculate for the text in this field. |\n|mode |Entity to calculate: //word// or //character// or //autosave//. Defaults to \"character\". |\n|savelimit |A number of character changes after which //autosave// is performed. Default value: 200 |\n|text |Calculate this text. |\n|tiddler |Optional title of a tiddler to take the field from. Defaults to current tiddler. |\n\n!!! Widget usage\nThis plugin is based on a similar [[solution by Jed Carty|$:/plugins/telmiger/EditorCounter/credits]] – many thanks! \n\nThe widget can be used in other contexts than the plugin. The usage would be very similar to [[Jed’s examples on ooktech.com|http://ooktech.com/jed/ExampleWikis/WordCount/#%24%3A%2Fplugins%2Finmysocks%2FWordCount%2FWord%20Count%20Widget]] \n\nKnown differences: instead of `<$word-count` start with `<$editor-counter`. Default mode is //character//.\n\n!!!! Widget examples\n\n```\n<$editor-counter tiddler=SomeTiddler field=some_field mode=word/>\n<$editor-counter tiddler=SomeTiddler mode=character colors=\"blue:10,green:50,red:100\"/>\n<$editor-counter text=\"some text string\" mode=character colorState=\"$:/state/someTextColor\" colors=\"blue:10,green:50\"/>\n<$editor-counter mode=autosave savelimit=300/>\n```\n",
            "title": "$:/plugins/telmiger/EditorCounter/readme",
            "tags": "EditorCounter",
            "modifier": "Thomas Elmiger",
            "modified": "20170513193917595"
        },
        "$:/plugins/telmiger/EditorCounter/settings": {
            "text": "!! Counter Settings\nActivate counters here. Your choice will be visible below the text field in edit mode.\n\n<$checkbox tiddler=\"$:/plugins/telmiger/EditorCounter/settings/characters\" field=\"text\" checked=\"yes\" unchecked=\"no\"> Character counter</$checkbox>\n\n<$checkbox tiddler=\"$:/plugins/telmiger/EditorCounter/settings/words\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> Word counter</$checkbox>\n\n<$checkbox tiddler=\"$:/plugins/telmiger/EditorCounter/settings/title\" field=\"text\" checked=\"yes\" unchecked=\"no\"> Title characters counter</$checkbox>\n\n!! Autosave Settings\nAutosave will try to save your wiki in the background after adding or removing 200 characters. You can change this value below.\n\n<$checkbox tiddler=\"$:/plugins/telmiger/EditorCounter/settings/autosave\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> Autosave</$checkbox>\n every <$edit-text tiddler=\"$:/plugins/telmiger/EditorCounter/settings/autosave\" field=\"limit\" size=\"4\"/> characters.\n\n<$checkbox tiddler=\"$:/plugins/telmiger/EditorCounter/settings/autosave-pause\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> Show checkbox to start/pause autosave in editor</$checkbox>\n\n<br>''\n\n<$button message=\"tm-save-wiki\" param={{$:/config/SaveWikiButton/Template}} tooltip={{$:/language/Buttons/SaveWiki/Hint}} aria-label={{$:/language/Buttons/SaveWiki/Caption}} class=<<tv-config-toolbar-class>>>\n<span class=\"tc-dirty-indicator\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/save-button}} {{$:/language/Buttons/SaveWiki/Hint}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/SaveWiki/Caption}}/></span>\n</$list>\n</span>\n</$button>\n\n''<br>\n\nNote: ''All'' characters are counted as entered in the editor, regardless if they are invisible in the result or if they produce more text based on data or transclusion.",
            "title": "$:/plugins/telmiger/EditorCounter/settings",
            "tags": "EditorCounter",
            "modifier": "Thomas Elmiger",
            "modified": "20170513185158209",
            "creator": "Thomas Elmiger",
            "created": "20170208062643245"
        },
        "$:/plugins/telmiger/EditorCounter/settings/characters": {
            "created": "20170208063042363",
            "creator": "Thomas Elmiger",
            "text": "yes",
            "title": "$:/plugins/telmiger/EditorCounter/settings/characters",
            "modifier": "Thomas Elmiger",
            "modified": "20170209071527563",
            "tags": "EditorCounter"
        },
        "$:/plugins/telmiger/EditorCounter/settings/title": {
            "created": "20170208211524752",
            "creator": "Thomas Elmiger",
            "text": "yes",
            "title": "$:/plugins/telmiger/EditorCounter/settings/title",
            "modified": "20170209071517463",
            "modifier": "Thomas Elmiger",
            "tags": "EditorCounter"
        },
        "$:/plugins/telmiger/EditorCounter/settings/words": {
            "text": "no",
            "title": "$:/plugins/telmiger/EditorCounter/settings/words",
            "tags": "EditorCounter",
            "modifier": "Thomas Elmiger",
            "modified": "20170216003921105",
            "creator": "Thomas Elmiger",
            "created": "20170208063040756"
        },
        "$:/plugins/telmiger/EditorCounter/EditTemplate": {
            "text": "<span style=\"display:block; margin-top:-18px; margin-bottom:18px;\">\n<$reveal type=\"match\" text=\"yes\" state=\"$:/plugins/telmiger/EditorCounter/settings/characters\">\n<$editor-counter tiddler=<<currentTiddler>> colors='black:0,gray:140,green:300,indianred:800,red:1600'/> characters </$reveal>\n<$reveal type=\"match\" text=\"yes\" state=\"$:/plugins/telmiger/EditorCounter/settings/autosave\">\n<span class=\"tc-muted\"><span class=\"tc-dirty-indicator\">•</span> <$editor-counter mode=autosave savelimit={{$:/plugins/telmiger/EditorCounter/settings/autosave!!limit}}/> saved</span>\n</$reveal>\n<$reveal type=\"match\" text=\"yes\" state=\"$:/plugins/telmiger/EditorCounter/settings/characters\"> &nbsp;&nbsp; \n</$reveal>\n<$reveal type=\"match\" text=\"yes\" state=\"$:/plugins/telmiger/EditorCounter/settings/words\">\n<$editor-counter mode=word colors='black:0,gray:200,green:300,indianred:1000,red:2000'/> words &nbsp;&nbsp; \n</$reveal>\n<$reveal type=\"match\" text=\"yes\" state=\"$:/plugins/telmiger/EditorCounter/settings/autosave-pause\">\n<$checkbox tiddler=\"$:/plugins/telmiger/EditorCounter/settings/autosave\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> Autosave</$checkbox>\n<$reveal type=\"match\" text=\"yes\" state=\"$:/plugins/telmiger/EditorCounter/settings/autosave\">\n (uncheck to pause)\n</$reveal>\n</$reveal>\n</span>\n\n<!--\n* Show the number of characters and/or words entered in edit mode.\n* Show the number of characters at last autosave (autosave at a character difference as defined in settings).\n-->",
            "title": "$:/plugins/telmiger/EditorCounter/EditTemplate",
            "tags": "$:/tags/EditTemplate EditorCounter",
            "modifier": "Thomas Elmiger",
            "modified": "20170513184811368",
            "list-before": "$:/core/ui/EditTemplate/type",
            "creator": "Thomas Elmiger",
            "created": "20170126185919666"
        },
        "$:/plugins/telmiger/EditorCounter/TitleTemplate": {
            "text": "<$reveal type=\"match\" text=\"yes\" state=\"$:/plugins/telmiger/EditorCounter/settings/title\">\n<span title=\"Title length\" style=\"display:block; text-align:right; margin: -22px 3px 2px 0; opacity:0.6;\">\n<$editor-counter tiddler=<<currentTiddler>> field=\"draft.title\" colors='green:20,indianred:30,red:40'/> chars\n</span>\n</$reveal>\n\n<!--\nShow the number of characters in the title\n-->",
            "title": "$:/plugins/telmiger/EditorCounter/TitleTemplate",
            "tags": "$:/tags/EditTemplate EditorCounter",
            "modifier": "Thomas Elmiger",
            "modified": "20170303172302480",
            "list-before": "$:/core/ui/EditTemplate/tags",
            "creator": "Thomas Elmiger",
            "created": "20170213190419968"
        },
        "$:/plugins/telmiger/EditorCounter/settings/autosave": {
            "created": "20170303132537685",
            "creator": "Thomas Elmiger",
            "text": "no",
            "title": "$:/plugins/telmiger/EditorCounter/settings/autosave",
            "modifier": "Thomas Elmiger",
            "modified": "20170304110651863",
            "limit": "200",
            "tags": "EditorCounter"
        },
        "$:/plugins/telmiger/EditorCounter/credits": {
            "text": "!! Credits\n\nMany thanks to Jed for his blueprint widget and demo site, originally on http://ooktech.com/jed/ExampleWikis/WordCount/ as well as to Skeeve who obviousliy contributed the original macro version Jed based his solution on.\n\n* http://ooktech.com/TiddlyWiki/\n* http://ooktech.com/TiddlyWiki/WordCount/\n\n//Powered by the fantastic TiddlyWiki community.//\n",
            "title": "$:/plugins/telmiger/EditorCounter/credits",
            "tags": "EditorCounter",
            "modifier": "Thomas Elmiger",
            "modified": "20170304104718649",
            "creator": "Thomas Elmiger",
            "created": "20170304102433909"
        }
    }
}
{
    "tiddlers": {
        "$:/plugins/telmiger/lib/language": {
            "text": "$:/plugins/telmiger/lib/languages/en-GB",
            "created": "20160820133735127",
            "creator": "Thomas Elmiger",
            "modified": "20160917153239827",
            "modifier": "Thomas Elmiger",
            "priority": "2",
            "tags": "ToDoDone ToDoComponents",
            "title": "$:/plugins/telmiger/lib/language",
            "todo-deadline": "",
            "todo-done": "20160820234641 20160821004547"
        },
        "$:/plugins/telmiger/lib/languages/en-GB": {
            "created": "20160820190056478",
            "creator": "Thomas Elmiger",
            "text": "ID:English\ndate-created-tmpl: {{$:/language/Tiddler/DateFormat}}\ndate-created-tmpl-info: DDth MMM YYYY at hh12:0mmpm\ndate-deadline-tmpl: YYYY-0MM-0DD\n<!-- strings: strigs start here -->\nAdd-tag: Add tag\nAdd-tags-from-the-list: Add tags from the list\nall: all\nall-projects: all projects\narchive: archive\nAre-you-sure?: Are you sure?\nChange-deadline: Change deadline\nchange-priority: Change priority\nchange-priority-to: set priority to\nClick-to-edit-title: Click the title to edit!\nclose: Close\nClose: Close\ndays-back: days back\nDetails: Show details\nDo-it-again: Do it again\nDo-now: Do now\nDone: Done\nEdit: Edit\nHide-list: Hide list\nlate: late\nManage-tags: Manage tags\nMove-down: Move down\nMove-up: Move up\nNew-ToDo-Item: New ToDo Item\nNext week: Next week\nno.: no.\nNothing-to-do-?: Nothing to do? Create a task using this button\nPick-a-task-: Pick a task from the list below using this button\nPrint-window-hint: Open in new window to print\nProject: Project\nRecycle: Recycle\nRelax-Nothing-to-do: Relax. Nothing to do.\nRemove-deadline: Remove deadline\nRemove-tags?: Remove tags?\nReset: Reset\nsearch: search …\nSend-it-down: Send it down\nSet-deadline: Set deadline\nShow-list: Show list\nSort-by-deadline: Sort by deadline\nSort-by-modification: Sort by last modification\nSort-by-priority: Sort all by priority\nSort-by-title: Sort all by title\nsorted-by-deadline: sorted by deadline\nsorted-by-modification: sorted by last modification\nsorted-by-priority: sorted by priority\nsorted-by-title: sorted by title\nSwitch-to-edit-mode: Switch to edit mode\nSwitch-to-safe-mode: Switch to save mode\nTake-it-up: Take it up!\nThis-is-done: This is done\nThis-week: This week\ntoday: today\nToday: Today\nToDo: ToDo\nToDo-template-title: ToDo Item\nToDo-template-text: Motivation: Description * Tests/Acceptance criteria\nTomorrow: Tomorrow\nUuups: Uuups!\n<!-- comments: comments -->\n<!-- translation requires: $:/plugins/telmiger/lib/telang  -->\n<!-- use translated term: <<telang term>> -->",
            "type": "application/x-tiddler-dictionary",
            "todo-done": "20160821121501",
            "title": "$:/plugins/telmiger/lib/languages/en-GB",
            "tags": "Translation ToDoComponents",
            "modifier": "Thomas Elmiger",
            "modified": "20170713195435035"
        },
        "$:/plugins/telmiger/lib/telang": {
            "text": "\\define telang(term)\n<$transclude tiddler={{$:/plugins/telmiger/lib/language}} index=\"$term$\"><$transclude tiddler=\"$:/plugins/telmiger/lib/languages/en-GB\" index=\"$term$\"/></$transclude>\n\\end\n",
            "created": "20160917153627850",
            "creator": "Thomas Elmiger",
            "modified": "20160917160018287",
            "modifier": "Thomas Elmiger",
            "priority": "2",
            "tags": "ToDoDone ToDoComponents $:/tags/Macro",
            "title": "$:/plugins/telmiger/lib/telang",
            "todo-deadline": "",
            "todo-done": "20160820234641 20160821004547"
        },
        "$:/plugins/telmiger/lib/telements/buttons": {
            "created": "20160816192735231",
            "creator": "Thomas Elmiger",
            "text": "\\define teBtnDelete1(tiddler:\"<<currentTiddler>>\",btntext:\"{{$:/core/images/delete-button}}\",tooltip:\"delete\",tip:\"really?\",class:\"\")\n<$vars tid=$tiddler$ btnclass=\"te-btn-action $class$\">\n<$button popup=\"$:/DeletePopupState\" class=<<btnclass>> tooltip=\"\"\"$tooltip$\"\"\">$btntext$</$button>\n<$reveal type=\"popup\" position=\"left\" state=\"$:/DeletePopupState\" class=\"te-popup-dark\">\n<$button class=\"te-delete $class$\" tooltip=\"$tip$\">\n<$action-deletetiddler $tiddler=<<tid>>/>\n<$action-deletetiddler $tiddler=\"$:/DeletePopupState\"/>\nConfirm deletion\n</$button> \n<$button class=\"te-secondary-btn $class$\">\n<$action-deletetiddler $tiddler=\"$:/DeletePopupState\"/>\nCancel\n</$button>\n</$reveal>\n</$vars>\n\\end\n\n\\define teBtnDelete(class:\"\")\n<$vars btnclass=\"te-btn-action te-btn-delete $class$\">\n<$button message=\"tm-delete-tiddler\" tooltip={{$:/language/Buttons/Delete/Hint}} aria-label={{$:/language/Buttons/Delete/Caption}} class=<<btnclass>>>\n{{$:/core/images/delete-button}}\n</$button>\n</$vars>\n\\end\n\n\\define teBtnHint(btntext,message,tooltip,tip,class:\"\")\n<$set name=\"btnclass\" value=\"te-hint $class$\">\n<$button class=<<btnclass>> tooltip=\"\"\"$tooltip$\"\"\" message=\"$message$\">\n$btntext$\n<span class=\"te-tip\">$tip$</span>\n</$button>\n</$set>\n\\end\n\n\\define teBtnTagListops(btntext,add-remove,tooltip,tip:\"_false_\",class:\"\")\n<$vars tip=\"\"\"$tip$\"\"\" btnclass=\"te-btn-action te-tag-listops $class$\">\n<$set name=\"mytip\" filter=\"[<tip>removeprefix[_false_]]\" emptyValue=\"\"\"<span class=\"te-tip\">$tip$</span>\"\"\">\n<$button class=<<btnclass>> tooltip=\"\"\"$tooltip$\"\"\">\n<$wikify name=\"timestampState\" text=\"{{$:/config/TimestampDisable}}\">\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=\"yes\"/>\n<$action-listops $tags=\"$add-remove$\" />\n$btntext$\n<<mytip>>\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=<<timestampState>>/>\n</$wikify>\n</$button>\n</$set>\n</$vars>\n\\end\n\n\\define teBtnEdit(sendmessage:\"tm-edit-tiddler\",class:\"\")\n<$wikify name=\"tt\" text=<<telang Edit>>>\n   <$button tooltip=<<tt>> class=\"te-btn-action te-edit $class$\">\n<$action-sendmessage $message=\"$sendmessage$\" $param=<<currentTiddler>> />\n{{$:/core/images/edit-button}}\n</$button>\n</$wikify>\n\\end\n\n\\define teBtnEditShowModified(sendmessage:\"tm-edit-tiddler\",class:\"\")\n<$wikify name=\"tt\" text=<<telang Edit>>>\n   <$button tooltip=<<tt>> class=\"te-btn-action te-edit $class$\">\n<$action-sendmessage $message=\"$sendmessage$\" $param=<<currentTiddler>> />\n{{$:/core/images/edit-button}}<span class=\"te-tip\"><$view tiddler=<<currentTiddler>> field=\"modified\" format=\"date\" template=\"YYYY-0MM-0DD 0hh:0mm\"/></span>\n</$button>\n</$wikify>\n\\end\n\n\\define teBtnPrio(btntext,priority,prioritylist:\"$:/plugins/telmiger/lib/telements/buttons\",tooltip,class:\"\")\n<$set name=\"nextprio\" filter=\"\"\"[list[$prioritylist$]nth[$priority$]]\"\"\">\n<$wikify name=\"next\" text=\"$tooltip$ <<nextprio>>\">\n<$button tooltip=<<next>> class=\"te-btn-action te-prio prio$priority$ $class$\">\n<$action-listops $field=\"priority\" $filter=<<nextprio>>/>\n$btntext$<span class=\"te-prionr\">$priority$</span>\n</$button>\n</$wikify>\n</$set>\n\\end\n\n\\define teBtnPrioPopup(tiddler,btntext,priority,prioritylist:\"$:/plugins/telmiger/lib/telements/buttons\",tooltip:\"change priority\",class:\"\")\n<$set name=\"qualstate\" value=<<qualify \"$:/state/reveal_priopop_$tiddler$_\">> >\n<$reveal type=\"nomatch\" state=<<qualstate>> text=\"show\" class=\"te-btn-reveal\">\n<$button tooltip=\"\"\"$tooltip$\"\"\" set=<<qualstate>> setTo=\"show\" class=\"te-btn-action te-prio prio$priority$ $class$\">\n$btntext$<span class=\"te-prionr\">$priority$</span>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<qualstate>> text=\"show\" class=\"te-btn-reveal\">\n<$button tooltip=\"close popup\" class=\"te-btn-action te-prio prio$priority$ $class$\">\n<$action-deletetiddler $tiddler=<<qualstate>>/>\n$btntext$<span class=\"te-prionr\">$priority$</span>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<qualstate>> text=\"show\">\n<$wikify name=\"tt\" text=\"set prio\">\n  <$macrocall $name=\"tePrioList\" tiddler=\"\"\"$tiddler$\"\"\" icon=\"{{$:/core/images/star-filled}}\" priorityfield=\"priority\" prioritylist=\"\"\"$prioritylist$\"\"\" tooltip=<<tt>> class=\"\" state=<<qualstate>>/>\n</$wikify>\n</$reveal>\n</$set>\n\\end\n\n\\define tePrioList(tiddler,prioritylist:\"_false_\",priorityfield:\"_false_\",icon:\"{{$:/core/images/star-filled}}\",state)\n<$vars priotid=\"\"\"$prioritylist$\"\"\" tid=\"\"\"$tiddler$\"\"\">\n<$set name=\"prioOld\" filter=\"[<currentTiddler>get[$priorityfield$]]\">\n<div class=\"te-prio-popup\">\n<ul class=\"te-prio-list\">\n<$list filter=\"[list<priotid>sort[]] -[<prioOld>]\" variable=\"prio\" emptyValue=\"error: no priorities in list field of $tiddler$\">\n<li>\n    <$macrocall $name=\"teBtnPrioSet\" tiddler=<<tid>> priority=<<prio>> priorityfield=\"\"\"$priorityfield$\"\"\" tooltip=\"set as prio\" icon=\"\"\"$icon$\"\"\" class=\"\" state=\"\"\"$state$\"\"\"/>\n</li>\n</$list>\n</ul>\n</div>\n</$set>\n</$vars>\n\\end\n\n\\define teBtnPrioSet(tiddler,priority,priorityfield,tooltip,icon,class:\"\",state)\n<$vars prio=\"\"\"$priority$\"\"\" qualstate=\"\"\"$state$\"\"\">\n<$button tooltip=\"\"\"$tooltip$\"\"\" class=\"te-btn-action te-prio prio$priority$ $class$\">\n<$wikify name=\"timestampState\" text=\"{{$:/config/TimestampDisable}}\">\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=\"yes\"/>\n<$action-listops $tiddler=\"\"\"$tiddler$\"\"\" $field=$priorityfield$ $filter=<<prio>>/>\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=<<timestampState>>/>\n<$action-deletetiddler $tiddler=<<qualstate>>/>\n$icon$<span class=\"te-prionr\"><<prio>></span>\n</$wikify>\n</$button>\n</$vars>\n\\end\n\n\\define teBtnIcons(label,icon,hovericon)\n<span class=\"te-btn-label\">\"\"\"$label$\"\"\"</span>\n<span class=\"te-btn-icon\"><$transclude tiddler=\"\"\"$icon$\"\"\"/></span>\n<span class=\"te-btn-hovericon\"><$transclude tiddler=\"\"\"$hovericon$\"\"\"/></span>\n\\end\n\n<!-- !! Macros to produce nice buttons\n\nOptimize: Rewire field \"priority\" to a variable $saveto$?\n\n* teBtnDelete\n** delete a given tiddler – show a confirmation request first\n** teBtnDelete1 is my first try to implement this without using existing core as a blueprint.\n* teBtnHint(btntext,message,tooltip,tip,class:\"\")\n** add a message\n* teBtnTagListops(btntext,add-remove,tooltip,tip,class:\"\")\n** add-remove: add and remove tags in one statement \"addthis -removethat\"\n** does not update the modification date as of TW 5.1.14\n* teBtnEdit(sendmessage:\"tm-edit-tiddler\",class:\"\") \n** tiddler is currentTiddler\n* teBtnEditShowModified(sendmessage:\"tm-edit-tiddler\",class:\"\") – used in  $:/plugins/telmiger/listreveal/readme \n** shows modified timestamp on hover\n** tiddler is currentTiddler\n* teBtnPrio(btntext,priority,prioritylist:\"$:/plugins/telmiger/lib/telements/buttons\",tooltip,class:\"\")\n** let the user cycle through a list of choices (priorities) from the //list// field of a tiddler  \n* teBtnPrioPopup(tiddler,btntext,priority,prioritylist:\"$:/plugins/telmiger/lib/telements/buttons\",tooltip:\"change priority\",class:\"\")\n** let the user select a priority from a list of choices saved in the //list// field of a tiddler  \n* tePrioList – a helper macro for teBtnPrioPopup\n* teBtnPrioSet – a helper macro for teBtnPrioPopup\n* teBtnIcons(label,icon,hovericon) – create a set of spans for buttons with icons\n\n-->\n",
            "title": "$:/plugins/telmiger/lib/telements/buttons",
            "tags": "ToDoComponents $:/tags/Macro MyMacros Listreveal",
            "prio": "",
            "modifier": "Thomas Elmiger",
            "modified": "20170713202614284",
            "list": "3 1 2"
        },
        "01 Listreveal List Setup": {
            "created": "20170222232934553",
            "creator": "Thomas Elmiger",
            "text": "Explanations for the code of $:/plugins/telmiger/listreveal/readme – you can clone the linked tiddler and adapt it step by step to create your own listreveal project. The filter statement is a good point to start:\n\n```\n<$set name=\"listfilter\" \n   value=\"\"\"[tag[Listreveal]!is[system]sort[title]]\"\"\">\n<ul class=\"te-list\">\n<$list filter=<<listfilter>>>\n```\nAlways use a variable called //listfilter// to create your list. The list-based tag manager (see [[03 Context Tagging]]) is depending on this convention.\n\nIt is recommended to use the CSS classes you see in this example – add your own to change the looks.\n\n```\n<$set name=\"tidTitle\" value={{!!title}}>\n   <li class=\"todo-item te-flex-item\">\n      <span class=\"te-flex-item te-flex-half-full\">\n         <span class=\"te-flex-item te-flex-content te-flex-left\">\n   <$link to={{!!title}}><$view field=\"title\"/></$link>\n         </span>\n      </span>\n```\nThe styling relies on [[CSS3 flexbox|https://scotch.io/tutorials/a-visual-guide-to-css3-flexbox-properties]]. These spans help to make your list as mobile friendly as possible.\n\n```\n      <span class=\"te-flex-item te-flex-half-full\">\n         <span class=\"te-flex-item te-flex-content te-flex-right\">\n            <<teBtnEditShowModified>>\n```\nThis macro produces an edit button. It shows the tiddler’s modified date when the mouse hovers over it.\n\n```\n<$wikify name=\"cl\" text=<<telang close>> >\n<$wikify name=\"tt\" text=<<telang Details>> >\n   <$macrocall $name=\"listrevealButton\" title=<<tidTitle>> tooltip=<<tt>> close=<<cl>>/>\n</$wikify>\n</$wikify>\n```\nThis macrocall produces the button on the right side that opens and closes the tiddlers.\n\nThe variables //cl// and //tt// get predefined translations from the language tiddlers that are part of this plugin. You can replace the tooltip for opening (attribute //tooltip//) and closing (attribute //close//) with your own texts.\n\n```\n         </span>\n      </span>\n<$wikify name=\"tpl\" text=<<telang date-created-tmpl>> >\n   <$macrocall $name=\"listrevealContent\" title=<<tidTitle>> datetime=<<tpl>>/>\n</$wikify>\n```\nThis macrocall produces the text content and some details of your tiddler.\n\nAgain the variable //tpl// gets a predefined translation from the integrated language tiddlers. It is used as a [[date format template|http://tiddlywiki.com/#DateFormat]] when the created and modified timestamps of the tiddler are displayed. This attribute is optional.\n\n//tidTitle// is the variable for the title of your list elements (your tiddlers). It is set at the beginning (see second snippet).\n\n```\n   </li>\n</$set>\n</$list>\n</ul>\n</$set>\n```\nThe whole list is presented as an unordered HTML list `<ul>` with tiddlers as list items `<li>`.",
            "title": "01 Listreveal List Setup",
            "tags": "Listreveal",
            "modified": "20170224201650800",
            "modifier": "Thomas Elmiger"
        },
        "02 Edit Button": {
            "created": "20170222233632994",
            "creator": "Thomas Elmiger",
            "text": "Optionally you can add a lock/unlock button to switch your list into edit mode (all listreveal lists in your wiki to be precise). This presents the tiddler content in an editor field where you can change it using wikitext formatting. \n\n```\nUse this button to enable editing: <<listrevealBtnEdit>>\n```\nAdd your own parameter `class:\"your-class\"` for styling and positioning via CSS. The icon has a so called dirty indicator implemented: it turns red if you have unsaved changes.",
            "title": "02 Edit Button",
            "tags": "Listreveal",
            "modified": "20170224192922331",
            "modifier": "Thomas Elmiger"
        },
        "03 Context Tagging": {
            "created": "20170224195102124",
            "creator": "Thomas Elmiger",
            "text": "When you look inside a tiddler in the list using the ellipsis (…) button on the right, you see the tiddler’s tags, text and timestamps. \n\n{{$:/core/images/tag-button}}\n\nThe tags can be changed using the tag label icon. A unique feature called context tagging or list-based tagging appears in a popup. From there you are able to add suggested tags based on the other tiddlers in your list or remove single tags from the tiddler. ",
            "title": "03 Context Tagging",
            "tags": "Listreveal",
            "modified": "20170224195644691",
            "modifier": "Thomas Elmiger"
        },
        "04 Checklists": {
            "created": "20170224200058192",
            "creator": "Thomas Elmiger",
            "text": "This plugin comes with CSS to support checklists generated via a plugin by Tony Grosinger – indentation and the display of user interface elements to add and delete items should be optimized for use inside of listreveal lists.\n\n[ ] Install the plugin from https://grosinger.net/tw5-checklist/\n[ ] Make your first checklist\n[x] Read these hints on checklists",
            "todo-done": "20160917214708",
            "todo-deadline": "20160912220000000",
            "title": "04 Checklists",
            "tags": "Listreveal Usability Plugins",
            "priority": "2",
            "modifier": "Thomas Elmiger",
            "modified": "20170224201034767"
        },
        "05 Translations": {
            "text": "The following language tiddlers are shipped with this plugin: \n\n<ul>\n<$list filter=\"\"\"[all[tiddlers+shadows]prefix[$:/plugins/telmiger/lib/languages/]sort[]]\"\"\">\n<li>\n{{##ID}}:  <$link to={{!!title}}><$view field=\"title\"/></$link>\n</li>\n</$list>\n</ul>\n\nSet your language in $:/plugins/telmiger/lib/language (I hope I will find a way to use the language from the TW settings in the future).\n\nTo implement a new language you could clone and adapt one of them. They are used for other plugins too, this is why they contain way more text than needed for listreveal.\n",
            "title": "05 Translations",
            "tags": "Listreveal Translation",
            "modifier": "Thomas Elmiger",
            "modified": "20170714214826478",
            "creator": "Thomas Elmiger",
            "created": "20170224202239839"
        },
        "$:/plugins/telmiger/lib/languages/de-DE": {
            "created": "20160823202222125",
            "creator": "Thomas Elmiger",
            "text": "ID:Deutsch (Deutschland)\ndate-created-tmpl: {{$:/language/Tiddler/DateFormat}}\ndate-created-tmpl-info: DD. MMM YYYY, 0hh:0mm Uhr\ndate-deadline-tmpl: 0DD.0MM.YYYY\n<!-- strings: strings start here -->\nAdd-tag: Tag hinzufügen\nAdd-tags-from-the-list: Tags aus der Liste hinzufügen\nall: alle\nall-projects: alle Projekte\narchive: archivieren\nAre-you-sure?: Bist du sicher?\nChange-deadline: Fälligkeit ändern\nchange-priority: Priorität ändern\nchange-priority-to: Priorität ändern auf\nClick-to-edit-title: Auf Titel klicken zum Bearbeiten!\nclose: Schließen\nClose: Schließe\ndays-back: Tage\nDetails: Details\nDo-it-again: Mach’s nochmal\nDo-now: Jetzt erledigen\nDone: Erledigt\nEdit: bearbeiten\nHide-list: Liste ausblenden\nlate: später\nManage-tags: Tag-Manager\nMove-down: Nach unten\nMove-up: Nach oben\nNew-ToDo-Item: Neue Aufgabe\nno.: Anz.\nNothing-to-do-?: Nichts zu tun? Erstelle eine Aufgabe mit diesem Knopf\nPick-a-task-: Wähle eine Aufgabe aus der Liste unten mit diesem Knopf\nPrint-window-hint: In neuem Fenster öffnen zum Drucken\nProject: Projekt:\nRecycle: Nochmals verwenden\nRelax-Nothing-to-do: Schön. Es gibt nichts zu tun.\nRemove-deadline: Fälligkeit löschen\nRemove-tags?: Tags entfernen?\nReset: Zurücksetzen\nsearch: Suche\nSend-it-down: doch nicht jetzt\nSet-deadline: Termin festlegen\nShow-list: Liste anzeigen\nSort-by-deadline: Nach Termin sortieren\nSort-by-modification: Nach letzter Änderung sortieren\nSort-by-priority: Alle nach Priorität sortieren\nSort-by-title: Alle nach Titel sortieren\nsorted-by-deadline: sortiert nach Enddatum\nsorted-by-modification: sortiert nach letzter Änderung\nsorted-by-priority: sortiert nach Priorität\nsorted-by-title: sortiert nach Titel\nSwitch-to-edit-mode: Bearbeiten ermöglichen\nSwitch-to-safe-mode: Bearbeiten ausschalten\nTake-it-up: Rauf damit!\nThis-is-done: Das ist erledigt\nThis-week: Diese Woche\ntoday: heute\nToday: Heute\nToDo: ToDo\nToDo-template-title: Neue Aufgabe\nToDo-template-text: Motivation: Beschreibung * Tests/Abnahmekriterien\nTomorrow: Morgen\nUuups: Hoppla!\n<!-- comments: Kommentare -->\n<!-- translation requires: $:/plugins/telmiger/lib/telang  -->\n<!-- use translated term: <<telang term>> -->",
            "type": "application/x-tiddler-dictionary",
            "todo-done": "20160821121525",
            "title": "$:/plugins/telmiger/lib/languages/de-DE",
            "tags": "Translation ToDoComponents",
            "modifier": "Thomas Elmiger",
            "modified": "20170713195705076"
        },
        "$:/plugins/telmiger/lib/languages/de-CH": {
            "created": "20160821100821036",
            "creator": "Thomas Elmiger",
            "text": "ID:Deutsch (Schweiz)\ndate-created-tmpl: {{$:/language/Tiddler/DateFormat}}\ndate-created-tmpl-info: DD. MMM YYYY, 0hh:0mm Uhr\ndate-deadline-tmpl: 0DD.0MM.YYYY\n<!-- strings: strings start here -->\nAdd-tag: Tag hinzufügen\nAdd-tags-from-the-list: Tags aus der Liste hinzufügen\nall-projects: alle Projekte\narchive: archivieren\nAre-you-sure?: Bist du sicher?\nChange-deadline: Fälligkeit ändern\nchange-priority: Priorität ändern\nchange-priority-to: Priorität ändern auf\nClick-to-edit-title: Auf Titel klicken zum Bearbeiten!\nclose: Schliessen\nClose: Schliesse\ndays-back: Tage zurück\nDetails: Details\nDo-it-again: Mach’s nochmal\nDo-now: Jetzt erledigen\nDone: Erledigt\nEdit: bearbeiten\nHide-list: Liste ausblenden\nlate: später\nManage-tags: Tag-Manager\nMove-down: Nach unten\nMove-up: Nach oben\nNew-ToDo-Item: Neue Aufgabe\nno.: Anz.\nNothing-to-do-?: Nichts zu tun? Erstelle eine Aufgabe mit diesem Knopf\nPick-a-task-: Wähle eine Aufgabe aus der Liste unten mit diesem Knopf\nPrint-window-hint: In neuem Fenster öffnen für Druck\nProject: Projekt:\nRecycle: Nochmals verwenden\nRelax-Nothing-to-do: Schön. Es gibt nichts zu tun.\nRemove-deadline: Fälligkeit löschen\nRemove-tags?: Tags entfernen?\nReset: Zurücksetzen\nsearch: Suche …\nSend-it-down: doch nicht jetzt\nSet-deadline: Termin festlegen\nShow-list: Liste anzeigen\nSort-by-deadline: Nach Termin sortieren\nSort-by-modification: Nach letzter Änderung sortieren\nSort-by-priority: Alle nach Priorität sortieren\nSort-by-title: Alle nach Titel sortieren\nsorted-by-deadline: sortiert nach Enddatum\nsorted-by-modification: sortiert nach letzter Änderung\nsorted-by-priority: sortiert nach Priorität\nsorted-by-title: sortiert nach Titel\nSwitch-to-edit-mode: Bearbeiten ermöglichen\nSwitch-to-safe-mode: Bearbeiten ausschalten\nTake-it-up: Rauf damit!\nThis-is-done: Das ist erledigt\ntoday: heute\nToday: Heute\nToDo: ToDo\nToDo-template-title: ToDo Item\nToDo-template-text: Motivation: Description * Tests/Acceptance criteria\nThis-week: Diese Woche\nTomorrow: Morgen\nUuups: Hoppla!\n<!-- comments: Kommentare -->\n<!-- translation requires: $:/plugins/telmiger/lib/telang  -->\n<!-- use translated term: <<telang term>> -->",
            "type": "application/x-tiddler-dictionary",
            "todo-done": "20160821121525",
            "title": "$:/plugins/telmiger/lib/languages/de-CH",
            "tags": "Translation ToDoComponents",
            "modifier": "Thomas Elmiger",
            "modified": "20170713195742337"
        },
        "$:/plugins/telmiger/listreveal/icon": {
            "created": "20170224201850969",
            "text": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"64.003\" height=\"64.003\" viewBox=\"-500.5 395.5 64.003 64.003\"><path d=\"M-468.5 396.5l26.426 15.5v31l-26.425 15.5-26.426-15.5v-31l26.427-15.5z\"/><path fill=\"#FFF\" d=\"M-485.996 419.088h34.99v16.824h-34.99z\"/><path fill=\"#E2001A\" d=\"M-468.5 405.5c-12.15 0-22 9.85-22 22s9.85 22 22 22 22-9.85 22-22-9.85-22-22-22zm13.11 21.637c-1.022.682-2.674 1.023-4.954 1.023h-2.838c-1.505 0-2.598.3-3.28.9-.68.6-1.22 1.804-1.622 3.615 0 0-.063.526-.178.526s-.13-.31-.184-.562c-.056-.263-.14-.59-.256-.977-.224-.758-.447-1.332-.67-1.72-.27-.482-.613-.87-1.024-1.165-.412-.294-.883-.47-1.413-.528l-.74-.088h-3.637c-2.178 0-3.796-.343-4.855-1.024-1.764-1.12-2.71-3.24-2.842-6.357-.01-.25 0-.48.047-.772h.208c.142 1.41 1.304 2.502 2.158 3.274.853.77 2.222 1.155 4.104 1.155h3.3c1.896 0 3.28.436 4.158 1.306.79.786 1.31 2.017 1.56 3.69.028.183.012.263.064.263.053 0 .04-.09.06-.278.253-2.173 1.094-3.627 2.522-4.363.88-.46 2.28-.676 4.196-.652l2.257.035c1.527.023 2.814-.278 3.86-.908 1.046-.63 2.285-1.803 2.425-3.52h.21c.065.17.057.56.045.828-.13 3.105-1.023 5.206-2.68 6.3z\"/></svg>",
            "type": "image/svg+xml",
            "title": "$:/plugins/telmiger/listreveal/icon",
            "tags": "",
            "modified": "20170224201914042"
        },
        "$:/plugins/telmiger/listreveal/readme": {
            "created": "20170222172249206",
            "creator": "Thomas Elmiger",
            "text": "!! Good to Know\n\nA list of things you should know about this plugin. Click the ellipsis button on the right […] to see more.\n\nUse this button to enable editing: <<listrevealBtnEdit>>\n\n---\n\n<$set name=\"listfilter\" value=\"\"\"[all[shadows]prefix[0]sort[title]]\"\"\">\n<ul class=\"te-list\">\n<$list filter=<<listfilter>>>\n<$set name=\"tidTitle\" value={{!!title}}>\n   <li class=\"todo-item te-flex-item\">\n      <span class=\"te-flex-item te-flex-half-full\">\n         <span class=\"te-flex-item te-flex-content te-flex-left\">\n   <$link to={{!!title}}><$view field=\"title\"/></$link>\n         </span>\n      </span>\n      <span class=\"te-flex-item te-flex-half-full\">\n         <span class=\"te-flex-item te-flex-content te-flex-right\">\n            <<teBtnEditShowModified>>\n<$wikify name=\"cl\" text=<<telang close>> >\n<$wikify name=\"tt\" text=<<telang Details>> >\n   <$macrocall $name=\"listrevealButton\" title=<<tidTitle>> tooltip=<<tt>> close=<<cl>>/>\n</$wikify>\n</$wikify>\n         </span>\n      </span>\n<$wikify name=\"tpl\" text=<<telang date-created-tmpl>> >\n   <$macrocall $name=\"listrevealContent\" title=<<tidTitle>> datetime=<<tpl>>/>\n</$wikify>\n   </li>\n</$set>\n</$list>\n</ul>\n</$set>",
            "title": "$:/plugins/telmiger/listreveal/readme",
            "tags": "Listreveal",
            "modified": "20170224210736677",
            "modifier": "Thomas Elmiger"
        },
        "$:/plugins/telmiger/listreveal/tags": {
            "text": "\\define lrTaglist(tiddler:\"_false_\")\n<div class=\"lr-tag-popup\">\n<<telang Add-tags-from-the-list>> \n<$wikify name=\"tt\" text=<<telang Add-tag>>>\n<ul class=\"lr-tags-add\">\n<$list filter=\"[list[$:/temp/lr-tags-$tiddler$!!lr-tagsinlist]sort[]] -[list[$:/temp/lr-tags-$tiddler$!!lr-tagstoremove]]\" variable=\"tag\">\n<li>\n   <$macrocall $name=\"teBtnTagAddRemove\" btntext=<<tag>> add=<<tag>> tiddler=\"\"\"$tiddler$\"\"\" tooltip=<<tt>>/> \n</li>\n</$list>\n</ul>\n</$wikify>\n<<telang Remove-tags?>> \n<$wikify name=\"tt\" text=<<telang Are-you-sure?>>>\n<ul class=\"lr-tags-remove\">\n<$list filter=\"[list[$:/temp/lr-tags-$tiddler$!!lr-tagstoremove]sort[]]\" variable=\"tag\">\n<li>\n   <$macrocall $name=\"teBtnTagAddRemove\" btntext=<<tag>> remove=<<tag>> tiddler=\"\"\"$tiddler$\"\"\" tooltip=<<tt>>/> \n</li>\n</$list>\n</ul>\n</$wikify>\n</div>\n\\end\n\n\\define teBtnTagAddRemove(btntext,add:\"_false_\",remove:\"_false_\",tooltip,class:\"\",tiddler:\"_false_\")\n<$vars tip=\"\"\"$tip$\"\"\" tiddler=\"\"\"$tiddler$\"\"\" btnclass=\"te-popup-action $class$\" add=\"\"\"$add$\"\"\" remove=\"\"\"$remove$\"\"\">\n<$set name=\"actiontid\" filter=\"[<tiddler>!prefix[_false_]]\" value=<<tiddler>> emptyValue=<<currentTiddler>>>\n<$set name=\"subfilter\" filter=\"[<add>!prefix[_false_]]\" value=\"[[$add$]]\" emptyValue=\"-[[$remove$]]\">\n<$wikify name=\"at\" text=<<actiontid>>>\n<$button class=<<btnclass>> tooltip=\"\"\"$tooltip$\"\"\">\n<$wikify name=\"timestampState\" text=\"{{$:/config/TimestampDisable}}\">\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=\"yes\"/>\n<$action-listops $tiddler=<<at>> $field=\"tags\" $subfilter=<<subfilter>>/>\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=<<timestampState>>/>\n<$action-setfield $tiddler=\"\"\"$(popstate)$\"\"\" $field=\"text\" $value=\"\"/>\n   <$text text=\"\"\"$btntext$\"\"\">\n</$wikify>\n</$button>\n</$wikify>\n</$set>\n</$set>\n</$vars>\n\\end\n\n\\define lrBtnAddTags(tiddler,class:\"\")\n<$vars tiddler=\"\"\"$tiddler$\"\"\" temptags=\"$:/temp/lr-tags-$tiddler$\">\n<$wikify name=\"tt\" text=<<telang Manage-tags>>>\n<$wikify name=\"tagfilter\" text=\"<<listfilter>> +[tags[]sort[]]\">\n<$button popup=<<qualify \"$:/state/popup/lr-tags-$tiddler$\">> class=\"\"\"te-btn-action addtag $class$\"\"\" tooltip=<<tt>> >\n<$action-listops $tiddler=<<temptags>> $field=\"lr-tagsinlist\" $filter=<<tagfilter>>/>\n<$action-listops $tiddler=<<temptags>> $field=\"lr-tagstoremove\" $filter=\"[<tiddler>tags[]]\"/>\n<$action-setfield $tiddler=<<temptags>> text=<<lrTaglist \"\"\"$tiddler$\"\"\">>/>\n{{$:/core/images/tag-button}}\n</$button>\n</$wikify>\n</$wikify>\n\\end\n\n\\define lrTagsPopup(tiddler)\n<$set name=\"popstate\" value=<<qualify \"$:/state/popup/lr-tags-$tiddler$\">>>\n<$reveal tag=\"div\" class=\"tc-block-dropdown tc-search-drop-down tc-popup-handle\" state=<<popstate>> type=\"nomatch\" text=\"\" default=\"\">\n{{$:/temp/lr-tags-$tiddler$}}\n</$reveal>\n</$set>\n\\end\n\n\\define lrBtnTags(class:\"\")\n<span class=\"lr-flex-wrapper\">\n<$wikify name=\"tiddler\" text=<<currentTiddler>>>\n   <$macrocall $name=\"lrBtnAddTags\" tiddler=<<tiddler>> class=\"\"\"$class$\"\"\"/>\n   <$macrocall $name=\"lrTagsPopup\" tiddler=<<tiddler>>/>\n</$wikify>\n</span>\n\\end\n\n\\define listreveal-tags()\n<span class=\"listreveal-tags te-flex-item\">\n<<lrBtnTags muted>>\n<span class=\"te-tags\">\n<$list filter=\"[all[current]tags[]sort[title]]\" template=\"$:/core/ui/TagTemplate\" storyview=\"pop\"/>\n</span>\n</span>\n\\end\n\n<!-- !! Listreveal Tags\n\n* lrTaglist\n** show a popup where tags can be added or removed\n* teBtnTagAddRemove\n** show a button to add/remove a tag from a tiddler \n** does not update the modification date as of TW 5.1.14\n* lrBtnTags\n** lrBtnAddTags: show the button (and save the tags that could be added/removed)\n** lrTagsPopup: reveal or hide the popup\n* listreveal-tags\n** put this in your revealed section to show the button and the existing tags\n\n-->",
            "title": "$:/plugins/telmiger/listreveal/tags",
            "tags": "$:/tags/Macro MyMacros ToDoComponents Listreveal ToDoArchive",
            "modifier": "Thomas Elmiger",
            "modified": "20170503060202645",
            "datetime": "",
            "creator": "Thomas Elmiger",
            "created": "20160915193628399"
        },
        "$:/plugins/telmiger/lib/telements.css": {
            "created": "20160816210925818",
            "creator": "Thomas Elmiger",
            "text": "/* library of reusable (t)elements */\n\n/* header */\n\nheader {\n   background-color: <<colour notification-background>>;\n   padding: 10px;\n   margin: 0 0 0 -10px;\n}\n\n/* te-summary as seen in extract macro */\n\n.te-summary {\n   width: 100%;\n   background-color: <<colour code-background>>;\n}\n\n/* flexbox layout */\n\n.te-flex-item {\n   display: flex;\n   flex-direction: row;\n   flex-wrap: wrap;\n   justify-content: space-between;\n   align-items: flex-start;\n   height: auto;\n}\n\n.te-flex-half-full {\n   flex-grow: 1;\n   min-width: 49%;\n}\n\n.te-flex-left {\n   justify-content: flex-start;\n}\n\n.te-flex-right {\n   justify-content: flex-end;\n}\n\n.te-flex-content {\n   width: 100%;\n}\n\n/* lists */\n\n.te-list {\n   list-style: outside none none;\n   margin: 0 0 1em 0;\n   padding: 0;\n   line-height: 2;\n}\n\n.te-list .te-flex-item {\n   border-top: 1px solid rgba(1,1,1,0);\n   border-bottom: 1px solid rgba(1,1,1,0);\n   margin-bottom: -1px;\n}\n\n.te-list .te-flex-item a.tc-tiddlylink-resolves {\n    flex-grow: 3;\n}\n\n\n/* buttons */\n/* big buttons */\n\n.te-btn-big {\n   display: inline-block;\n   position: absolute;\n   right: 42px;\n   height: 29px;\n   min-width: 2.2em;\n   background: none;\n   background-color: <<colour sidebar-tab-background-selected>>;\n   border: 1px solid lightgray;\n   font-size: 0.85em;\n   line-height: 0.5;\n   margin-left: 10px;\n   padding: 3px 6px 1px;\n}\n.te-btn-big:hover {\n   background-color: <<colour sidebar-tab-background>>;\n}\n.te-btn-big.te-inline {\n    position: relative;\n    left: 0px;\n    vertical-align: bottom;\n}\n/* in tabs e.g. plugin info */\n.tc-tab-set .te-btn-big {\n   right: 62px;\n}\n\n/* standard save button */\n\nspan.te-btn-big button {\n   margin: -2px 0 0 5px;\n   padding: 0;\n   background: none;\n   border: none;\n}\nspan.te-btn-big button svg {\n   height: 0.9em;\n}\n\n/* color overlay hack */\n\nbutton.te-btn-big.te-create::before {\n   background-color: <<colour download-background>>;\n   content: \"\";\n   position: absolute;\n   top: 0; \n   left: 0;\n   width: 100%; \n   height: 100%;  \n   opacity: 0.33; \n}\nbutton:hover.te-btn-big.te-create::before {\n   opacity: 0.66; \n}\n\n.te-btn-big.unlocked {\n   background-color: <<colour sidebar-tab-background>>;\n}\n.te-btn-big.unlocked:hover {\n   background-color: <<colour sidebar-tab-background-selected>>;\n}\n.te-btn-big.te-create {\n   background-color: unset;\n}\n.te-btn-big .tc-image-locked-padlock, \n.te-btn-big .tc-image-unlocked-padlock {\n   margin-bottom: 3px;\n}\n.te-btn-big .tc-image-new-button {\n   margin-bottom: 2px;\n   margin-top: 1px;\n}\n.te-btn-big .tc-image-unfold, \n.te-btn-big .tc-image-fold {\n   margin-top: 3px;\n}\n\n\n/* action buttons */\n\n.te-btn-action {\n   background: none;\n   border: none;\n   margin: 0.3em 0.3em 0 0.6em;\n   padding: 0;\n}\n.te-btn-action svg {\n   fill: #333;\n}\n.te-list .te-btn-action.muted svg {\n   opacity:0.3;\n}\n.te-list .te-btn-action:hover svg {\n   opacity:0.6;\n}\n\n.te-btn-action.addtag svg {\n   height: 1.5em;\n   width: 1.5em;\n}\n\n.te-btn-action.te-edit svg {\n   height: 1.25em;\n   width: 1.25em;\n   margin-bottom: -2px;\n}\n\n.te-btn-action.te-prio {\n   background-color: #777;\n   width: 18px;\n   height: 18px;\n   margin-top: 3px;\n   border: 3px solid white;\n   box-sizing: content-box;\n   border-radius: 5px;\n}\n.te-btn-action.te-prio.prio2 {\n   background-color: #999;\n}\n.te-btn-action.te-prio.prio3 {\n   background-color: #bbb;\n}\n.te-btn-action.te-prio.prio4 {\n   background-color: #ddd;\n}\n\n/* action button in te-tip */\n\n.te-tip .te-btn-action {\n    margin-left: 0.4em;\n    padding-bottom: 25px;\n}\n\n\n/* delete button and delete popup */\n\n.te-btn-delete svg.tc-image-delete-button {\n   width: 1.1em;\n   height: 1.45em;\n}\n\n/* unused !!! */\n.te-delete {\n   background-color: #faa;\n}\n.te-popup-dark {\n   padding: 0.5em;\n   background-color: #999;\n   text-align: center;\n}\n\n\n/* popup action buttons */\n\n.te-popup-action {\n    background: none;\n    border: none;\n    padding: 0;\n}\n\n/* date picker button */\n\n.te-btn-action.todo-deadline {\n    display: inline-block;\n    margin-top: 2px;\n    text-align: center;\n    width: 24px;\n}\n\n.te-btn-action.todo-deadline:hover {\n   cursor: pointer;\n   fill: #000;\n}\n.te-btn-action.todo-deadline span svg {\n    height: 1.33em;\n    width: 1.33em;\n    margin-bottom: -3px;\n    opacity: 0.6;\n    display: inline-flex;\n    position: absolute;\n    margin-left: -0.5em;\n    margin-top: 3px;\n}\n\n/* label and icons */\n.te-btn-label {\n   font-size: 0;\n   height: 1px;\n   overflow: hidden;\n   display: block;\n}\n.te-btn-icon {\n   display: block;\n}\nbutton:hover .te-btn-icon {\n   display: none;\n}\n.te-btn-hovericon {\n   display: none;\n}\nbutton:hover .te-btn-hovericon {\n   display: block;\n}\n\n/* urgent indicators */\n\n.te-btn-action .urgent {\n    display: table-cell;\n    position: relative;\n    margin-left: 0;\n    left: 0em;\n    top: -10px;\n    font-size: 0.75em;\n    line-height: 1.25;\n    padding: 0 0.1em 0 0.1em;\n    max-width: 3.25em;\n}\n\n.urgent.late {\n   background-color: red;\n   color: white;\n}\n.urgent.today {\n   background-color: yellow;\n   color: red;\n}\n\n\n/* priority buttons */\n\n.te-btn-action.te-prio svg {\n   position: relative;\n   height: 1.65em;\n   width: 1.5em;\n   margin-top: -3px;\n   opacity: 0;\n   z-index: 101;\n}\n.te-btn-action.te-prio.prio1:hover svg {\n   opacity: 0.6;\n}\n.te-btn-action.te-prio.prio2:hover svg {\n   opacity: 0.5;\n}\n.te-btn-action.te-prio:hover svg {\n   opacity: 0.4;\n}\n.te-btn-action .te-prionr {\n   position: relative;\n   top: -1.5em;\n   width: 100%;\n   color: #fefefe;\n   font-size: 1em;\n   font-weight: 600;\n   text-align: center;\n}\n.te-btn-action.te-prio.prio1 .te-prionr, .te-btn-action.te-prio.prio2 .te-prionr,\n.te-btn-action.te-prio.prio3 .te-prionr {\n   color: #eee;\n}\n\n.te-prio-list {\n    list-style: none;\n    line-height: 1em;\n    padding: 1em 0 0 0;\n    margin: -1.5em 0 0 0;\n    background-color: <<colour sidebar-tab-background>>;\n    width: 43px;\n    position: absolute;\n    z-index: 25;\n    border: 1px solid <<colour sidebar-tab-border>>;\n    border-radius: 4px;\n}\n.te-list .te-prio-list {\n    margin: 1.75em 0 0 -2.5em;\n}\n\n.te-btn-reveal.tc-reveal {\n    height: 1em;\n}\n\n.te-linkbutton {\n   color: <<colour tiddler-link-foreground>>;\n   background-color: transparent;\n   border: 0;\n}\n\n\n/* big buttons positions */\n\n.te-first {\n   margin-right: 2px;\n}\n.te-second {\n   margin-right: 60px;\n}\n.te-third {\n   margin-right: 120px;\n}\n\n\n/* text */\n\n.te-text {\n   margin: 0 0.5em 0 0.5em;\n}\n.te-text.right {\n   margin-left: 1em;\n   margin-right: 0.5em;\n   right: 6em;\n}\n\n\n/* popup tip */\n\n.te-tip {\n   position: absolute;\n   display: none;\n   font-size: 15px;\n   line-height: 1.4;\n   white-space: nowrap;\n   padding: 0 3px 0 3px;\n   border: 1px solid <<colour notification-border>>;\n   border-radius: 3px;\n   background-color: <<colour notification-background>>;\n}\n\n.te-btn-big:hover .te-tip {\n   margin-left: -8em;\n   margin-top: -1.66em;\n   z-index: 100;\n   display: unset;\n}\n\n.te-btn-action:hover .te-tip,\n.te-created:hover .te-tip,\n.te-modified:hover .te-tip {\n   margin-left: -0.4em;\n   margin-top: -1.35em;\n   z-index: 100;\n   display: unset;\n}\n\n.te-text:hover .te-tip {\n   margin-left: -0.8em;\n   margin-top: -0.75em;\n   display: inline-flex;\n   z-index: 100;\n   display: inline-grid;\n   text-align: center;\n   line-height: 1.1;\n}\n\n.te-tip:hover span .te-tip, \n.te-text:hover .te-tip button .te-tip, \n.te-tip:hover button .te-tip {\n   display: none;\n}\n.te-tip:hover span:hover .te-tip, \n.te-tip:hover button:hover .te-tip  {\n   margin-top: -1.25em;\n   z-index: 101;\n   display: unset;\n}\n.te-tip span span svg {\n   margin-top: 0.25em;\n}\n\n/* meta info */\n\n.te-created, .te-modified {\n   position: relative;\n}\n\n/* images */\n\n.te-created svg, .te-modified svg {\n   max-height: 1.25em;\n   opacity: 0.6;\n   margin-bottom: -0.2em;\n}\n\n/* very small screens */\n\n@media (max-width: 500px) {\n   .te-btn-action {\n      margin: 0.3em 0.8em 0 0.5em;\n   }\n}",
            "title": "$:/plugins/telmiger/lib/telements.css",
            "tags": "$:/tags/Stylesheet Listreveal ToDoComponents ToDoArchive",
            "modifier": "Thomas Elmiger",
            "modified": "20170714223553671"
        },
        "$:/plugins/telmiger/lib/telements-print.css": {
            "text": "/* print optimisation for (t)elements */\n\n@media print {\n\n.te-noprint, \n.te-btn-action, .te-btn-action.muted, \n.te-btn-big, .te-btn-big.te-first, .te-btn-big.te-second, .te-btn-big.te-third,\n.te-edit, .te-to-top { \n   display: none;\n}\n\n/* header */\n\nheader {\n   background-color: transparent;\n}\n\n/* show buttons? reset display */\n/* big buttons */\n\n/* action buttons */\n\n.te-btn-action.todo-deadline, .te-btn-action.te-prio {\n   display: initial;\n}\n\n.te-btn-action.te-prio.prio1 span.te-prionr, \n.te-btn-action.te-prio.prio1 {\n   color: #efefef;\n}\n\n.te-btn-action.te-prio span.te-prionr, .te-btn-action.te-prio.prio2 span.te-prionr, \n.te-btn-action.te-prio.prio3 span.te-prionr, .te-btn-action.te-prio.prio4 span.te-prionr {\n   color: #ddd;\n}\n\n.te-btn-action.te-prio {\n   background-color: #ddd;\n   border: 3px solid black;\n}\n.te-btn-action.te-prio.prio2 {\n   background-color: #bbb;\n}\n.te-btn-action.te-prio.prio3 {\n   background-color: #999;\n}\n.te-btn-action.te-prio.prio4 {\n   background-color: #777;\n}\n\n/* date picker button */\n\n.te-btn-action.deadline span svg {\n   opacity: 0.66;\n}\n\n/* text */\n\n/* meta info */\n\n/* images */\n\n.te-created svg, .te-modified svg {\n   opacity: 0.6;\n}\n\n\n/* **** END of print optimisation **** */\n}\n",
            "title": "$:/plugins/telmiger/lib/telements-print.css",
            "tags": "$:/tags/Stylesheet Listreveal ToDoComponents",
            "modifier": "Thomas Elmiger",
            "modified": "20170711223138932",
            "creator": "Thomas Elmiger",
            "created": "20170201215840974"
        },
        "$:/plugins/telmiger/listreveal/lr": {
            "created": "20160811053433681",
            "creator": "Thomas Elmiger",
            "text": "\\define listrevealButton(title,tooltip:\"Details\",close:\"Close\",class:\"\")\n<$vars showclass=\"\"\"listreveal-btn-show te-noprint $class$\"\"\" hideclass=\"\"\"listreveal-btn-hide te-noprint $class$\"\"\">\n<$set name=\"qualstate\" value=<<qualify \"$:/state/listreveal_$title$_\">> >\n<$reveal type=\"nomatch\" state=<<qualstate>> text=\"visible\" animate=\"yes\" class=\"listreveal\">\n   <$button set=<<qualstate>> setTo=\"visible\" class=<<showclass>> tooltip=\"$tooltip$\">…</$button></$reveal>\n<$reveal type=\"match\" state=<<qualstate>> text=\"visible\" animate=\"yes\" class=\"listreveal\">\n   <$button class=<<hideclass>> tooltip=\"$close$\">&times;<$action-deletetiddler $tiddler=<<qualstate>> />\n   </$button></$reveal>\n</$set>\n</$vars>\n\\end\n\n\\define listrevealContent(title,mode:\"block\",datetime:\"YYYY-MM-DD\",state:\"_false_\")\n<$vars state=\"\"\"$state$\"\"\">\n<$set name=\"qualstate\" filter=\"[<state>!prefix[_false_]]\" value=<<state>> emptyValue=<<qualify \"$:/state/listreveal_$title$_\">> >\n<$reveal type=\"match\" state=<<qualstate>> text=\"visible\" animate=\"yes\" class=\"listreveal-open\">\n<<listreveal-tags>>\n<span class=\"listreveal-content\">\n<$reveal type=\"nomatch\" state=\"$:/state/listreveal-mode\" text=\"edit\">\n   <$transclude tiddler=\"\"\"$title$\"\"\" mode=\"$mode$\"/>\n</$reveal>\n<$reveal type=\"match\" state=\"$:/state/listreveal-mode\" text=\"edit\">\n   <$edit tiddler=\"\"\"$title$\"\"\" class=\"listreveal-edit-text\"/>\n</$reveal>\n</span>\n   <$macrocall $name=\"listreveal-meta\" tiddler=\"\"\"$title$\"\"\" datetime=\"\"\"$datetime$\"\"\"/>\n</$reveal>\n</$set>\n</$vars>\n\\end\n\n\\define listreveal-meta(tiddler,datetime)\n<span class=\"listreveal-meta te-flex-item\">\n   <span class=\"te-created\">{{$:/core/images/file}}<span class=\"te-tip\"><$view tiddler=\"\"\"$tiddler$\"\"\" field=\"creator\"/></span><$view tiddler=\"\"\"$tiddler$\"\"\" field=\"created\" format=\"date\" template=\"\"\"$datetime$\"\"\"/></span>\n   <span class=\"te-separator\"></span>\n<<listreveal-showmodified \"\"\"$tiddler$\"\"\" \"\"\"$datetime$\"\"\">>\n\\end\n\n\\define listreveal-showmodified(tiddler,datetime)\n<span class=\"te-modified\">{{$:/core/images/edit-button}}<span class=\"te-tip\"><$view tiddler=\"\"\"$tiddler$\"\"\" field=\"modifier\"/></span><$view tiddler=\"\"\"$tiddler$\"\"\" field=\"modified\" format=\"date\" template=\"\"\"$datetime$\"\"\"/></span>\n\\end\n\n\\define listrevealBtnEdit(class:\"\")\n<$reveal type=\"nomatch\" state=\"$:/state/listreveal-mode\" text=\"edit\">\n<$wikify name=\"tt\" text=<<telang Switch-to-edit-mode>>>\n<$button set=\"$:/state/listreveal-mode\" setTo=\"edit\" tooltip=<<tt>> class=\"te-btn-big locked $class$\">{{$:/core/images/locked-padlock}}</$button>\n</$wikify>\n</$reveal><$reveal type=\"match\" state=\"$:/state/listreveal-mode\" text=\"edit\">\n<$wikify name=\"tt\" text=<<telang Switch-to-safe-mode>>>\n<$button set=\"$:/state/listreveal-mode\" setTo=\"locked\" tooltip=<<tt>> class=\"te-btn-big unlocked $class$\"><$action-sendmessage $message=\"tm-auto-save-wiki\"/><span class=\"tc-dirty-indicator\">{{$:/core/images/unlocked-padlock}}</span></$button>\n</$wikify>\n</$reveal>\n\\end\n\n<!-- !! Listreveal Plugin Macros\n\n!!! Macros to reveal listed tiddlers\n* listrevealButton(title,tooltip:\"Details\",close:\"Close\",class:\"\")\n** produce a button to show/hide tiddler content\n*** parameters: tooltips for show/hide actions and a CSS-class\n*  listrevealContent(title,mode:\"block\",datetime:\"YYYY-MM-DD\",state:\"_false_\")\n** show the content of a listed tiddler\n** use the state parameter if you don’t want tu use the standard button\n*** set the state to //visible// to show tiddler content \n\n!!! Optional macro\n* listrevealBtnEdit(class:\"\")\n** produce a button to \n*** put all listed tiddlers in edit mode (wikitext editor)\n*** lock the tiddlers and auto-save the wiki after editing\n\n!!! Helper macros for listrevealContent\n* listreveal-meta(tiddler,datetime)\n** show meta information of a tiddler: dates for created/modified and creator/modifier (on hover)\n*** datetime: a [[date format|http://tiddlywiki.com/#DateFormat]] string \n* listreveal-showmodified(tiddler,datetime)\n** show modified timestamp and modifier name (on hover)\n*** datetime: a [[date format|http://tiddlywiki.com/#DateFormat]] string \n\n-->",
            "title": "$:/plugins/telmiger/listreveal/lr",
            "tags": "$:/tags/Macro Listreveal",
            "modifier": "Thomas Elmiger",
            "modified": "20170227172955605",
            "datetime": ""
        },
        "$:/plugins/telmiger/listreveal/lr.css": {
            "text": "/* listreveal styles */\n/* === optimised for: ul class=\"te-list\" and li class=\"te-flex-item\" === */\n\n\n/* buttons */\n\n.listreveal-btn-show, .listreveal-btn-hide {\n   margin: 0.2em 2px 0 0.5em;\n   color: <<colour sidebar-tab-foreground-selected>>;\n   width: 2.65em;\n   height: 1.8em;\n   border: none;\n}\n.listreveal-btn-show {\n   background-color: <<colour sidebar-tab-background-selected>>;\n   height: 1.6em;\n   width: 2.35em;\n   margin-left: 0.8em;\n}\n\n.listreveal-btn-hide, .listreveal-btn-show:hover {\n   background-color: <<colour sidebar-tab-background>>;\n}\n\n/* tiddler content */\n\n.listreveal-open {\n   height: auto; \n   width: 100%;\n   transition: none 0s ease 0s ;\n}\n\n.listreveal-content {\n   display: block;\n   color: <<colour foreground>>;\n   background-color: <<colour sidebar-tab-background-selected>>;\n   border-top: solid 1px <<colour sidebar-tab-border>>;\n   border-bottom: solid 1px <<colour sidebar-tab-border>>;\n   line-height: 1.5;\n   padding: 0.5em 1em 1em 1em;\n  -webkit-animation: expanditem 1s ease-in-out 0s running;\n  animation-name: expanditem;\n  animation-duration: 1s;\n  animation-timing-function: ease-in-out;\n  animation-delay: 0s;\n  animation-iteration-count: 1;\n  animation-direction: normal;\n}\n\n.listreveal-content pre {\n   background-color: <<colour tiddler-info-background>>;\n}\n\n/* edit mode */\n\n.listreveal-edit-text {\n  width: 100%;\n  border: 1px solid gray;\n  padding: 1em;\n}\n\n/* meta info */\n\n.listreveal-meta.te-flex-item, .listreveal-tags.te-flex-item {\n   color: <<colour sidebar-tab-foreground>>;\n   background-color: <<colour sidebar-tab-background>>;\n   border-bottom: 1px solid <<colour sidebar-tab-border>>;\n   border-top: 1px solid <<colour sidebar-tab-border>>;\n   margin-top: -1px;\n   margin-bottom: -1px;\n   font-size: 0.85em;\n}\n\n.listreveal-meta {\n   padding-right: 0.5em;\n}\n\n/* tags info */\n\n.listreveal-tags .te-tags button.tc-tag-label {\n   background-color: <<colour sidebar-tab-background-selected>>;\n}\n\n.lr-tag-popup {\n   margin-left: 1em;\n}\n.lr-tag-popup ul {\n   margin: 0;\n   padding: 0 1em 1em 0;\n   line-height: 1.75;\n   list-style: none;\n   font-weight: 600;\n}\n.lr-tag-popup ul li:hover{\n   color: <<colour tiddler-link-foreground>>;\n}\n.lr-tag-popup ul.lr-tags-remove li:hover{\n   color: <<colour dirty-indicator>>;\n}\n.lr-tags-add li button::before {\n   content: \"+&#8197;\";\n   font-size: 1.2em;\n   color: <<colour tiddler-link-foreground>>;\n}\n.lr-tags-remove li button::before {\n   content: \"&#215;&#8197; \";\n   font-size: 1.2em;\n   color: <<colour dirty-indicator>>;\n}\n\n@media (max-width: 960px) {\n}\n\n/* listreveal animation */\n\n@keyframes expanditem {\n  0% { \n      height: 0;\n      opacity: 0;\n  }\n  80.0% {\n      height: 60%;\n      opacity: 0.9;\n  }\n  100.0% {\n      height: 100%;\n      opacity: 1;\n  }\n}\n\n@-webkit-keyframes expanditem {\n  0% { \n      height: 0;\n      opacity: 0;\n  }\n  100.0% {\n      height: 100%;\n      opacity: 1;\n  }\n}",
            "type": "text/vnd.tiddlywiki",
            "title": "$:/plugins/telmiger/listreveal/lr.css",
            "tags": "$:/tags/Stylesheet Listreveal ToDoComponents ToDoArchive",
            "modifier": "Thomas Elmiger",
            "modified": "20170628212920503",
            "creator": "Thomas Elmiger",
            "created": "20160816052415397"
        },
        "$:/plugins/telmiger/lib/icons/stopwatch-empty.svg": {
            "text": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\" class=\"te-stopwatch-button tc-image-button\">\n<path d=\"M64.075 11.522c-32.17 0-58.25 26.082-58.25 58.25s26.08 58.25 58.25 58.25c32.175 0 58.25-26.082 58.25-58.25S96.25 11.52 64.076 11.52zm0 100.5c-23.336 0-42.25-18.914-42.25-42.25 0-23.33 18.914-42.25 42.25-42.25 23.337 0 42.25 18.92 42.25 42.25 0 23.336-18.913 42.25-42.25 42.25zM55.53 10.022c-2.763 0-5-2.24-5.002-5-.003-2.756 2.24-5 5-5h16.988c2.76 0 5 2.24 5 5 .005 2.757-2.24 5-5 5H55.53z\"/>\n<path fill=\"#000\" d=\"M55 60h18v18H55z\"/>\n</svg>",
            "title": "$:/plugins/telmiger/lib/icons/stopwatch-empty.svg",
            "tags": "$:/tags/Image",
            "modifier": "Thomas Elmiger",
            "modified": "20170509160632118",
            "creator": "Thomas Elmiger",
            "created": "20170506112920842"
        },
        "$:/plugins/telmiger/lib/icons/stopwatch-stop.svg": {
            "text": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"5 0 128 128\" width=\"22pt\" height=\"22pt\" class=\"te-stopwatch-button tc-image-button\">\n<path d=\"M64.075 11.522c-32.17 0-58.25 26.082-58.25 58.25s26.08 58.25 58.25 58.25c32.175 0 58.25-26.082 58.25-58.25S96.25 11.52 64.076 11.52zm0 100.5c-23.336 0-42.25-18.914-42.25-42.25 0-23.33 18.914-42.25 42.25-42.25 23.337 0 42.25 18.92 42.25 42.25 0 23.336-18.913 42.25-42.25 42.25zM55.53 10.022c-2.763 0-5-2.24-5.002-5-.003-2.756 2.24-5 5-5h16.988c2.76 0 5 2.24 5 5 .005 2.757-2.24 5-5 5H55.53z\"/>\n<path d=\"M64.075 35.902c-18.777 0-33.998 15.224-33.998 33.998 0 18.773 15.22 34.002 33.998 34.002 18.784 0 34.002-15.23 34.002-34.002 0-18.774-15.218-33.998-34.002-33.998z\"/>\n<path fill=\"#FFF\" d=\"M49 54h30v30H49z\"/>\n</svg>",
            "title": "$:/plugins/telmiger/lib/icons/stopwatch-stop.svg",
            "tags": "$:/tags/Image",
            "modifier": "Thomas Elmiger",
            "modified": "20170509161709012",
            "creator": "Thomas Elmiger",
            "created": "20170507053913584"
        },
        "$:/plugins/telmiger/lib/icons/stopwatch.svg": {
            "text": "<svg class=\"te-stopwatch-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n    <g fill-rule=\"evenodd\">\n        <path d=\"M58.25 11C26.08 11 0 37.082 0 69.25s26.08 58.25 58.25 58.25c32.175 0 58.25-26.082 58.25-58.25S90.425 11 58.25 11zm0 100.5C34.914 111.5 16 92.586 16 69.25 16 45.92 34.914 27 58.25 27s42.25 18.92 42.25 42.25c0 23.336-18.914 42.25-42.25 42.25zM49.704 10c-2.762 0-5-2.24-5-5-.004-2.756 2.238-5 5-5H66.69c2.762 0 5.002 2.24 5 5 .006 2.757-2.238 5-5 5H49.705z\"/><path d=\"M13.41 27.178c-2.116 1.775-5.27 1.498-7.045-.613-1.772-2.11-1.498-5.27.616-7.047l9.95-8.348c2.115-1.774 5.27-1.5 7.045.618 1.775 2.108 1.498 5.27-.616 7.043l-9.95 8.348zM102.983 27.178c2.116 1.775 5.27 1.498 7.045-.613 1.772-2.11 1.498-5.27-.616-7.047l-9.95-8.348c-2.114-1.774-5.27-1.5-7.044.618-1.775 2.108-1.498 5.27.616 7.043l9.95 8.348zM65.097 71.072c0 3.826-3.09 6.928-6.897 6.928-3.804.006-6.9-3.102-6.903-6.928 0 0 4.76-39.072 6.903-39.072s6.897 39.072 6.897 39.072z\"/>\n    </g>\n</svg>\n",
            "title": "$:/plugins/telmiger/lib/icons/stopwatch.svg",
            "tags": "$:/tags/Image",
            "modifier": "Thomas Elmiger",
            "modified": "20170509160445448",
            "creator": "Thomas Elmiger",
            "created": "20170509160027462"
        },
        "$:/plugins/telmiger/lib/entities": {
            "text": "\\define ldsbra() [[\n\\define rdsbra() ]]\n\n<!-- !! Entities as Macro Definitions\n\n!!! Very short macros for use in other macros\n* ldsbra and rdsbra – left double square brackets and right //dsbra//\n\n-->",
            "todo-done": "20160819011650",
            "title": "$:/plugins/telmiger/lib/entities",
            "tags": "$:/tags/Macro ToDoComponents",
            "modifier": "Thomas Elmiger",
            "modified": "20170702091256635",
            "creator": "Thomas Elmiger",
            "created": "20170629183744936"
        },
        "$:/plugins/telmiger/lib/languages/da-DK": {
            "text": "ID:Dansk\ndate-created-tmpl: {{$:/language/Tiddler/DateFormat}}\ndate-created-tmpl: DD. MMM YYYY, kl. 0hh:0mm\ndate-deadline-tmpl: 0DD.0MM.YYYY\n<!-- strings: strigs start here -->\nAdd-tag: Tilføj tag\nAdd-tags-from-the-list: Tilføj tags fra listen\nall: alle\nall-projects: alle projekter\narchive: arkiv\nAre-you-sure?: Er du sikker?\nChange-deadline: Ændre slutdato\nchange-priority: Ændre prioritet\nchange-priority-to: sæt prioritet til\nClick-to-edit-title: Klik på titlen for at redigere!\nclose: luk\nClose: Luk\ndays-back: dage tilbage\nDetails: Vis detaljer\nDo-it-again: Gør det igen\nDo-now: Udfør nu\nDone: Udført\nEdit: Redigér\nHide-list: Skjul liste\nlate: senere\nManage-tags: Tag-Manager\nMove-down: Flyt ned\nMove-up: Flyt op\nNew-ToDo-Item: Ny opgave\nno.: nr.\nNothing-to-do-?: Intet at lave? Beskriv en ny opgave med denne knap\nPick-a-task-: Vælg en opgave fra listen nedenunder med denne knap\nPrint-window-hint: Åbn i nyt vindue for at printe ud\nProject: Projekt\nRecycle: Genbrug\nRelax-Nothing-to-do: Slap af. Der er ikke noget at lave.\nRemove-deadline: Fjern slutdato\nRemove-tags?: Fjern tags?\nReset: Reset\nsearch: søg …\nSend-it-down: ikke endnu\nSet-deadline: Sæt slutdato\nShow-list: Vis liste\nSort-by-deadline: Sortér efter slutdato\nSort-by-modification: Sortér efter sidste ændring\nSort-by-priority: Sortér alle efter prioritet\nSort-by-title: Sortér alle efter titel\nsorted-by-deadline: sorteret efter slutdato\nsorted-by-modification: sorteret efter sidste ændring\nsorted-by-priority: sorteret efter prioritet\nsorted-by-title: sorteret efter titel\nSwitch-to-edit-mode: Slå redigering til\nSwitch-to-safe-mode: Slå redigering fra\nTake-it-up: Tag det op!\nThis-is-done: Dette er udført\nThis-week: I&nbsp;denne uge\ntoday: i&nbsp;dag\nToday: I&nbsp;dag\nToDo: ToDo\nToDo-template-title: Ny opgave\nToDo-template-text: Motivation: Beskrivelse * Tests/Accept kriterier\nTomorrow: I&nbsp;morgen\nUuups: Uuups!\n<!-- comments: Kommentarer -->\n<!-- credits: Tusind tak til Birthe for den oprindelige oversættelse! -->\n<!-- translation requires: $:/plugins/telmiger/lib/telang  -->\n<!-- use translated term: <<telang term>> -->\n",
            "type": "application/x-tiddler-dictionary",
            "todo-done": "20160821121501",
            "title": "$:/plugins/telmiger/lib/languages/da-DK",
            "tags": "ToDoComponents Translation",
            "modifier": "Thomas Elmiger",
            "modified": "20170714214949515",
            "creator": "BC",
            "created": "20170530162200369"
        },
        "$:/plugins/telmiger/lib/dates": {
            "created": "20170627092117795",
            "creator": "Thomas Elmiger",
            "text": "\\define yearsSince(date-field:\"modified\",tiddler)\n<<yearsDiff \"\"\"$date-field$\"\"\" \"\"\"$tiddler$\"\"\">>\n\\end\n\n\\define monthsSince(date-field:\"modified\",tiddler)\n<$wikify name=\"years\" text='<<yearsDiff $date-field$ \"\"\"$tiddler$\"\"\">>'>\n<$wikify name=\"yearsM\" text='<$macrocall $name=\"rpn\" a=<<years>> b=12 operation=\"*\"/>'>\n<$wikify name=\"months\" text='<<monthsDiff $date-field$ \"\"\"$tiddler$\"\"\">>'>\n<$macrocall $name=\"rpn\" a=<<yearsM>> b=<<months>>/>\n</$wikify></$wikify></$wikify>\n\\end\n\n\\define daysSince(date-field:\"modified\",tiddler)\n<<daysDiff $date-field$ \"\"\"$tiddler$\"\"\">>\n\\end\n\n\\define hoursSince(date-field:\"modified\",tiddler)\n<$wikify name=\"days\" text='<<daysSince $date-field$ \"\"\"$tiddler$\"\"\">>'>\n<$wikify name=\"daysH\" text='<$macrocall $name=\"rpn\" a=<<days>> b=\"24\" operation=\"*\"/>'>\n<$wikify name=\"hours\" text='<<hoursDiff $date-field$ \"\"\"$tiddler$\"\"\">>'>\n<$macrocall $name=\"rpn\" a=<<daysH>> b=<<hours>>/>\n</$wikify></$wikify></$wikify>\n\\end\n\n\\define minutesSince(date-field:\"modified\",tiddler)\n<$wikify name=\"hours\" text='<<hoursSince $date-field$ \"\"\"$tiddler$\"\"\">>'><$wikify name=\"hoursM\" text='<$macrocall $name=\"rpn\" a=<<hours>> b=\"60\" operation=\"*\"/>'><$wikify name=\"minutes\" text='<<minutesDiff $date-field$ \"\"\"$tiddler$\"\"\">>'><$macrocall $name=\"rpn\" a=<<hoursM>> b=<<minutes>>/></$wikify></$wikify></$wikify>\n\\end\n\n\\define hoursMinutesSince(date-field:\"modified\",tiddler)\n<$wikify name=\"minutes\" text='<<minutesSince $date-field$ \"\"\"$tiddler$\"\"\">>'><$macrocall $name=\"rpn\" a=<<minutes>> b=60 operation=\"/\" precision=\"f\"/> h <$macrocall $name=\"rpn\" a=<<minutes>> b=60 operation=\"%\"/> m</$wikify>\n\\end\n\n\\define minutesTo(date-field:\"modified\",tiddler)\n<$wikify name=\"minutes\" text='<<minutesSince $date-field$ \"\"\"$tiddler$\"\"\">>'><$wikify name=\"result\" text='<$macrocall $name=\"rpn\" a=<<minutes>> b=\"-1\" operation=\"*\"/>'><<result>></$wikify></$wikify>\n\\end\n\n\\define hoursTo(date-field:\"modified\",tiddler)\n<$wikify name=\"hours\" text='<<hoursSince $date-field$ \"\"\"$tiddler$\"\"\">>'><$wikify name=\"result\" text='<$macrocall $name=\"rpn\" a=<<hours>> b=\"-1\" operation=\"*\"/>'><<result>></$wikify></$wikify>\n\\end\n\n\\define yearsDiff(date-field:\"modified\",tiddler)\n<$wikify name=\"a\" text='<<now YYYY>>'><$wikify name=\"b\" text='<$macrocall $name=\"yearValue\" field=$date-field$ tiddler=\"\"\"$tiddler$\"\"\"/>'><$macrocall $name=\"rpn\" a=<<a>> b=<<b>> operation=\"-\"/></$wikify></$wikify>\n\\end\n\n\\define monthsDiff(date-field:\"modified\",tiddler)\n<$wikify name=\"a\" text='<<now MM>>'><$wikify name=\"b\" text='<$macrocall $name=\"monthValue\" field=$date-field$ tiddler=\"\"\"$tiddler$\"\"\"/>'><$macrocall $name=\"rpn\" a=<<a>> b=<<b>> operation=\"-\"/></$wikify></$wikify>\n\\end\n\n\\define daysDiff(date-field:\"modified\",tiddler)\n<$wikify name=\"a\" text='<<now DD>>'><$wikify name=\"b\" text='<$macrocall $name=\"dayValue\" field=$date-field$ tiddler=\"\"\"$tiddler$\"\"\"/>'><$macrocall $name=\"rpn\" a=<<a>> b=<<b>> operation=\"-\"/></$wikify></$wikify>\n\\end\n\n\\define hoursDiff(date-field:\"modified\",tiddler)\n<$wikify name=\"a\" text='<<now 0hh>>'><$wikify name=\"b\" text='<$macrocall $name=\"hoursValue\" field=$date-field$ tiddler=\"\"\"$tiddler$\"\"\"/>'><$macrocall $name=\"rpn\" a=<<a>> b=<<b>> operation=\"-\"/></$wikify></$wikify>\n\\end\n\n\\define minutesDiff(date-field:\"modified\",tiddler)\n<$set name=\"update-everything-now\" value=<<now 0mm>>><$wikify name=\"a\" text=\"<<update-everything-now>>\"><$wikify name=\"b\" text='<$macrocall $name=\"minutesValue\" field=$date-field$ tiddler=\"\"\"$tiddler$\"\"\"/>'><$macrocall $name=\"rpn\" a=<<a>> b=<<b>> operation=\"-\"/></$wikify></$wikify></$set>\n\\end\n\n<!-- !! Calculations with dates\nTransform dates in TW [[Date Field Format|http://tiddlywiki.com/#Date%20Fields]]\n\nTODO: Jed Carty has better macros for similar things – build a new version based on these http://ooktech.com/jed/ExampleWikis/DateMacros/\n\nWe compare the date string in a given field with the result of the `<<now>>` macro combined with one of the selectors YYYY for years, MM for months, DD for Days, 0hh …, 0mm …, 0ss. Note the 0-prefix for values that could be zero! (They disappear and return nothing when this is missing).\n\nThis was developped for use with due dates. The macros are good enough to check if a deadline was missed or if it will be reached soon.\n\n* time since the given timestamp\n** yearsSince(date-field:\"modified\",tiddler) – tiddler defaults to current\n** monthsSince (counts also the year difference)\n** daysSince – does NOT take the month into account\n*** this would be complicated because of differing number of days in each month\n** hoursSince (counts also the days)\n*** this can result in errors when the days are in different monts\n*** we recommend to filter for days in the same month first\n** minutesSince (counts also the hours and days)\n** hoursMinutesSince – turn minutes from minutesSince back into hours and minutes \n* time to the given datestamp … – time since inverted (* -1)\n** minutesTo\n** hoursTo\n** missing: daysTo, monthsTo, yearsTo\n* Diff macros\n** yearsDiff(date-field:\"modified\",tiddler)\n** … and so on for months, days, hours, minutes\n\n\nSyntax: `<<yearsSince created>>`\n\nResult: <<yearsSince created>>\n\n-->\n",
            "title": "$:/plugins/telmiger/lib/dates",
            "tags": "[[ToDo Addons]] $:/tags/Macro",
            "modifier": "Thomas Elmiger",
            "modified": "20170714220748829"
        },
        "$:/plugins/telmiger/lib/dates-then": {
            "created": "20170705203414697",
            "creator": "Thomas Elmiger",
            "text": "\\define yearValue(field,tiddler) <<dateValue YYYY $field$ $tiddler$>>\n\\define monthValue(field,tiddler) <<dateValue MM $field$ $tiddler$>>\n\\define dayValue(field,tiddler) <<dateValue DD $field$ $tiddler$>>\n\\define hoursValue(field,tiddler) <<dateValue 0hh $field$ $tiddler$>>\n\\define minutesValue(field,tiddler) <<dateValue 0mm $field$ $tiddler$>>\n\\define secondsValue(field,tiddler) <<dateValue 0ss $field$ $tiddler$>>\n\n\\define dateValue(template:\"YYYY-0MM-0DD\",field:\"modified\",tiddler) \n<$set name=\"tid\" filter=\"[field:title[$tiddler$]]\" value=\"\"\"$tiddler$\"\"\" emptyValue=<<currentTiddler>>><$view tiddler=<<tid>> field=\"\"\"$field$\"\"\" format=\"date\" template=\"\"\"$template$\"\"\"/></$set>\n\\end\n\n\n<!-- !! Macros for Dates from fields\nOutput dates from fields in TW [[Date Field Format|http://tiddlywiki.com/#Date%20Fields]]\n\n* dateValue(template:\"YYYY-0MM-0DD\",field:\"modified\",tiddler) – return a value from a date string via  the view widget\n** field: where the date string is stored\n** tiddler: where the date string is stored, defaults to currentTiddler\n* yearValue(field,tiddler) – return the year\n** monthValue, dayValue, hoursValue, minutesValue, secondsValue – guess what ;–)\n\n-->\n\nSyntax: `<<hoursValue example-1>>`\n\nResult: <<hoursValue example-1>>\n\n",
            "title": "$:/plugins/telmiger/lib/dates-then",
            "tags": "[[ToDo Addons]] $:/tags/Macro",
            "modifier": "Thomas Elmiger",
            "modified": "20170714220234254",
            "example-1": "20001231230000000"
        }
    }
}
<!-- allowed values for sort-list: priority/deadline/title -->
sort-list: deadline
<!-- allowed values for sort-report: priority/modified -->
sort-report: priority
<!-- comments: Kommentare -->
<!-- usage: <$reveal type="match" state="$:/plugins/telmiger/todonow/settings##sort-list" text="priority"> -->
show-list-deadline: bottom
{
    "tiddlers": {
        "$:/plugins/tgrosinger/tw5-checklist/checkbox-wikirule.js": {
            "text": "/*\\\ntitle: $:/plugins/tgrosinger/tw5-checklist/checkbox-wikirule.js\ntype: application/javascript\nmodule-type: wikirule\n\\*/\n\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"checkbox\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\n\t// Match on [ ], [x], and [X], to the end of the line\n\tthis.matchRegExp = /^\\[([ xX])\\] .*$/mg;\n};\n\n/*\nRetrieve the configuration state of the clear all button\n*/\n\nexports.shouldShowClearAll = function() {\n    var configWidgetTitle = \"$:/plugins/tgrosinger/tw5-checklist/Configuration\";\n    var configWidgetFields = $tw.wiki.getTiddler(configWidgetTitle).fields;\n\n    var showClearAll = configWidgetFields[\"show-clearall\"] || \"true\";\n    return (showClearAll === \"true\");\n}\n\n/*\nCreate list items\n*/\n\nexports.parse = function() {\n    var listItems = [];\n    var listStartPos = this.parser.pos;\n    var match = this.match;\n\n    // Start the list with a \"New List Item\" placeholder\n    listItems.push({\n        type: \"element\",\n        tag: \"li\",\n        children: [\n            {\n                type: \"element\",\n                tag: \"span\",\n                attributes: {\n                    class: {type: \"string\", value: \"checklist-newitem-icon\"},\n                    for: {type: \"string\", value: \"checklist-new\"}\n                }\n            },\n            {\n                type: \"element\",\n                tag: \"input\",\n                attributes: {\n                    class: {type: \"string\", value: \"checklist-newitem\"},\n                    id: {type: \"string\", value: \"checklist-new\"},\n                    placeholder: {type: \"string\", value: \"New list item (WikiText)\"}\n                    // impossible? add an aria-label \"Write a new todo item\"\n                    // attribute aria-label seems to be missing in $:/core/modules/widgets/edit.js \n                }\n            },\n            // label for the input field\n            {\n                type: \"element\",\n                tag: \"label\",\n                attributes: {\n                    class: {type: \"string\", value: \"checklist-vh\"},\n                    for: {type: \"string\", value: \"checklist-new\"}\n                },\n                children: [\n                    {type: \"text\", text: \"Write a new item for the list.\"}\n                ]\n            },\n            // (pseudo) button to add the new item to the list\n            {\n                type: \"element\",\n                tag: \"button\",\n                attributes: {\n                    class: {type: \"string\", value: \"tc-btn-invisible tc-btn-mini checklist-add\"},\n                    title: {type: \"string\", value: \"add to list\"}\n                },\n                children: [\n                    {\n                        type: \"element\",\n                        tag: \"span\",\n                        attributes: {\n                            class: {type: \"string\", value: \"checklist-vh\"}\n                        },\n                        children: [\n                            {type: \"text\", text: \"add list item\"}\n                        ]\n                    }\n                ]\n            }\n            // end of button\n        ]\n    });\n\n    // Create items in a loop\n    do {\n        var startPos = this.parser.pos;\n        this.parser.pos = this.matchRegExp.lastIndex;\n        var parseResults = this.parser.wiki.parseText(\n                \"text/vnd.tiddlywiki\",\n                this.parser.source.substring(startPos + 4, this.parser.pos),\n                {parseAsInline: true});\n\n        // Use the listitem body as a label for the checkbox to get better accessibility\n        var itembody = {\n            type: \"element\",\n            tag: \"label\",\n            attributes: {\n                for: {type: \"string\", value: match.index}\n            },\n            children: parseResults.tree\n        };\n\n        var checkbox = {\n            type: \"element\",\n            tag: \"input\",\n            attributes: {\n                type: {type: \"string\", value: \"checkbox\"},\n                pos: {type: \"string\", value: match.index},\n                id: {type: \"string\", value: match.index}\n            }\n        };\n        if (match[1] === \"x\" || match[1] === \"X\") {\n            checkbox.attributes.checked = {type: \"boolean\", value: true};\n        }\n\n        // Make a button to delete the item\n        var removelabel = {\n            type: \"element\",\n            tag: \"span\",\n            attributes: {\n                class: {type: \"string\", value: \"checklist-vh\"}\n            },\n            children: [\n                {type: \"text\", text: \"delete list item\"}\n            ]\n        };\n\n        var removebutton = {\n            type: \"element\",\n            tag: \"button\",\n            attributes: {\n                class: {type: \"string\", value: \"tc-btn-invisible tc-btn-mini checklist-remove\"},\n                title: {type: \"string\", value: \"delete\"}\n            },\n            children: [\n                removelabel\n            ]\n        };\n\n        // add the item to the list\n        listItems.push({\n            type: \"element\",\n            tag: \"li\",\n            children: [\n                checkbox,\n                removebutton,\n                itembody\n            ]\n        });\n\n        match = this.matchRegExp.exec(this.parser.source);\n    } while (match != null && match.index == 1 + this.parser.pos);\n\n    if (this.shouldShowClearAll()) {\n        // show the clear-all button\n        var clearallbutton = {\n            type: \"element\",\n            tag: \"button\",\n            attributes: {\n                class: {type: \"string\", value: \"checklist-clearall\"}\n            },\n            children: [\n                {\n                    type: \"element\",\n                    tag: \"span\",\n                    attributes: {\n                        class: {type: \"string\", value: \"checklist-clearall-label\"}\n                    },\n                    children: [\n                        {type: \"text\", text: \"Clear all\"}\n                    ]\n                }\n            ]\n        };\n\n        listItems.push({\n            type: \"element\",\n            tag: \"li\",\n            children: [\n                clearallbutton\n            ]\n        });\n    }\n\n    return [{\n        type: \"checklist\",\n        attributes: {\n            listStartPos: {type: \"string\", value: listStartPos},\n            listStopPos:  {type: \"string\", value: this.parser.pos}\n        },\n        children: listItems\n    }];\n};\n\n})();\n",
            "title": "$:/plugins/tgrosinger/tw5-checklist/checkbox-wikirule.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/plugins/tgrosinger/tw5-checklist/checklist.js": {
            "text": "/*\\\ntitle: $:/plugins/tgrosinger/tw5-checklist/checklist.js\ntype: application/javascript\nmodule-type: widget\n\\*/\n\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CheckListWidget = function(parseTreeNode,options) {\n    this.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCheckListWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCheckListWidget.prototype.render = function(parent,nextSibling) {\n    this.tiddlerTitle = this.getVariable(\"currentTiddler\");\n    this.startPos = parseInt(this.parseTreeNode.attributes.listStartPos.value);\n    this.stopPos = parseInt(this.parseTreeNode.attributes.listStopPos.value);\n\n    this.parentDomNode = parent;\n    this.nextSibling = nextSibling;\n    this.computeAttributes();\n    this.execute();\n};\n\n/*\nRetrieve the configuration state indicating if items should be re-arranged\n*/\nCheckListWidget.prototype.shouldMoveChecked = function() {\n    var configWidgetTitle = \"$:/plugins/tgrosinger/tw5-checklist/Configuration\";\n    var configWidgetFields = $tw.wiki.getTiddler(configWidgetTitle).fields;\n\n    var moveChecked = configWidgetFields[\"move-checked\"] || \"true\";\n    return (moveChecked === \"true\");\n}\n\n/*\nCompute the internal state of the widget\n*/\nCheckListWidget.prototype.execute = function() {\n    var domNode = this.document.createElement(\"ul\");\n    domNode.className = \"checklist\";\n\n    this.makeChildWidgets();\n    this.renderChildren(domNode);\n\n    /* add event listeners */\n    $tw.utils.each(domNode.childNodes, function(childNode) {\n        if (childNode.childNodes[0].className === \"checklist-clearall\") {\n            // ClearAllChecks, do not use checkbox listener\n            $tw.utils.addEventListeners(childNode.childNodes[0],\n                    [{name: \"click\", handlerObject: this,\n                        handlerMethod: \"handleClearChecksEvent\"}]);\n        } else if (childNode.childNodes[1].className === \"checklist-newitem\") {\n            // NewListItem, do not use checkbox listener\n            $tw.utils.addEventListeners(childNode.childNodes[1], [\n                    {name: \"blur\", handlerObject: this, handlerMethod: \"handleBlurNewItemEvent\"},\n                    {name: \"keyup\", handlerObject: this, handlerMethod: \"handleBlurNewItemEvent\"}\n            ]);\n    // If this is a normal checklist item …\n        } else {\n            if (childNode.childNodes[0].checked) {\n                $tw.utils.addEventListeners(childNode,\n                        [{name: \"change\", handlerObject: this, handlerMethod: \"handleUncheckEvent\"}]);\n            } else {\n                $tw.utils.addEventListeners(childNode,\n                        [{name: \"change\", handlerObject: this, handlerMethod: \"handleCheckEvent\"}]);\n            }\n            $tw.utils.addEventListeners(childNode.childNodes[1], [\n                {name: \"click\", handlerObject: this, handlerMethod: \"handleRemoveEvent\"}\n            ]);\n        }\n    }.bind(this));\n\n    this.parentDomNode.insertBefore(domNode, this.nextSibling);\n};\n\n// When the user clicks the clear-all button, remove all checks\nCheckListWidget.prototype.handleClearChecksEvent = function(event) {\n    var domItem = event.target.parentNode;\n    var domList = domItem.parentNode;\n\n    var tiddlerBody = $tw.wiki.getTiddler(this.tiddlerTitle).fields.text;\n    var bodyList = tiddlerBody.substring(this.startPos, this.stopPos).split(\"\\n\");\n    var bodyLen = bodyList.length;\n\n    for (var i = 0; i < bodyLen; i++) {\n        bodyList[i] = bodyList[i].replace(\"[x]\", \"[ ]\");\n        bodyList[i] = bodyList[i].replace(\"[X]\", \"[ ]\");\n    }\n\n    // Save the updated body\n    var newBody = tiddlerBody.substring(0, this.startPos) +\n                  bodyList.join(\"\\n\") +\n                  tiddlerBody.substring(this.stopPos);\n    $tw.wiki.setText(this.tiddlerTitle, \"text\", null, newBody);\n};\n\n// On blur or enter, save the new list item\nCheckListWidget.prototype.handleBlurNewItemEvent = function(event) {\n    if (event.type == \"keyup\" && event.keyCode != 13) {\n        // This function receives both blur and keyup events.\n        // Only run on blur or enter key\n        return;\n    }\n\n    if (event.target.value.trim() === \"\") {\n        // Don't save an empty list item\n        return;\n    }\n\n    var checklist = event.target.parentNode.parentNode;\n    var firstItem = checklist.childNodes[1];\n    var pos = firstItem.childNodes[0].attributes.pos.nodeValue;\n\n    var newItem = \"[ ] \" + event.target.value.trim() + \"\\n\";\n    event.target.value = \"\";\n\n    var tiddlerBody = $tw.wiki.getTiddler(this.tiddlerTitle).fields.text;\n    tiddlerBody = tiddlerBody.substring(0, pos) + newItem + tiddlerBody.substring(pos);\n    $tw.wiki.setText(this.tiddlerTitle, \"text\", null, tiddlerBody);\n};\n\nCheckListWidget.prototype.handleCheckEvent = function(event) {\n    var domItem = event.target.parentNode;\n    var domList = domItem.parentNode;\n    var itemIndex = [].indexOf.call(domList.childNodes, domItem) - 1;\n\n    var tiddlerBody = $tw.wiki.getTiddler(this.tiddlerTitle).fields.text;\n    var bodyList = tiddlerBody.substring(this.startPos, this.stopPos).split(\"\\n\");\n\n    // Find the index of the first checked item\n    var i = 1;\n    var firstChecked = domItem.nextSibling;\n    while (firstChecked !== null && !firstChecked.childNodes[0].checked) {\n        i++;\n        firstChecked = firstChecked.nextSibling;\n    }\n\n    // Update the tiddler data\n    bodyList[itemIndex] = bodyList[itemIndex].replace(\"[ ]\", \"[x]\");\n\n    // Rearrange items (if configured to do so)\n    var shouldMove = this.shouldMoveChecked();\n    if (shouldMove) {\n        bodyList.splice(itemIndex + i, 0, bodyList[itemIndex]);\n        bodyList.splice(itemIndex, 1);\n    }\n\n    // Save the updated body\n    var newBody = tiddlerBody.substring(0, this.startPos) +\n                  bodyList.join(\"\\n\") +\n                  tiddlerBody.substring(this.stopPos);\n    $tw.wiki.setText(this.tiddlerTitle, \"text\", null, newBody);\n\n    if (shouldMove) {\n        // Update the DOM (pre-refresh for animations)\n        domList.insertBefore(domItem, firstChecked);\n    }\n};\n\nCheckListWidget.prototype.handleUncheckEvent = function(event) {\n    var domItem = event.target.parentNode;\n    var domList = domItem.parentNode;\n    var itemIndex = [].indexOf.call(domList.childNodes, domItem) - 1;\n\n    var tiddlerBody = $tw.wiki.getTiddler(this.tiddlerTitle).fields.text;\n    var bodyList = tiddlerBody.substring(this.startPos, this.stopPos).split(\"\\n\");\n\n    // Find the index of the first checked item\n    var i = 0;\n    var firstChecked = domList.firstChild.nextSibling; // Skip the newItem input\n    while (firstChecked !== null) {\n        if (firstChecked.childNodes[0].checked || firstChecked == domItem) {\n            break;\n        }\n        i++;\n        firstChecked = firstChecked.nextSibling;\n    }\n\n    // Update the tiddler data\n    bodyList[itemIndex] = bodyList[itemIndex].replace(\"[x]\", \"[ ]\");\n\n    // Rearrange items (if configured to do so)\n    var shouldMove = this.shouldMoveChecked();\n    if (shouldMove) {\n        var bodyItem = bodyList[itemIndex];\n        bodyList.splice(itemIndex, 1);\n        bodyList.splice(i, 0, bodyItem);\n    }\n\n    var newBody = tiddlerBody.substring(0, this.startPos) +\n                  bodyList.join(\"\\n\") +\n                  tiddlerBody.substring(this.stopPos);\n    $tw.wiki.setText(this.tiddlerTitle, \"text\", null, newBody);\n\n    if (shouldMove) {\n        // Update the DOM (pre-refresh for animations)\n        domList.insertBefore(domItem, firstChecked);\n    }\n};\n\nCheckListWidget.prototype.handleRemoveEvent = function (event) {\n    var domItem = event.target.parentNode;\n    var domList = domItem.parentNode;\n    var itemIndex = [].indexOf.call(domList.childNodes, domItem) - 1;\n\n    var tiddlerBody = $tw.wiki.getTiddler(this.tiddlerTitle).fields.text;\n    var bodyList = tiddlerBody.substring(this.startPos, this.stopPos).split(\"\\n\");\n\n    // Update the tiddler data\n    bodyList.splice(itemIndex, 1);\n    var newBody = tiddlerBody.substring(0, this.startPos) +\n                  bodyList.join(\"\\n\") +\n                  tiddlerBody.substring(this.stopPos);\n    $tw.wiki.setText(this.tiddlerTitle, \"text\", null, newBody);\n};\n\n/*\nSelectively refreshes the widget if needed.\nReturns true if the widget or any of its children needed re-rendering\n*/\nCheckListWidget.prototype.refresh = function(changedTiddlers) {\n    var changedAttributes = this.computeAttributes();\n    // Refresh if an attribute has changed, or the type associated with\n    // the target tiddler has changed\n    if(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index ||\n            (changedTiddlers[this.editTitle] && this.getEditorType() !== this.editorType)) {\n        this.refreshSelf();\n        return true;\n    } else {\n        return this.refreshChildren(changedTiddlers);\n    }\n};\n\nexports.checklist = CheckListWidget;\n\n})();\n",
            "title": "$:/plugins/tgrosinger/tw5-checklist/checklist.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/plugins/tgrosinger/tw5-checklist/Configuration": {
            "title": "$:/plugins/tgrosinger/tw5-checklist/Configuration",
            "move-checked": "true",
            "strike-checked": "true",
            "show-clearall": "true",
            "text": "Please see the [[homepage|https://grosinger.net/tw5-checklist/]] for more information on the options.\n\nSave and reload the wiki to activate changes.\n\n<table>\n  <tr>\n    <th align=\"left\">Rearrange checked items:</th>\n    <td>\n        <$checkbox field=\"move-checked\" tiddler=\"$:/plugins/tgrosinger/tw5-checklist/Configuration\"\n            checked=\"true\" unchecked=\"false\" default=\"true\"></$checkbox>\n    </td>\n  </tr>\n  <tr>\n    <th align=\"left\" class=\"rerendering-required\">Strike checked items: </th>\n    <td>\n        <$checkbox field=\"strike-checked\" tiddler=\"$:/plugins/tgrosinger/tw5-checklist/Configuration\"\n            checked=\"true\" unchecked=\"false\" default=\"true\"></$checkbox>\n    </td>\n  </tr>\n  <tr>\n    <th align=\"left\" class=\"rerendering-required\">Show Clear-All: </th>\n    <td>\n        <$checkbox field=\"show-clearall\" tiddler=\"$:/plugins/tgrosinger/tw5-checklist/Configuration\"\n            checked=\"true\" unchecked=\"false\" default=\"true\"></$checkbox>\n    </td>\n  </tr>\n</table>\n\n&#42; make a change in a list to see the effect (check/uncheck or add/delete an item).\n\n<style>\n.rerendering-required:after {\n    content: ' *';\n    color: #e32;\n}\n</style>\n"
        },
        "$:/plugins/tgrosinger/tw5-checklist/license": {
            "title": "$:/plugins/tgrosinger/tw5-checklist/license",
            "text": "The MIT License (MIT)\n\nCopyright (c) 2015 Tony Grosinger\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"
        },
        "$:/plugins/tgrosinger/tw5-checklist/readme": {
            "title": "$:/plugins/tgrosinger/tw5-checklist/readme",
            "text": "This plugin provides a simple checklist which does not create a new tiddler for\neach task. Features include:\n\n[x] Check and uncheck items\n[x] Simple, no configuration necessary\n[x] Easily editable, and easy to read in edit view\n[x] Add new list items without using edit mode\n[x] Move completed items to bottom of list\n\n[[Source code|https://github.com/tgrosinger/tw5-checklist]]\n"
        },
        "$:/plugins/tgrosinger/tw5-checklist/stylesheet": {
            "title": "$:/plugins/tgrosinger/tw5-checklist/stylesheet",
            "tags": "$:/tags/Stylesheet",
            "text": "ul.checklist {\n    list-style: none;\n    margin: 0;\n    padding: 0;\n}\n\nul.checklist > li {\n    position: relative;\n    width: calc(100% - 1em);\n}\n\n\n/* input form */\n\n.checklist-newitem-icon::before {\n    content: \"&#x270e;\";\n}\n\ninput.checklist-newitem {\n    margin-left: 1em;\n    margin-bottom: 0.75em;\n    padding: 2px;\n    border: none;\n    border-bottom: solid 2px <<colour sidebar-tab-background>>;\n    transition: border 0.3s;\n    width: calc(100% - 2em - 20px);\n}\n\ninput:focus.checklist-newitem {\n    border-bottom: solid 2px <<colour notification-border>>;\n}\n\n\n/* placeholder text */\n\n::-webkit-input-placeholder { \n  color: #444;\n  font-style: italic;\n}\n::-moz-placeholder { \n  color: #444;\n  font-style: italic;\n}\n:-ms-input-placeholder { \n  color: #444;\n  font-style: italic;\n}\n:-moz-placeholder { \n  color: #444;\n  font-style: italic;\n}\n::placeholder {\n  color: #444;\n  font-style: italic;\n}\n\n\n/* list items content */\n\n.checklist li input[type=\"checkbox\"] {\n    vertical-align: top;\n    margin-top: 4px;\n}\n\n.checklist label {\n    display: inline-block;\n    position: relative;\n    margin-left: -1em;\n    padding-left: 0.4em;\n    left: 1.4em;\n    width: calc(100% - 2em - 20px);\n}\n\n.checklist > li:hover label, \n.checklist input[type=\"checkbox\"]:hover + button + label, \n.checklist input[type=\"checkbox\"]:focus + button + label  {\n    background-color: <<colour sidebar-tab-background>>;\n}\n\ninput:checked + .checklist-remove + label {\n    opacity: 0.5;\n}\n\n.checklist li input + .checklist-remove:hover + label,\n.checklist li input + .checklist-remove:focus + label  {\n    background-color:  rgba(255,0,0,0.25);\n    opacity: 0.8;\n    border-radius: 5px;\n}\n\n/* strike checked items only if set in user configuration */\n<$list filter=\"[[$:/plugins/tgrosinger/tw5-checklist/Configuration]field:strike-checked[true]]\">\ninput:checked + .checklist-remove + label {\n    text-decoration: line-through;\n}\n</$list>\n\n\n/* buttons */\n\nbutton.checklist-add {\n    position: relative;\n    left: 0.75em;\n    width: 18px;\n    height: 18px;\n    border-radius: 5px;\nbackground-image: url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2211%22%20height%3D%2211%22%3E%0A%3Crect%20width%3D%221%22%20height%3D%227%22%20x%3D%225%22%20y%3D%222%22%20fill%3D%22%239B9B9B%22%2F%3E%0A%3Crect%20width%3D%227%22%20height%3D%221%22%20x%3D%222%22%20y%3D%225%22%20fill%3D%22%239B9B9B%22%2F%3E%0A%3C%2Fsvg%3E');\n    background-size: 100%;\n}\n\nbutton.checklist-add:hover, button.checklist-add:focus {\n    background-color: <<colour sidebar-tab-background>>;\n}\n\nbutton.checklist-remove {\n    display: block;\n    position: absolute;\n    top: 2px;\n    right: -6px;\n    width: 18px;\n    height: 18px;\n    border-radius: 5px;\n    color: <<colour sidebar-muted-foreground>>;\nbackground-image: url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2211%22%20height%3D%2211%22%3E%0A%3Crect%20width%3D%225%22%20height%3D%221%22%20x%3D%223%22%20y%3D%225%22%20fill%3D%22%23444%22%2F%3E%0A%3C%2Fsvg%3E');\n    background-size: 100%;\n/*    background-color: <<colour sidebar-tab-background-selected>>; */\n    border: 1px solid <<colour sidebar-tab-background>>;\n}\n\nul.checklist > li:hover button.checklist-remove {\n    color: <<colour sidebar-muted-foreground-hover>>;\n}\n\nbutton.checklist-remove:hover,\nbutton.checklist-remove:focus {\n    color:  <<colour dirty-indicator>>;\n    background-color: <<colour sidebar-tab-background>>;\n}\n\nbutton.checklist-clearall {\n    margin-top: 0.75em;\n}\n\nbutton.checklist-clearall::before {\n    content: \"↻ \";\n}\n\n\n/* visualliy hidden, accessible for screen reader */\n\n.checklist-vh {\n    position: absolute !important;\n    clip: rect(1px, 1px, 1px, 1px);\n    padding:0 !important;\n    border:0 !important;\n    height: 1px !important;\n    width: 1px !important;\n    overflow: hidden;\n}\n"
        },
        "$:/plugins/tgrosinger/tw5-checklist/Usage": {
            "title": "$:/plugins/tgrosinger/tw5-checklist/Usage",
            "text": "! Creating a New Checklist\n\nThis plugin provides a wikitext rule for use in normal wikitext tiddlers. A\nchecklist is defined as two brackets with either a <kbd>space</kbd> or an\n<kbd>x</kbd> between them.\n\n```\n! My Shopping List\n\n[ ] Milk\n[ ] Eggs\n[x] Bread\n\n```\n\n!! Multiple Checklists\n\nThere is no need to declare an instance of a checklist, and you can place\nchecklist items throughout a tiddler. Each set of consecutive (single new-line\ndelimited) checklist items will be displayed as a single checklist.\n\n```\n! My first list\n\n[ ] Item 1\n[x] Item 2\n\n! My second list\n\n[x] Item 3\n[x] Item 4\n\n```\n\n!! List Item Formatting\n\nList items support any inline formatting rules. This means you can create links,\nbold, or anything else found on the\n[[Formatting in WikiText|http://tiddlywiki.com/static/Formatting%2520in%2520WikiText.html]] guide.\n\n! Configuration\n\nPlease see [[the configuration|$:/plugins/tgrosinger/tw5-checklist/Configuration]]\npage to learn about and adjust configuration options.\n"
        }
    }
}
{
    "tiddlers": {
        "$:/config/HighlightPlugin/TypeMappings/application/javascript": {
            "title": "$:/config/HighlightPlugin/TypeMappings/application/javascript",
            "text": "javascript"
        },
        "$:/config/HighlightPlugin/TypeMappings/application/json": {
            "title": "$:/config/HighlightPlugin/TypeMappings/application/json",
            "text": "json"
        },
        "$:/config/HighlightPlugin/TypeMappings/text/css": {
            "title": "$:/config/HighlightPlugin/TypeMappings/text/css",
            "text": "css"
        },
        "$:/config/HighlightPlugin/TypeMappings/text/html": {
            "title": "$:/config/HighlightPlugin/TypeMappings/text/html",
            "text": "html"
        },
        "$:/config/HighlightPlugin/TypeMappings/image/svg+xml": {
            "title": "$:/config/HighlightPlugin/TypeMappings/image/svg+xml",
            "text": "xml"
        },
        "$:/config/HighlightPlugin/TypeMappings/text/x-markdown": {
            "title": "$:/config/HighlightPlugin/TypeMappings/text/x-markdown",
            "text": "markdown"
        },
        "$:/plugins/tiddlywiki/highlight/highlight.js": {
            "text": "var hljs = require(\"$:/plugins/tiddlywiki/highlight/highlight.js\");\n!function(e){\"undefined\"!=typeof exports?e(exports):(window.hljs=e({}),\"function\"==typeof define&&define.amd&&define(\"hljs\",[],function(){return window.hljs}))}(function(e){function n(e){return e.replace(/&/gm,\"&amp;\").replace(/</gm,\"&lt;\").replace(/>/gm,\"&gt;\")}function t(e){return e.nodeName.toLowerCase()}function r(e,n){var t=e&&e.exec(n);return t&&0==t.index}function a(e){return/^(no-?highlight|plain|text)$/i.test(e)}function i(e){var n,t,r,i=e.className+\" \";if(i+=e.parentNode?e.parentNode.className:\"\",t=/\\blang(?:uage)?-([\\w-]+)\\b/i.exec(i))return w(t[1])?t[1]:\"no-highlight\";for(i=i.split(/\\s+/),n=0,r=i.length;r>n;n++)if(w(i[n])||a(i[n]))return i[n]}function o(e,n){var t,r={};for(t in e)r[t]=e[t];if(n)for(t in n)r[t]=n[t];return r}function u(e){var n=[];return function r(e,a){for(var i=e.firstChild;i;i=i.nextSibling)3==i.nodeType?a+=i.nodeValue.length:1==i.nodeType&&(n.push({event:\"start\",offset:a,node:i}),a=r(i,a),t(i).match(/br|hr|img|input/)||n.push({event:\"stop\",offset:a,node:i}));return a}(e,0),n}function c(e,r,a){function i(){return e.length&&r.length?e[0].offset!=r[0].offset?e[0].offset<r[0].offset?e:r:\"start\"==r[0].event?e:r:e.length?e:r}function o(e){function r(e){return\" \"+e.nodeName+'=\"'+n(e.value)+'\"'}f+=\"<\"+t(e)+Array.prototype.map.call(e.attributes,r).join(\"\")+\">\"}function u(e){f+=\"</\"+t(e)+\">\"}function c(e){(\"start\"==e.event?o:u)(e.node)}for(var s=0,f=\"\",l=[];e.length||r.length;){var g=i();if(f+=n(a.substr(s,g[0].offset-s)),s=g[0].offset,g==e){l.reverse().forEach(u);do c(g.splice(0,1)[0]),g=i();while(g==e&&g.length&&g[0].offset==s);l.reverse().forEach(o)}else\"start\"==g[0].event?l.push(g[0].node):l.pop(),c(g.splice(0,1)[0])}return f+n(a.substr(s))}function s(e){function n(e){return e&&e.source||e}function t(t,r){return new RegExp(n(t),\"m\"+(e.cI?\"i\":\"\")+(r?\"g\":\"\"))}function r(a,i){if(!a.compiled){if(a.compiled=!0,a.k=a.k||a.bK,a.k){var u={},c=function(n,t){e.cI&&(t=t.toLowerCase()),t.split(\" \").forEach(function(e){var t=e.split(\"|\");u[t[0]]=[n,t[1]?Number(t[1]):1]})};\"string\"==typeof a.k?c(\"keyword\",a.k):Object.keys(a.k).forEach(function(e){c(e,a.k[e])}),a.k=u}a.lR=t(a.l||/\\b\\w+\\b/,!0),i&&(a.bK&&(a.b=\"\\\\b(\"+a.bK.split(\" \").join(\"|\")+\")\\\\b\"),a.b||(a.b=/\\B|\\b/),a.bR=t(a.b),a.e||a.eW||(a.e=/\\B|\\b/),a.e&&(a.eR=t(a.e)),a.tE=n(a.e)||\"\",a.eW&&i.tE&&(a.tE+=(a.e?\"|\":\"\")+i.tE)),a.i&&(a.iR=t(a.i)),void 0===a.r&&(a.r=1),a.c||(a.c=[]);var s=[];a.c.forEach(function(e){e.v?e.v.forEach(function(n){s.push(o(e,n))}):s.push(\"self\"==e?a:e)}),a.c=s,a.c.forEach(function(e){r(e,a)}),a.starts&&r(a.starts,i);var f=a.c.map(function(e){return e.bK?\"\\\\.?(\"+e.b+\")\\\\.?\":e.b}).concat([a.tE,a.i]).map(n).filter(Boolean);a.t=f.length?t(f.join(\"|\"),!0):{exec:function(){return null}}}}r(e)}function f(e,t,a,i){function o(e,n){for(var t=0;t<n.c.length;t++)if(r(n.c[t].bR,e))return n.c[t]}function u(e,n){if(r(e.eR,n)){for(;e.endsParent&&e.parent;)e=e.parent;return e}return e.eW?u(e.parent,n):void 0}function c(e,n){return!a&&r(n.iR,e)}function g(e,n){var t=N.cI?n[0].toLowerCase():n[0];return e.k.hasOwnProperty(t)&&e.k[t]}function h(e,n,t,r){var a=r?\"\":E.classPrefix,i='<span class=\"'+a,o=t?\"\":\"</span>\";return i+=e+'\">',i+n+o}function p(){if(!L.k)return n(y);var e=\"\",t=0;L.lR.lastIndex=0;for(var r=L.lR.exec(y);r;){e+=n(y.substr(t,r.index-t));var a=g(L,r);a?(B+=a[1],e+=h(a[0],n(r[0]))):e+=n(r[0]),t=L.lR.lastIndex,r=L.lR.exec(y)}return e+n(y.substr(t))}function d(){var e=\"string\"==typeof L.sL;if(e&&!x[L.sL])return n(y);var t=e?f(L.sL,y,!0,M[L.sL]):l(y,L.sL.length?L.sL:void 0);return L.r>0&&(B+=t.r),e&&(M[L.sL]=t.top),h(t.language,t.value,!1,!0)}function b(){return void 0!==L.sL?d():p()}function v(e,t){var r=e.cN?h(e.cN,\"\",!0):\"\";e.rB?(k+=r,y=\"\"):e.eB?(k+=n(t)+r,y=\"\"):(k+=r,y=t),L=Object.create(e,{parent:{value:L}})}function m(e,t){if(y+=e,void 0===t)return k+=b(),0;var r=o(t,L);if(r)return k+=b(),v(r,t),r.rB?0:t.length;var a=u(L,t);if(a){var i=L;i.rE||i.eE||(y+=t),k+=b();do L.cN&&(k+=\"</span>\"),B+=L.r,L=L.parent;while(L!=a.parent);return i.eE&&(k+=n(t)),y=\"\",a.starts&&v(a.starts,\"\"),i.rE?0:t.length}if(c(t,L))throw new Error('Illegal lexeme \"'+t+'\" for mode \"'+(L.cN||\"<unnamed>\")+'\"');return y+=t,t.length||1}var N=w(e);if(!N)throw new Error('Unknown language: \"'+e+'\"');s(N);var R,L=i||N,M={},k=\"\";for(R=L;R!=N;R=R.parent)R.cN&&(k=h(R.cN,\"\",!0)+k);var y=\"\",B=0;try{for(var C,j,I=0;;){if(L.t.lastIndex=I,C=L.t.exec(t),!C)break;j=m(t.substr(I,C.index-I),C[0]),I=C.index+j}for(m(t.substr(I)),R=L;R.parent;R=R.parent)R.cN&&(k+=\"</span>\");return{r:B,value:k,language:e,top:L}}catch(O){if(-1!=O.message.indexOf(\"Illegal\"))return{r:0,value:n(t)};throw O}}function l(e,t){t=t||E.languages||Object.keys(x);var r={r:0,value:n(e)},a=r;return t.forEach(function(n){if(w(n)){var t=f(n,e,!1);t.language=n,t.r>a.r&&(a=t),t.r>r.r&&(a=r,r=t)}}),a.language&&(r.second_best=a),r}function g(e){return E.tabReplace&&(e=e.replace(/^((<[^>]+>|\\t)+)/gm,function(e,n){return n.replace(/\\t/g,E.tabReplace)})),E.useBR&&(e=e.replace(/\\n/g,\"<br>\")),e}function h(e,n,t){var r=n?R[n]:t,a=[e.trim()];return e.match(/\\bhljs\\b/)||a.push(\"hljs\"),-1===e.indexOf(r)&&a.push(r),a.join(\" \").trim()}function p(e){var n=i(e);if(!a(n)){var t;E.useBR?(t=document.createElementNS(\"http://www.w3.org/1999/xhtml\",\"div\"),t.innerHTML=e.innerHTML.replace(/\\n/g,\"\").replace(/<br[ \\/]*>/g,\"\\n\")):t=e;var r=t.textContent,o=n?f(n,r,!0):l(r),s=u(t);if(s.length){var p=document.createElementNS(\"http://www.w3.org/1999/xhtml\",\"div\");p.innerHTML=o.value,o.value=c(s,u(p),r)}o.value=g(o.value),e.innerHTML=o.value,e.className=h(e.className,n,o.language),e.result={language:o.language,re:o.r},o.second_best&&(e.second_best={language:o.second_best.language,re:o.second_best.r})}}function d(e){E=o(E,e)}function b(){if(!b.called){b.called=!0;var e=document.querySelectorAll(\"pre code\");Array.prototype.forEach.call(e,p)}}function v(){addEventListener(\"DOMContentLoaded\",b,!1),addEventListener(\"load\",b,!1)}function m(n,t){var r=x[n]=t(e);r.aliases&&r.aliases.forEach(function(e){R[e]=n})}function N(){return Object.keys(x)}function w(e){return e=e.toLowerCase(),x[e]||x[R[e]]}var E={classPrefix:\"hljs-\",tabReplace:null,useBR:!1,languages:void 0},x={},R={};return e.highlight=f,e.highlightAuto=l,e.fixMarkup=g,e.highlightBlock=p,e.configure=d,e.initHighlighting=b,e.initHighlightingOnLoad=v,e.registerLanguage=m,e.listLanguages=N,e.getLanguage=w,e.inherit=o,e.IR=\"[a-zA-Z]\\\\w*\",e.UIR=\"[a-zA-Z_]\\\\w*\",e.NR=\"\\\\b\\\\d+(\\\\.\\\\d+)?\",e.CNR=\"(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",e.BNR=\"\\\\b(0b[01]+)\",e.RSR=\"!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~\",e.BE={b:\"\\\\\\\\[\\\\s\\\\S]\",r:0},e.ASM={cN:\"string\",b:\"'\",e:\"'\",i:\"\\\\n\",c:[e.BE]},e.QSM={cN:\"string\",b:'\"',e:'\"',i:\"\\\\n\",c:[e.BE]},e.PWM={b:/\\b(a|an|the|are|I|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such)\\b/},e.C=function(n,t,r){var a=e.inherit({cN:\"comment\",b:n,e:t,c:[]},r||{});return a.c.push(e.PWM),a.c.push({cN:\"doctag\",b:\"(?:TODO|FIXME|NOTE|BUG|XXX):\",r:0}),a},e.CLCM=e.C(\"//\",\"$\"),e.CBCM=e.C(\"/\\\\*\",\"\\\\*/\"),e.HCM=e.C(\"#\",\"$\"),e.NM={cN:\"number\",b:e.NR,r:0},e.CNM={cN:\"number\",b:e.CNR,r:0},e.BNM={cN:\"number\",b:e.BNR,r:0},e.CSSNM={cN:\"number\",b:e.NR+\"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?\",r:0},e.RM={cN:\"regexp\",b:/\\//,e:/\\/[gimuy]*/,i:/\\n/,c:[e.BE,{b:/\\[/,e:/\\]/,r:0,c:[e.BE]}]},e.TM={cN:\"title\",b:e.IR,r:0},e.UTM={cN:\"title\",b:e.UIR,r:0},e});hljs.registerLanguage(\"markdown\",function(e){return{aliases:[\"md\",\"mkdown\",\"mkd\"],c:[{cN:\"header\",v:[{b:\"^#{1,6}\",e:\"$\"},{b:\"^.+?\\\\n[=-]{2,}$\"}]},{b:\"<\",e:\">\",sL:\"xml\",r:0},{cN:\"bullet\",b:\"^([*+-]|(\\\\d+\\\\.))\\\\s+\"},{cN:\"strong\",b:\"[*_]{2}.+?[*_]{2}\"},{cN:\"emphasis\",v:[{b:\"\\\\*.+?\\\\*\"},{b:\"_.+?_\",r:0}]},{cN:\"blockquote\",b:\"^>\\\\s+\",e:\"$\"},{cN:\"code\",v:[{b:\"`.+?`\"},{b:\"^( {4}|\t)\",e:\"$\",r:0}]},{cN:\"horizontal_rule\",b:\"^[-\\\\*]{3,}\",e:\"$\"},{b:\"\\\\[.+?\\\\][\\\\(\\\\[].*?[\\\\)\\\\]]\",rB:!0,c:[{cN:\"link_label\",b:\"\\\\[\",e:\"\\\\]\",eB:!0,rE:!0,r:0},{cN:\"link_url\",b:\"\\\\]\\\\(\",e:\"\\\\)\",eB:!0,eE:!0},{cN:\"link_reference\",b:\"\\\\]\\\\[\",e:\"\\\\]\",eB:!0,eE:!0}],r:10},{b:\"^\\\\[.+\\\\]:\",rB:!0,c:[{cN:\"link_reference\",b:\"\\\\[\",e:\"\\\\]:\",eB:!0,eE:!0,starts:{cN:\"link_url\",e:\"$\"}}]}]}});hljs.registerLanguage(\"ruby\",function(e){var c=\"[a-zA-Z_]\\\\w*[!?=]?|[-+~]\\\\@|<<|>>|=~|===?|<=>|[<>]=?|\\\\*\\\\*|[-/+%^&*~`|]|\\\\[\\\\]=?\",r=\"and false then defined module in return redo if BEGIN retry end for true self when next until do begin unless END rescue nil else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor\",b={cN:\"doctag\",b:\"@[A-Za-z]+\"},a={cN:\"value\",b:\"#<\",e:\">\"},n=[e.C(\"#\",\"$\",{c:[b]}),e.C(\"^\\\\=begin\",\"^\\\\=end\",{c:[b],r:10}),e.C(\"^__END__\",\"\\\\n$\")],s={cN:\"subst\",b:\"#\\\\{\",e:\"}\",k:r},t={cN:\"string\",c:[e.BE,s],v:[{b:/'/,e:/'/},{b:/\"/,e:/\"/},{b:/`/,e:/`/},{b:\"%[qQwWx]?\\\\(\",e:\"\\\\)\"},{b:\"%[qQwWx]?\\\\[\",e:\"\\\\]\"},{b:\"%[qQwWx]?{\",e:\"}\"},{b:\"%[qQwWx]?<\",e:\">\"},{b:\"%[qQwWx]?/\",e:\"/\"},{b:\"%[qQwWx]?%\",e:\"%\"},{b:\"%[qQwWx]?-\",e:\"-\"},{b:\"%[qQwWx]?\\\\|\",e:\"\\\\|\"},{b:/\\B\\?(\\\\\\d{1,3}|\\\\x[A-Fa-f0-9]{1,2}|\\\\u[A-Fa-f0-9]{4}|\\\\?\\S)\\b/}]},i={cN:\"params\",b:\"\\\\(\",e:\"\\\\)\",k:r},d=[t,a,{cN:\"class\",bK:\"class module\",e:\"$|;\",i:/=/,c:[e.inherit(e.TM,{b:\"[A-Za-z_]\\\\w*(::\\\\w+)*(\\\\?|\\\\!)?\"}),{cN:\"inheritance\",b:\"<\\\\s*\",c:[{cN:\"parent\",b:\"(\"+e.IR+\"::)?\"+e.IR}]}].concat(n)},{cN:\"function\",bK:\"def\",e:\"$|;\",c:[e.inherit(e.TM,{b:c}),i].concat(n)},{cN:\"constant\",b:\"(::)?(\\\\b[A-Z]\\\\w*(::)?)+\",r:0},{cN:\"symbol\",b:e.UIR+\"(\\\\!|\\\\?)?:\",r:0},{cN:\"symbol\",b:\":\",c:[t,{b:c}],r:0},{cN:\"number\",b:\"(\\\\b0[0-7_]+)|(\\\\b0x[0-9a-fA-F_]+)|(\\\\b[1-9][0-9_]*(\\\\.[0-9_]+)?)|[0_]\\\\b\",r:0},{cN:\"variable\",b:\"(\\\\$\\\\W)|((\\\\$|\\\\@\\\\@?)(\\\\w+))\"},{b:\"(\"+e.RSR+\")\\\\s*\",c:[a,{cN:\"regexp\",c:[e.BE,s],i:/\\n/,v:[{b:\"/\",e:\"/[a-z]*\"},{b:\"%r{\",e:\"}[a-z]*\"},{b:\"%r\\\\(\",e:\"\\\\)[a-z]*\"},{b:\"%r!\",e:\"![a-z]*\"},{b:\"%r\\\\[\",e:\"\\\\][a-z]*\"}]}].concat(n),r:0}].concat(n);s.c=d,i.c=d;var o=\"[>?]>\",l=\"[\\\\w#]+\\\\(\\\\w+\\\\):\\\\d+:\\\\d+>\",u=\"(\\\\w+-)?\\\\d+\\\\.\\\\d+\\\\.\\\\d(p\\\\d+)?[^>]+>\",N=[{b:/^\\s*=>/,cN:\"status\",starts:{e:\"$\",c:d}},{cN:\"prompt\",b:\"^(\"+o+\"|\"+l+\"|\"+u+\")\",starts:{e:\"$\",c:d}}];return{aliases:[\"rb\",\"gemspec\",\"podspec\",\"thor\",\"irb\"],k:r,c:n.concat(N).concat(d)}});hljs.registerLanguage(\"makefile\",function(e){var a={cN:\"variable\",b:/\\$\\(/,e:/\\)/,c:[e.BE]};return{aliases:[\"mk\",\"mak\"],c:[e.HCM,{b:/^\\w+\\s*\\W*=/,rB:!0,r:0,starts:{cN:\"constant\",e:/\\s*\\W*=/,eE:!0,starts:{e:/$/,r:0,c:[a]}}},{cN:\"title\",b:/^[\\w]+:\\s*$/},{cN:\"phony\",b:/^\\.PHONY:/,e:/$/,k:\".PHONY\",l:/[\\.\\w]+/},{b:/^\\t+/,e:/$/,r:0,c:[e.QSM,a]}]}});hljs.registerLanguage(\"json\",function(e){var t={literal:\"true false null\"},i=[e.QSM,e.CNM],l={cN:\"value\",e:\",\",eW:!0,eE:!0,c:i,k:t},c={b:\"{\",e:\"}\",c:[{cN:\"attribute\",b:'\\\\s*\"',e:'\"\\\\s*:\\\\s*',eB:!0,eE:!0,c:[e.BE],i:\"\\\\n\",starts:l}],i:\"\\\\S\"},n={b:\"\\\\[\",e:\"\\\\]\",c:[e.inherit(l,{cN:null})],i:\"\\\\S\"};return i.splice(i.length,0,c,n),{c:i,k:t,i:\"\\\\S\"}});hljs.registerLanguage(\"xml\",function(t){var s=\"[A-Za-z0-9\\\\._:-]+\",c={b:/<\\?(php)?(?!\\w)/,e:/\\?>/,sL:\"php\"},e={eW:!0,i:/</,r:0,c:[c,{cN:\"attribute\",b:s,r:0},{b:\"=\",r:0,c:[{cN:\"value\",c:[c],v:[{b:/\"/,e:/\"/},{b:/'/,e:/'/},{b:/[^\\s\\/>]+/}]}]}]};return{aliases:[\"html\",\"xhtml\",\"rss\",\"atom\",\"xsl\",\"plist\"],cI:!0,c:[{cN:\"doctype\",b:\"<!DOCTYPE\",e:\">\",r:10,c:[{b:\"\\\\[\",e:\"\\\\]\"}]},t.C(\"<!--\",\"-->\",{r:10}),{cN:\"cdata\",b:\"<\\\\!\\\\[CDATA\\\\[\",e:\"\\\\]\\\\]>\",r:10},{cN:\"tag\",b:\"<style(?=\\\\s|>|$)\",e:\">\",k:{title:\"style\"},c:[e],starts:{e:\"</style>\",rE:!0,sL:\"css\"}},{cN:\"tag\",b:\"<script(?=\\\\s|>|$)\",e:\">\",k:{title:\"script\"},c:[e],starts:{e:\"</script>\",rE:!0,sL:[\"actionscript\",\"javascript\",\"handlebars\"]}},c,{cN:\"pi\",b:/<\\?\\w+/,e:/\\?>/,r:10},{cN:\"tag\",b:\"</?\",e:\"/?>\",c:[{cN:\"title\",b:/[^ \\/><\\n\\t]+/,r:0},e]}]}});hljs.registerLanguage(\"css\",function(e){var c=\"[a-zA-Z-][a-zA-Z0-9_-]*\",a={cN:\"function\",b:c+\"\\\\(\",rB:!0,eE:!0,e:\"\\\\(\"},r={cN:\"rule\",b:/[A-Z\\_\\.\\-]+\\s*:/,rB:!0,e:\";\",eW:!0,c:[{cN:\"attribute\",b:/\\S/,e:\":\",eE:!0,starts:{cN:\"value\",eW:!0,eE:!0,c:[a,e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:\"hexcolor\",b:\"#[0-9A-Fa-f]+\"},{cN:\"important\",b:\"!important\"}]}}]};return{cI:!0,i:/[=\\/|'\\$]/,c:[e.CBCM,r,{cN:\"id\",b:/\\#[A-Za-z0-9_-]+/},{cN:\"class\",b:/\\.[A-Za-z0-9_-]+/},{cN:\"attr_selector\",b:/\\[/,e:/\\]/,i:\"$\"},{cN:\"pseudo\",b:/:(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\"']+/},{cN:\"at_rule\",b:\"@(font-face|page)\",l:\"[a-z-]+\",k:\"font-face page\"},{cN:\"at_rule\",b:\"@\",e:\"[{;]\",c:[{cN:\"keyword\",b:/\\S+/},{b:/\\s/,eW:!0,eE:!0,r:0,c:[a,e.ASM,e.QSM,e.CSSNM]}]},{cN:\"tag\",b:c,r:0},{cN:\"rules\",b:\"{\",e:\"}\",i:/\\S/,c:[e.CBCM,r]}]}});hljs.registerLanguage(\"perl\",function(e){var t=\"getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when\",r={cN:\"subst\",b:\"[$@]\\\\{\",e:\"\\\\}\",k:t},s={b:\"->{\",e:\"}\"},n={cN:\"variable\",v:[{b:/\\$\\d/},{b:/[\\$%@](\\^\\w\\b|#\\w+(::\\w+)*|{\\w+}|\\w+(::\\w*)*)/},{b:/[\\$%@][^\\s\\w{]/,r:0}]},o=[e.BE,r,n],i=[n,e.HCM,e.C(\"^\\\\=\\\\w\",\"\\\\=cut\",{eW:!0}),s,{cN:\"string\",c:o,v:[{b:\"q[qwxr]?\\\\s*\\\\(\",e:\"\\\\)\",r:5},{b:\"q[qwxr]?\\\\s*\\\\[\",e:\"\\\\]\",r:5},{b:\"q[qwxr]?\\\\s*\\\\{\",e:\"\\\\}\",r:5},{b:\"q[qwxr]?\\\\s*\\\\|\",e:\"\\\\|\",r:5},{b:\"q[qwxr]?\\\\s*\\\\<\",e:\"\\\\>\",r:5},{b:\"qw\\\\s+q\",e:\"q\",r:5},{b:\"'\",e:\"'\",c:[e.BE]},{b:'\"',e:'\"'},{b:\"`\",e:\"`\",c:[e.BE]},{b:\"{\\\\w+}\",c:[],r:0},{b:\"-?\\\\w+\\\\s*\\\\=\\\\>\",c:[],r:0}]},{cN:\"number\",b:\"(\\\\b0[0-7_]+)|(\\\\b0x[0-9a-fA-F_]+)|(\\\\b[1-9][0-9_]*(\\\\.[0-9_]+)?)|[0_]\\\\b\",r:0},{b:\"(\\\\/\\\\/|\"+e.RSR+\"|\\\\b(split|return|print|reverse|grep)\\\\b)\\\\s*\",k:\"split return print reverse grep\",r:0,c:[e.HCM,{cN:\"regexp\",b:\"(s|tr|y)/(\\\\\\\\.|[^/])*/(\\\\\\\\.|[^/])*/[a-z]*\",r:10},{cN:\"regexp\",b:\"(m|qr)?/\",e:\"/[a-z]*\",c:[e.BE],r:0}]},{cN:\"sub\",bK:\"sub\",e:\"(\\\\s*\\\\(.*?\\\\))?[;{]\",r:5},{cN:\"operator\",b:\"-\\\\w\\\\b\",r:0},{b:\"^__DATA__$\",e:\"^__END__$\",sL:\"mojolicious\",c:[{b:\"^@@.*\",e:\"$\",cN:\"comment\"}]}];return r.c=i,s.c=i,{aliases:[\"pl\"],k:t,c:i}});hljs.registerLanguage(\"cs\",function(e){var r=\"abstract as base bool break byte case catch char checked const continue decimal dynamic default delegate do double else enum event explicit extern false finally fixed float for foreach goto if implicit in int interface internal is lock long null when object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this true try typeof uint ulong unchecked unsafe ushort using virtual volatile void while async protected public private internal ascending descending from get group into join let orderby partial select set value var where yield\",t=e.IR+\"(<\"+e.IR+\">)?\";return{aliases:[\"csharp\"],k:r,i:/::/,c:[e.C(\"///\",\"$\",{rB:!0,c:[{cN:\"xmlDocTag\",v:[{b:\"///\",r:0},{b:\"<!--|-->\"},{b:\"</?\",e:\">\"}]}]}),e.CLCM,e.CBCM,{cN:\"preprocessor\",b:\"#\",e:\"$\",k:\"if else elif endif define undef warning error line region endregion pragma checksum\"},{cN:\"string\",b:'@\"',e:'\"',c:[{b:'\"\"'}]},e.ASM,e.QSM,e.CNM,{bK:\"class interface\",e:/[{;=]/,i:/[^\\s:]/,c:[e.TM,e.CLCM,e.CBCM]},{bK:\"namespace\",e:/[{;=]/,i:/[^\\s:]/,c:[{cN:\"title\",b:\"[a-zA-Z](\\\\.?\\\\w)*\",r:0},e.CLCM,e.CBCM]},{bK:\"new return throw await\",r:0},{cN:\"function\",b:\"(\"+t+\"\\\\s+)+\"+e.IR+\"\\\\s*\\\\(\",rB:!0,e:/[{;=]/,eE:!0,k:r,c:[{b:e.IR+\"\\\\s*\\\\(\",rB:!0,c:[e.TM],r:0},{cN:\"params\",b:/\\(/,e:/\\)/,eB:!0,eE:!0,k:r,r:0,c:[e.ASM,e.QSM,e.CNM,e.CBCM]},e.CLCM,e.CBCM]}]}});hljs.registerLanguage(\"apache\",function(e){var r={cN:\"number\",b:\"[\\\\$%]\\\\d+\"};return{aliases:[\"apacheconf\"],cI:!0,c:[e.HCM,{cN:\"tag\",b:\"</?\",e:\">\"},{cN:\"keyword\",b:/\\w+/,r:0,k:{common:\"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername\"},starts:{e:/$/,r:0,k:{literal:\"on off all\"},c:[{cN:\"sqbracket\",b:\"\\\\s\\\\[\",e:\"\\\\]$\"},{cN:\"cbracket\",b:\"[\\\\$%]\\\\{\",e:\"\\\\}\",c:[\"self\",r]},r,e.QSM]}}],i:/\\S/}});hljs.registerLanguage(\"http\",function(t){return{aliases:[\"https\"],i:\"\\\\S\",c:[{cN:\"status\",b:\"^HTTP/[0-9\\\\.]+\",e:\"$\",c:[{cN:\"number\",b:\"\\\\b\\\\d{3}\\\\b\"}]},{cN:\"request\",b:\"^[A-Z]+ (.*?) HTTP/[0-9\\\\.]+$\",rB:!0,e:\"$\",c:[{cN:\"string\",b:\" \",e:\" \",eB:!0,eE:!0}]},{cN:\"attribute\",b:\"^\\\\w\",e:\": \",eE:!0,i:\"\\\\n|\\\\s|=\",starts:{cN:\"string\",e:\"$\"}},{b:\"\\\\n\\\\n\",starts:{sL:[],eW:!0}}]}});hljs.registerLanguage(\"objectivec\",function(e){var t={cN:\"built_in\",b:\"(AV|CA|CF|CG|CI|MK|MP|NS|UI)\\\\w+\"},i={keyword:\"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required\",literal:\"false true FALSE TRUE nil YES NO NULL\",built_in:\"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once\"},o=/[a-zA-Z@][a-zA-Z0-9_]*/,n=\"@interface @class @protocol @implementation\";return{aliases:[\"mm\",\"objc\",\"obj-c\"],k:i,l:o,i:\"</\",c:[t,e.CLCM,e.CBCM,e.CNM,e.QSM,{cN:\"string\",v:[{b:'@\"',e:'\"',i:\"\\\\n\",c:[e.BE]},{b:\"'\",e:\"[^\\\\\\\\]'\",i:\"[^\\\\\\\\][^']\"}]},{cN:\"preprocessor\",b:\"#\",e:\"$\",c:[{cN:\"title\",v:[{b:'\"',e:'\"'},{b:\"<\",e:\">\"}]}]},{cN:\"class\",b:\"(\"+n.split(\" \").join(\"|\")+\")\\\\b\",e:\"({|$)\",eE:!0,k:n,l:o,c:[e.UTM]},{cN:\"variable\",b:\"\\\\.\"+e.UIR,r:0}]}});hljs.registerLanguage(\"python\",function(e){var r={cN:\"prompt\",b:/^(>>>|\\.\\.\\.) /},b={cN:\"string\",c:[e.BE],v:[{b:/(u|b)?r?'''/,e:/'''/,c:[r],r:10},{b:/(u|b)?r?\"\"\"/,e:/\"\"\"/,c:[r],r:10},{b:/(u|r|ur)'/,e:/'/,r:10},{b:/(u|r|ur)\"/,e:/\"/,r:10},{b:/(b|br)'/,e:/'/},{b:/(b|br)\"/,e:/\"/},e.ASM,e.QSM]},a={cN:\"number\",r:0,v:[{b:e.BNR+\"[lLjJ]?\"},{b:\"\\\\b(0o[0-7]+)[lLjJ]?\"},{b:e.CNR+\"[lLjJ]?\"}]},l={cN:\"params\",b:/\\(/,e:/\\)/,c:[\"self\",r,a,b]};return{aliases:[\"py\",\"gyp\"],k:{keyword:\"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10 None True False\",built_in:\"Ellipsis NotImplemented\"},i:/(<\\/|->|\\?)/,c:[r,a,b,e.HCM,{v:[{cN:\"function\",bK:\"def\",r:10},{cN:\"class\",bK:\"class\"}],e:/:/,i:/[${=;\\n,]/,c:[e.UTM,l]},{cN:\"decorator\",b:/^[\\t ]*@/,e:/$/},{b:/\\b(print|exec)\\(/}]}});hljs.registerLanguage(\"java\",function(e){var a=e.UIR+\"(<\"+e.UIR+\">)?\",t=\"false synchronized int abstract float private char boolean static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private\",c=\"\\\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+)(\\\\.([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+))?|\\\\.([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+))([eE][-+]?\\\\d+)?)[lLfF]?\",r={cN:\"number\",b:c,r:0};return{aliases:[\"jsp\"],k:t,i:/<\\/|#/,c:[e.C(\"/\\\\*\\\\*\",\"\\\\*/\",{r:0,c:[{cN:\"doctag\",b:\"@[A-Za-z]+\"}]}),e.CLCM,e.CBCM,e.ASM,e.QSM,{cN:\"class\",bK:\"class interface\",e:/[{;=]/,eE:!0,k:\"class interface\",i:/[:\"\\[\\]]/,c:[{bK:\"extends implements\"},e.UTM]},{bK:\"new throw return else\",r:0},{cN:\"function\",b:\"(\"+a+\"\\\\s+)+\"+e.UIR+\"\\\\s*\\\\(\",rB:!0,e:/[{;=]/,eE:!0,k:t,c:[{b:e.UIR+\"\\\\s*\\\\(\",rB:!0,r:0,c:[e.UTM]},{cN:\"params\",b:/\\(/,e:/\\)/,k:t,r:0,c:[e.ASM,e.QSM,e.CNM,e.CBCM]},e.CLCM,e.CBCM]},r,{cN:\"annotation\",b:\"@[A-Za-z]+\"}]}});hljs.registerLanguage(\"bash\",function(e){var t={cN:\"variable\",v:[{b:/\\$[\\w\\d#@][\\w\\d_]*/},{b:/\\$\\{(.*?)}/}]},s={cN:\"string\",b:/\"/,e:/\"/,c:[e.BE,t,{cN:\"variable\",b:/\\$\\(/,e:/\\)/,c:[e.BE]}]},a={cN:\"string\",b:/'/,e:/'/};return{aliases:[\"sh\",\"zsh\"],l:/-?[a-z\\.]+/,k:{keyword:\"if then else elif fi for while in do done case esac function\",literal:\"true false\",built_in:\"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp\",operator:\"-ne -eq -lt -gt -f -d -e -s -l -a\"},c:[{cN:\"shebang\",b:/^#![^\\n]+sh\\s*$/,r:10},{cN:\"function\",b:/\\w[\\w\\d_]*\\s*\\(\\s*\\)\\s*\\{/,rB:!0,c:[e.inherit(e.TM,{b:/\\w[\\w\\d_]*/})],r:0},e.HCM,e.NM,s,a,t]}});hljs.registerLanguage(\"sql\",function(e){var t=e.C(\"--\",\"$\");return{cI:!0,i:/[<>{}*]/,c:[{cN:\"operator\",bK:\"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke\",e:/;/,eW:!0,k:{keyword:\"abort abs absolute acc acce accep accept access accessed accessible account acos action activate add addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias allocate allow alter always analyze ancillary and any anydata anydataset anyschema anytype apply archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound buffer_cache buffer_pool build bulk by byte byteordermark bytes c cache caching call calling cancel capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base char_length character_length characters characterset charindex charset charsetform charsetid check checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation collect colu colum column column_value columns columns_updated comment commit compact compatibility compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection consider consistent constant constraint constraints constructor container content contents context contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime customdatum cycle d data database databases datafile datafiles datalength date_add date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor deterministic diagnostics difference dimension direct_load directory disable disable_all disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div do document domain dotnet double downgrade drop dumpfile duplicate duration e each edition editionable editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding execu execut execute exempt exists exit exp expire explain export export_set extended extent external external_1 external_2 externally extract f failed failed_login_attempts failover failure far fast feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final finish first first_value fixed flash_cache flashback floor flush following follows for forall force form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ftp full function g general generated get get_format get_lock getdate getutcdate global global_name globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex hierarchy high high_priority hosts hour http i id ident_current ident_incr ident_seed identified identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile initial initialized initially initrans inmemory inner innodb input insert install instance instantiable instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists k keep keep_duplicates key keys kill l language large last last_day last_insert_id last_value lax lcase lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call logoff logon logs long loop low low_priority lower lpad lrtrim ltrim m main make_set makedate maketime managed management manual map mapping mask master master_pos_wait match matched materialized max maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans md5 measures median medium member memcompress memory merge microsecond mid migration min minextents minimum mining minus minute minvalue missing mod mode model modification modify module monitoring month months mount move movement multiset mutex n name name_const names nan national native natural nav nchar nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck noswitch not nothing notice notrim novalidate now nowait nth_value nullif nulls num numb numbe nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary out outer outfile outline output over overflow overriding p package pad parallel parallel_enable parameters parent parse partial partition partitions pascal passing password password_grace_time password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction prediction_cost prediction_details prediction_probability prediction_set prepare present preserve prior priority private private_sga privileges procedural procedure procedure_analyze processlist profiles project prompt protection public publishingservername purge quarter query quick quiesce quota quotename radians raise rand range rank raw read reads readsize rebuild record records recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename repair repeat replace replicate replication required reset resetlogs resize resource respect restore restricted result result_cache resumable resume retention return returning returns reuse reverse revoke right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll sdo_georaster sdo_topo_geometry search sec_to_time second section securefile security seed segment select self sequence sequential serializable server servererror session session_user sessions_per_user set sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone standby start starting startup statement static statistics stats_binomial_test stats_crosstab stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime t table tables tablespace tan tdo template temporary terminated tertiary_weights test than then thread through tier ties time time_format time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unpivot unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear wellformed when whene whenev wheneve whenever where while whitespace with within without work wrapped xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek\",literal:\"true false null\",built_in:\"array bigint binary bit blob boolean char character date dec decimal float int int8 integer interval number numeric real record serial serial8 smallint text varchar varying void\"},c:[{cN:\"string\",b:\"'\",e:\"'\",c:[e.BE,{b:\"''\"}]},{cN:\"string\",b:'\"',e:'\"',c:[e.BE,{b:'\"\"'}]},{cN:\"string\",b:\"`\",e:\"`\",c:[e.BE]},e.CNM,e.CBCM,t]},e.CBCM,t]}});hljs.registerLanguage(\"nginx\",function(e){var r={cN:\"variable\",v:[{b:/\\$\\d+/},{b:/\\$\\{/,e:/}/},{b:\"[\\\\$\\\\@]\"+e.UIR}]},b={eW:!0,l:\"[a-z/_]+\",k:{built_in:\"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll\"},r:0,i:\"=>\",c:[e.HCM,{cN:\"string\",c:[e.BE,r],v:[{b:/\"/,e:/\"/},{b:/'/,e:/'/}]},{cN:\"url\",b:\"([a-z]+):/\",e:\"\\\\s\",eW:!0,eE:!0,c:[r]},{cN:\"regexp\",c:[e.BE,r],v:[{b:\"\\\\s\\\\^\",e:\"\\\\s|{|;\",rE:!0},{b:\"~\\\\*?\\\\s+\",e:\"\\\\s|{|;\",rE:!0},{b:\"\\\\*(\\\\.[a-z\\\\-]+)+\"},{b:\"([a-z\\\\-]+\\\\.)+\\\\*\"}]},{cN:\"number\",b:\"\\\\b\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}(:\\\\d{1,5})?\\\\b\"},{cN:\"number\",b:\"\\\\b\\\\d+[kKmMgGdshdwy]*\\\\b\",r:0},r]};return{aliases:[\"nginxconf\"],c:[e.HCM,{b:e.UIR+\"\\\\s\",e:\";|{\",rB:!0,c:[{cN:\"title\",b:e.UIR,starts:b}],r:0}],i:\"[^\\\\s\\\\}]\"}});hljs.registerLanguage(\"cpp\",function(t){var e={cN:\"keyword\",b:\"\\\\b[a-z\\\\d_]*_t\\\\b\"},r={cN:\"string\",v:[t.inherit(t.QSM,{b:'((u8?|U)|L)?\"'}),{b:'(u8?|U)?R\"',e:'\"',c:[t.BE]},{b:\"'\\\\\\\\?.\",e:\"'\",i:\".\"}]},s={cN:\"number\",v:[{b:\"\\\\b(\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)(u|U|l|L|ul|UL|f|F)\"},{b:t.CNR}]},i={cN:\"preprocessor\",b:\"#\",e:\"$\",k:\"if else elif endif define undef warning error line pragma ifdef ifndef\",c:[{b:/\\\\\\n/,r:0},{bK:\"include\",e:\"$\",c:[r,{cN:\"string\",b:\"<\",e:\">\",i:\"\\\\n\"}]},r,s,t.CLCM,t.CBCM]},a=t.IR+\"\\\\s*\\\\(\",c={keyword:\"int float while private char catch export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const struct for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using class asm case typeid short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignof constexpr decltype noexcept static_assert thread_local restrict _Bool complex _Complex _Imaginary atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong\",built_in:\"std string cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf\",literal:\"true false nullptr NULL\"};return{aliases:[\"c\",\"cc\",\"h\",\"c++\",\"h++\",\"hpp\"],k:c,i:\"</\",c:[e,t.CLCM,t.CBCM,s,r,i,{b:\"\\\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\\\s*<\",e:\">\",k:c,c:[\"self\",e]},{b:t.IR+\"::\",k:c},{bK:\"new throw return else\",r:0},{cN:\"function\",b:\"(\"+t.IR+\"[\\\\*&\\\\s]+)+\"+a,rB:!0,e:/[{;=]/,eE:!0,k:c,i:/[^\\w\\s\\*&]/,c:[{b:a,rB:!0,c:[t.TM],r:0},{cN:\"params\",b:/\\(/,e:/\\)/,k:c,r:0,c:[t.CLCM,t.CBCM,r,s]},t.CLCM,t.CBCM,i]}]}});hljs.registerLanguage(\"php\",function(e){var c={cN:\"variable\",b:\"\\\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*\"},a={cN:\"preprocessor\",b:/<\\?(php)?|\\?>/},i={cN:\"string\",c:[e.BE,a],v:[{b:'b\"',e:'\"'},{b:\"b'\",e:\"'\"},e.inherit(e.ASM,{i:null}),e.inherit(e.QSM,{i:null})]},t={v:[e.BNM,e.CNM]};return{aliases:[\"php3\",\"php4\",\"php5\",\"php6\"],cI:!0,k:\"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally\",c:[e.CLCM,e.HCM,e.C(\"/\\\\*\",\"\\\\*/\",{c:[{cN:\"doctag\",b:\"@[A-Za-z]+\"},a]}),e.C(\"__halt_compiler.+?;\",!1,{eW:!0,k:\"__halt_compiler\",l:e.UIR}),{cN:\"string\",b:/<<<['\"]?\\w+['\"]?$/,e:/^\\w+;?$/,c:[e.BE,{cN:\"subst\",v:[{b:/\\$\\w+/},{b:/\\{\\$/,e:/\\}/}]}]},a,c,{b:/(::|->)+[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*/},{cN:\"function\",bK:\"function\",e:/[;{]/,eE:!0,i:\"\\\\$|\\\\[|%\",c:[e.UTM,{cN:\"params\",b:\"\\\\(\",e:\"\\\\)\",c:[\"self\",c,e.CBCM,i,t]}]},{cN:\"class\",bK:\"class interface\",e:\"{\",eE:!0,i:/[:\\(\\$\"]/,c:[{bK:\"extends implements\"},e.UTM]},{bK:\"namespace\",e:\";\",i:/[\\.']/,c:[e.UTM]},{bK:\"use\",e:\";\",c:[e.UTM]},{b:\"=>\"},i,t]}});hljs.registerLanguage(\"coffeescript\",function(e){var c={keyword:\"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super then unless until loop of by when and or is isnt not\",literal:\"true false null undefined yes no on off\",built_in:\"npm require console print module global window document\"},n=\"[A-Za-z$_][0-9A-Za-z$_]*\",r={cN:\"subst\",b:/#\\{/,e:/}/,k:c},t=[e.BNM,e.inherit(e.CNM,{starts:{e:\"(\\\\s*/)?\",r:0}}),{cN:\"string\",v:[{b:/'''/,e:/'''/,c:[e.BE]},{b:/'/,e:/'/,c:[e.BE]},{b:/\"\"\"/,e:/\"\"\"/,c:[e.BE,r]},{b:/\"/,e:/\"/,c:[e.BE,r]}]},{cN:\"regexp\",v:[{b:\"///\",e:\"///\",c:[r,e.HCM]},{b:\"//[gim]*\",r:0},{b:/\\/(?![ *])(\\\\\\/|.)*?\\/[gim]*(?=\\W|$)/}]},{cN:\"property\",b:\"@\"+n},{b:\"`\",e:\"`\",eB:!0,eE:!0,sL:\"javascript\"}];r.c=t;var s=e.inherit(e.TM,{b:n}),i=\"(\\\\(.*\\\\))?\\\\s*\\\\B[-=]>\",o={cN:\"params\",b:\"\\\\([^\\\\(]\",rB:!0,c:[{b:/\\(/,e:/\\)/,k:c,c:[\"self\"].concat(t)}]};return{aliases:[\"coffee\",\"cson\",\"iced\"],k:c,i:/\\/\\*/,c:t.concat([e.C(\"###\",\"###\"),e.HCM,{cN:\"function\",b:\"^\\\\s*\"+n+\"\\\\s*=\\\\s*\"+i,e:\"[-=]>\",rB:!0,c:[s,o]},{b:/[:\\(,=]\\s*/,r:0,c:[{cN:\"function\",b:i,e:\"[-=]>\",rB:!0,c:[o]}]},{cN:\"class\",bK:\"class\",e:\"$\",i:/[:=\"\\[\\]]/,c:[{bK:\"extends\",eW:!0,i:/[:=\"\\[\\]]/,c:[s]},s]},{cN:\"attribute\",b:n+\":\",e:\":\",rB:!0,rE:!0,r:0}])}});hljs.registerLanguage(\"javascript\",function(e){return{aliases:[\"js\"],k:{keyword:\"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await\",literal:\"true false null undefined NaN Infinity\",built_in:\"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise\"},c:[{cN:\"pi\",r:10,b:/^\\s*['\"]use (strict|asm)['\"]/},e.ASM,e.QSM,{cN:\"string\",b:\"`\",e:\"`\",c:[e.BE,{cN:\"subst\",b:\"\\\\$\\\\{\",e:\"\\\\}\"}]},e.CLCM,e.CBCM,{cN:\"number\",v:[{b:\"\\\\b(0[bB][01]+)\"},{b:\"\\\\b(0[oO][0-7]+)\"},{b:e.CNR}],r:0},{b:\"(\"+e.RSR+\"|\\\\b(case|return|throw)\\\\b)\\\\s*\",k:\"return throw case\",c:[e.CLCM,e.CBCM,e.RM,{b:/</,e:/>\\s*[);\\]]/,r:0,sL:\"xml\"}],r:0},{cN:\"function\",bK:\"function\",e:/\\{/,eE:!0,c:[e.inherit(e.TM,{b:/[A-Za-z$_][0-9A-Za-z$_]*/}),{cN:\"params\",b:/\\(/,e:/\\)/,eB:!0,eE:!0,c:[e.CLCM,e.CBCM]}],i:/\\[|%/},{b:/\\$[(.]/},{b:\"\\\\.\"+e.IR,r:0},{bK:\"import\",e:\"[;$]\",k:\"import from as\",c:[e.ASM,e.QSM]},{cN:\"class\",bK:\"class\",e:/[{;=]/,eE:!0,i:/[:\"\\[\\]]/,c:[{bK:\"extends\"},e.UTM]}],i:/#/}});hljs.registerLanguage(\"ini\",function(e){var c={cN:\"string\",c:[e.BE],v:[{b:\"'''\",e:\"'''\",r:10},{b:'\"\"\"',e:'\"\"\"',r:10},{b:'\"',e:'\"'},{b:\"'\",e:\"'\"}]};return{aliases:[\"toml\"],cI:!0,i:/\\S/,c:[e.C(\";\",\"$\"),e.HCM,{cN:\"title\",b:/^\\s*\\[+/,e:/\\]+/},{cN:\"setting\",b:/^[a-z0-9\\[\\]_-]+\\s*=\\s*/,e:\"$\",c:[{cN:\"value\",eW:!0,k:\"on off true false yes no\",c:[{cN:\"variable\",v:[{b:/\\$[\\w\\d\"][\\w\\d_]*/},{b:/\\$\\{(.*?)}/}]},c,{cN:\"number\",b:/([\\+\\-]+)?[\\d]+_[\\d_]+/},e.NM],r:0}]}]}});hljs.registerLanguage(\"diff\",function(e){return{aliases:[\"patch\"],c:[{cN:\"chunk\",r:10,v:[{b:/^@@ +\\-\\d+,\\d+ +\\+\\d+,\\d+ +@@$/},{b:/^\\*\\*\\* +\\d+,\\d+ +\\*\\*\\*\\*$/},{b:/^\\-\\-\\- +\\d+,\\d+ +\\-\\-\\-\\-$/}]},{cN:\"header\",v:[{b:/Index: /,e:/$/},{b:/=====/,e:/=====$/},{b:/^\\-\\-\\-/,e:/$/},{b:/^\\*{3} /,e:/$/},{b:/^\\+\\+\\+/,e:/$/},{b:/\\*{5}/,e:/\\*{5}$/}]},{cN:\"addition\",b:\"^\\\\+\",e:\"$\"},{cN:\"deletion\",b:\"^\\\\-\",e:\"$\"},{cN:\"change\",b:\"^\\\\!\",e:\"$\"}]}});\nexports.hljs = hljs;\n",
            "type": "application/javascript",
            "title": "$:/plugins/tiddlywiki/highlight/highlight.js",
            "module-type": "library"
        },
        "$:/plugins/tiddlywiki/highlight/highlight.css": {
            "text": "/*\n\nOriginal style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: #f0f0f0;\n  -webkit-text-size-adjust: none;\n}\n\n.hljs,\n.hljs-subst,\n.hljs-tag .hljs-title,\n.nginx .hljs-title {\n  color: black;\n}\n\n.hljs-string,\n.hljs-title,\n.hljs-constant,\n.hljs-parent,\n.hljs-tag .hljs-value,\n.hljs-rule .hljs-value,\n.hljs-preprocessor,\n.hljs-pragma,\n.hljs-name,\n.haml .hljs-symbol,\n.ruby .hljs-symbol,\n.ruby .hljs-symbol .hljs-string,\n.hljs-template_tag,\n.django .hljs-variable,\n.smalltalk .hljs-class,\n.hljs-addition,\n.hljs-flow,\n.hljs-stream,\n.bash .hljs-variable,\n.pf .hljs-variable,\n.apache .hljs-tag,\n.apache .hljs-cbracket,\n.tex .hljs-command,\n.tex .hljs-special,\n.erlang_repl .hljs-function_or_atom,\n.asciidoc .hljs-header,\n.markdown .hljs-header,\n.coffeescript .hljs-attribute,\n.tp .hljs-variable {\n  color: #800;\n}\n\n.smartquote,\n.hljs-comment,\n.hljs-annotation,\n.diff .hljs-header,\n.hljs-chunk,\n.asciidoc .hljs-blockquote,\n.markdown .hljs-blockquote {\n  color: #888;\n}\n\n.hljs-number,\n.hljs-date,\n.hljs-regexp,\n.hljs-literal,\n.hljs-hexcolor,\n.smalltalk .hljs-symbol,\n.smalltalk .hljs-char,\n.go .hljs-constant,\n.hljs-change,\n.lasso .hljs-variable,\n.makefile .hljs-variable,\n.asciidoc .hljs-bullet,\n.markdown .hljs-bullet,\n.asciidoc .hljs-link_url,\n.markdown .hljs-link_url {\n  color: #080;\n}\n\n.hljs-label,\n.ruby .hljs-string,\n.hljs-decorator,\n.hljs-filter .hljs-argument,\n.hljs-localvars,\n.hljs-array,\n.hljs-attr_selector,\n.hljs-important,\n.hljs-pseudo,\n.hljs-pi,\n.haml .hljs-bullet,\n.hljs-doctype,\n.hljs-deletion,\n.hljs-envvar,\n.hljs-shebang,\n.apache .hljs-sqbracket,\n.nginx .hljs-built_in,\n.tex .hljs-formula,\n.erlang_repl .hljs-reserved,\n.hljs-prompt,\n.asciidoc .hljs-link_label,\n.markdown .hljs-link_label,\n.vhdl .hljs-attribute,\n.clojure .hljs-attribute,\n.asciidoc .hljs-attribute,\n.lasso .hljs-attribute,\n.coffeescript .hljs-property,\n.hljs-phony {\n  color: #88f;\n}\n\n.hljs-keyword,\n.hljs-id,\n.hljs-title,\n.hljs-built_in,\n.css .hljs-tag,\n.hljs-doctag,\n.smalltalk .hljs-class,\n.hljs-winutils,\n.bash .hljs-variable,\n.pf .hljs-variable,\n.apache .hljs-tag,\n.hljs-type,\n.hljs-typename,\n.tex .hljs-command,\n.asciidoc .hljs-strong,\n.markdown .hljs-strong,\n.hljs-request,\n.hljs-status,\n.tp .hljs-data,\n.tp .hljs-io {\n  font-weight: bold;\n}\n\n.asciidoc .hljs-emphasis,\n.markdown .hljs-emphasis,\n.tp .hljs-units {\n  font-style: italic;\n}\n\n.nginx .hljs-built_in {\n  font-weight: normal;\n}\n\n.coffeescript .javascript,\n.javascript .xml,\n.lasso .markup,\n.tex .hljs-formula,\n.xml .javascript,\n.xml .vbscript,\n.xml .css,\n.xml .hljs-cdata {\n  opacity: 0.5;\n}\n",
            "type": "text/css",
            "title": "$:/plugins/tiddlywiki/highlight/highlight.css",
            "tags": "[[$:/tags/Stylesheet]]"
        },
        "$:/plugins/tiddlywiki/highlight/highlightblock.js": {
            "text": "/*\\\ntitle: $:/plugins/tiddlywiki/highlight/highlightblock.js\ntype: application/javascript\nmodule-type: widget\n\nWraps up the fenced code blocks parser for highlight and use in TiddlyWiki5\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar TYPE_MAPPINGS_BASE = \"$:/config/HighlightPlugin/TypeMappings/\";\n\nvar CodeBlockWidget = require(\"$:/core/modules/widgets/codeblock.js\").codeblock;\n\nvar hljs = require(\"$:/plugins/tiddlywiki/highlight/highlight.js\");\n\nhljs.configure({tabReplace: \"    \"});\t\n\nCodeBlockWidget.prototype.postRender = function() {\n\tvar domNode = this.domNodes[0],\n\t\tlanguage = this.language,\n\t\ttiddler = this.wiki.getTiddler(TYPE_MAPPINGS_BASE + language);\n\tif(tiddler) {\n\t\tlanguage = tiddler.fields.text || \"\";\n\t}\n\tif(language && hljs.listLanguages().indexOf(language) !== -1) {\n\t\tdomNode.className = language.toLowerCase() + \" hljs\";\n\t\tif($tw.browser && !domNode.isTiddlyWikiFakeDom) {\n\t\t\thljs.highlightBlock(domNode);\t\t\t\n\t\t} else {\n\t\t\tvar text = domNode.textContent;\n\t\t\tdomNode.children[0].innerHTML = hljs.fixMarkup(hljs.highlight(language,text).value);\n\t\t\t// If we're using the fakedom then specially save the original raw text\n\t\t\tif(domNode.isTiddlyWikiFakeDom) {\n\t\t\t\tdomNode.children[0].textInnerHTML = text;\n\t\t\t}\n\t\t}\n\t}\t\n};\n\n})();\n",
            "title": "$:/plugins/tiddlywiki/highlight/highlightblock.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/plugins/tiddlywiki/highlight/license": {
            "title": "$:/plugins/tiddlywiki/highlight/license",
            "type": "text/plain",
            "text": "Copyright (c) 2006, Ivan Sagalaev\nAll rights reserved.\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n    * Redistributions of source code must retain the above copyright\n      notice, this list of conditions and the following disclaimer.\n    * Redistributions in binary form must reproduce the above copyright\n      notice, this list of conditions and the following disclaimer in the\n      documentation and/or other materials provided with the distribution.\n    * Neither the name of highlight.js nor the names of its contributors\n      may be used to endorse or promote products derived from this software\n      without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY\nEXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY\nDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\nON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
        },
        "$:/plugins/tiddlywiki/highlight/readme": {
            "title": "$:/plugins/tiddlywiki/highlight/readme",
            "text": "This plugin provides syntax highlighting of code blocks using v8.8.0 of [[highlight.js|https://github.com/isagalaev/highlight.js]] from Ivan Sagalaev.\n\n! Usage\n\nWhen the plugin is installed it automatically applies highlighting to all codeblocks defined with triple backticks or with the CodeBlockWidget.\n\nThe language can optionally be specified after the opening triple braces:\n\n<$codeblock code=\"\"\"```css\n * { margin: 0; padding: 0; } /* micro reset */\n\nhtml { font-size: 62.5%; }\nbody { font-size: 14px; font-size: 1.4rem; } /* =14px */\nh1   { font-size: 24px; font-size: 2.4rem; } /* =24px */\n```\"\"\"/>\n\nIf no language is specified highlight.js will attempt to automatically detect the language.\n\n! Built-in Language Brushes\n\nThe plugin includes support for the following languages (referred to as \"brushes\" by highlight.js):\n\n* apache\n* bash\n* coffeescript\n* cpp\n* cs\n* css\n* diff\n* http\n* ini\n* java\n* javascript\n* json\n* makefile\n* markdown\n* nginx\n* objectivec\n* perl\n* php\n* python\n* ruby\n* sql\n* xml\n\nYou can also specify the language as a MIME content type (eg `text/html` or `text/css`). The mapping is accomplished via mapping tiddlers whose titles start with `$:/config/HighlightPlugin/TypeMappings/`.\n"
        },
        "$:/plugins/tiddlywiki/highlight/styles": {
            "title": "$:/plugins/tiddlywiki/highlight/styles",
            "tags": "[[$:/tags/Stylesheet]]",
            "text": ".hljs{display:block;overflow-x:auto;padding:.5em;color:#333;background:#f8f8f8;-webkit-text-size-adjust:none}.hljs-comment,.diff .hljs-header,.hljs-javadoc{color:#998;font-style:italic}.hljs-keyword,.css .rule .hljs-keyword,.hljs-winutils,.nginx .hljs-title,.hljs-subst,.hljs-request,.hljs-status{color:#333;font-weight:bold}.hljs-number,.hljs-hexcolor,.ruby .hljs-constant{color:teal}.hljs-string,.hljs-tag .hljs-value,.hljs-phpdoc,.hljs-dartdoc,.tex .hljs-formula{color:#d14}.hljs-title,.hljs-id,.scss .hljs-preprocessor{color:#900;font-weight:bold}.hljs-list .hljs-keyword,.hljs-subst{font-weight:normal}.hljs-class .hljs-title,.hljs-type,.vhdl .hljs-literal,.tex .hljs-command{color:#458;font-weight:bold}.hljs-tag,.hljs-tag .hljs-title,.hljs-rule .hljs-property,.django .hljs-tag .hljs-keyword{color:navy;font-weight:normal}.hljs-attribute,.hljs-variable,.lisp .hljs-body,.hljs-name{color:teal}.hljs-regexp{color:#009926}.hljs-symbol,.ruby .hljs-symbol .hljs-string,.lisp .hljs-keyword,.clojure .hljs-keyword,.scheme .hljs-keyword,.tex .hljs-special,.hljs-prompt{color:#990073}.hljs-built_in{color:#0086b3}.hljs-preprocessor,.hljs-pragma,.hljs-pi,.hljs-doctype,.hljs-shebang,.hljs-cdata{color:#999;font-weight:bold}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.diff .hljs-change{background:#0086b3}.hljs-chunk{color:#aaa}"
        },
        "$:/plugins/tiddlywiki/highlight/usage": {
            "title": "$:/plugins/tiddlywiki/highlight/usage",
            "text": "! Usage\n\nFenced code blocks can have a language specifier added to trigger highlighting in a specific language. Otherwise heuristics are used to detect the language.\n\n```\n ```js\n var a = b + c; // Highlighted as JavaScript\n ```\n```\n! Adding Themes\n\nYou can add themes from highlight.js by copying the CSS to a new tiddler and tagging it with [[$:/tags/Stylesheet]]. The available themes can be found on GitHub:\n\nhttps://github.com/isagalaev/highlight.js/tree/master/src/styles\n"
        }
    }
}
{
    "tiddlers": {
        "$:/plugins/tiddlywiki/katex/katex.min.css": {
            "text": ".katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:inline-block;text-align:initial}.katex{font:400 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;white-space:nowrap;text-indent:0}.katex .katex-html{display:inline-block}.katex .katex-mathml{position:absolute;clip:rect(1px,1px,1px,1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}.katex .base,.katex .strut{display:inline-block}.katex .mathrm{font-style:normal}.katex .textit{font-style:italic}.katex .mathit{font-family:KaTeX_Math;font-style:italic}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .amsrm,.katex .mathbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr{font-family:KaTeX_Script}.katex .mathsf{font-family:KaTeX_SansSerif}.katex .mainit{font-family:KaTeX_Main;font-style:italic}.katex .mord+.mop{margin-left:.16667em}.katex .mord+.mbin{margin-left:.22222em}.katex .mord+.mrel{margin-left:.27778em}.katex .mop+.mop,.katex .mop+.mord,.katex .mord+.minner{margin-left:.16667em}.katex .mop+.mrel{margin-left:.27778em}.katex .mop+.minner{margin-left:.16667em}.katex .mbin+.minner,.katex .mbin+.mop,.katex .mbin+.mopen,.katex .mbin+.mord{margin-left:.22222em}.katex .mrel+.minner,.katex .mrel+.mop,.katex .mrel+.mopen,.katex .mrel+.mord{margin-left:.27778em}.katex .mclose+.mop{margin-left:.16667em}.katex .mclose+.mbin{margin-left:.22222em}.katex .mclose+.mrel{margin-left:.27778em}.katex .mclose+.minner,.katex .minner+.mop,.katex .minner+.mord,.katex .mpunct+.mclose,.katex .mpunct+.minner,.katex .mpunct+.mop,.katex .mpunct+.mopen,.katex .mpunct+.mord,.katex .mpunct+.mpunct,.katex .mpunct+.mrel{margin-left:.16667em}.katex .minner+.mbin{margin-left:.22222em}.katex .minner+.mrel{margin-left:.27778em}.katex .minner+.minner,.katex .minner+.mopen,.katex .minner+.mpunct{margin-left:.16667em}.katex .mbin.mtight,.katex .mclose.mtight,.katex .minner.mtight,.katex .mop.mtight,.katex .mopen.mtight,.katex .mord.mtight,.katex .mpunct.mtight,.katex .mrel.mtight{margin-left:0}.katex .mclose+.mop.mtight,.katex .minner+.mop.mtight,.katex .mop+.mop.mtight,.katex .mop+.mord.mtight,.katex .mord+.mop.mtight{margin-left:.16667em}.katex .reset-textstyle.textstyle{font-size:1em}.katex .reset-textstyle.scriptstyle{font-size:.7em}.katex .reset-textstyle.scriptscriptstyle{font-size:.5em}.katex .reset-scriptstyle.textstyle{font-size:1.42857em}.katex .reset-scriptstyle.scriptstyle{font-size:1em}.katex .reset-scriptstyle.scriptscriptstyle{font-size:.71429em}.katex .reset-scriptscriptstyle.textstyle{font-size:2em}.katex .reset-scriptscriptstyle.scriptstyle{font-size:1.4em}.katex .reset-scriptscriptstyle.scriptscriptstyle{font-size:1em}.katex .style-wrap{position:relative}.katex .vlist{display:inline-block}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist .baseline-fix{display:inline-table;table-layout:fixed}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{width:100%}.katex .mfrac .frac-line:before{border-bottom-style:solid;border-bottom-width:1px;content:\"\";display:block}.katex .mfrac .frac-line:after{border-bottom-style:solid;border-bottom-width:.04em;content:\"\";display:block;margin-top:-1px}.katex .mspace{display:inline-block}.katex .mspace.negativethinspace{margin-left:-.16667em}.katex .mspace.thinspace{width:.16667em}.katex .mspace.negativemediumspace{margin-left:-.22222em}.katex .mspace.mediumspace{width:.22222em}.katex .mspace.thickspace{width:.27778em}.katex .mspace.sixmuspace{width:.333333em}.katex .mspace.eightmuspace{width:.444444em}.katex .mspace.enspace{width:.5em}.katex .mspace.twelvemuspace{width:.666667em}.katex .mspace.quad{width:1em}.katex .mspace.qquad{width:2em}.katex .llap,.katex .rlap{width:0;position:relative}.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .rlap>.inner{left:0}.katex .katex-logo .a{font-size:.75em;margin-left:-.32em;position:relative;top:-.2em}.katex .katex-logo .t{margin-left:-.23em}.katex .katex-logo .e{margin-left:-.1667em;position:relative;top:.2155em}.katex .katex-logo .x{margin-left:-.125em}.katex .rule{display:inline-block;border:0 solid;position:relative}.katex .overline .overline-line,.katex .underline .underline-line{width:100%}.katex .overline .overline-line:before,.katex .underline .underline-line:before{border-bottom-style:solid;border-bottom-width:1px;content:\"\";display:block}.katex .overline .overline-line:after,.katex .underline .underline-line:after{border-bottom-style:solid;border-bottom-width:.04em;content:\"\";display:block;margin-top:-1px}.katex .sqrt>.sqrt-sign{position:relative}.katex .sqrt .sqrt-line{width:100%}.katex .sqrt .sqrt-line:before{border-bottom-style:solid;border-bottom-width:1px;content:\"\";display:block}.katex .sqrt .sqrt-line:after{border-bottom-style:solid;border-bottom-width:.04em;content:\"\";display:block;margin-top:-1px}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.katex .fontsize-ensurer,.katex .sizing{display:inline-block}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:2em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:3.46em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:4.14em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.98em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.47142857em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.95714286em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.55714286em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.875em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.125em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.25em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.5em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.8em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.1625em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.5875em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:3.1125em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.77777778em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.88888889em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.6em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.92222222em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.3em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.76666667em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.7em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.8em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.9em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.2em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.44em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.73em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:2.07em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.49em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.58333333em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.66666667em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.75em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.83333333em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44166667em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.725em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.075em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.48611111em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.55555556em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.625em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.69444444em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.20138889em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.4375em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72916667em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.28901734em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.40462428em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.46242775em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.52023121em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.57803468em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69364162em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83236994em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.19653179em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.43930636em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.24154589em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.33816425em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.38647343em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.43478261em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.48309179em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.57971014em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69565217em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83574879em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20289855em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.20080321em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2811245em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.32128514em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.36144578em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.40160643em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48192771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57831325em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69477912em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8313253em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist>span,.katex .op-limits>.vlist>span{text-align:center}.katex .accent .accent-body>span{width:0}.katex .accent .accent-body.accent-vec>span{position:relative;left:.326em}.katex .mtable .vertical-separator{display:inline-block;margin:0 -.025em;border-right:.05em solid #000}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist{text-align:center}.katex .mtable .col-align-l>.vlist{text-align:left}.katex .mtable .col-align-r>.vlist{text-align:right}",
            "type": "text/plain",
            "title": "$:/plugins/tiddlywiki/katex/katex.min.css"
        },
        "$:/plugins/tiddlywiki/katex/katex.min.js": {
            "text": "(function(document) {\n(function(e){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=e()}else if(typeof define===\"function\"&&define.amd){define([],e)}else{var t;if(typeof window!==\"undefined\"){t=window}else if(typeof global!==\"undefined\"){t=global}else if(typeof self!==\"undefined\"){t=self}else{t=this}t.katex=e()}})(function(){var e,t,r;return function a(e,t,r){function i(s,l){if(!t[s]){if(!e[s]){var o=typeof require==\"function\"&&require;if(!l&&o)return o(s,!0);if(n)return n(s,!0);var u=new Error(\"Cannot find module '\"+s+\"'\");throw u.code=\"MODULE_NOT_FOUND\",u}var p=t[s]={exports:{}};e[s][0].call(p.exports,function(t){var r=e[s][1][t];return i(r?r:t)},p,p.exports,a,e,t,r)}return t[s].exports}var n=typeof require==\"function\"&&require;for(var s=0;s<r.length;s++)i(r[s]);return i}({1:[function(e,t,r){var a=e(\"./src/ParseError\");var i=e(\"./src/Settings\");var n=e(\"./src/buildTree\");var s=e(\"./src/parseTree\");var l=e(\"./src/utils\");var o=function(e,t,r){l.clearNode(t);var a=new i(r);var o=s(e,a);var u=n(o,e,a).toNode();t.appendChild(u)};if(typeof document!==\"undefined\"){if(document.compatMode!==\"CSS1Compat\"){typeof console!==\"undefined\"&&console.warn(\"Warning: KaTeX doesn't work in quirks mode. Make sure your \"+\"website has a suitable doctype.\");o=function(){throw new a(\"KaTeX doesn't work in quirks mode.\")}}}var u=function(e,t){var r=new i(t);var a=s(e,r);return n(a,e,r).toMarkup()};var p=function(e,t){var r=new i(t);return s(e,r)};t.exports={render:o,renderToString:u,__parse:p,ParseError:a}},{\"./src/ParseError\":6,\"./src/Settings\":8,\"./src/buildTree\":13,\"./src/parseTree\":22,\"./src/utils\":25}],2:[function(e,t,r){\"use strict\";function a(e){if(!e.__matchAtRelocatable){var t=e.source+\"|()\";var r=\"g\"+(e.ignoreCase?\"i\":\"\")+(e.multiline?\"m\":\"\")+(e.unicode?\"u\":\"\");e.__matchAtRelocatable=new RegExp(t,r)}return e.__matchAtRelocatable}function i(e,t,r){if(e.global||e.sticky){throw new Error(\"matchAt(...): Only non-global regexes are supported\")}var i=a(e);i.lastIndex=r;var n=i.exec(t);if(n[n.length-1]==null){n.length=n.length-1;return n}else{return null}}t.exports=i},{}],3:[function(e,t,r){var a=e(\"match-at\");var i=e(\"./ParseError\");function n(e){this.input=e;this.pos=0}function s(e,t,r,a){this.text=e;this.start=t;this.end=r;this.lexer=a}s.prototype.range=function(e,t){if(e.lexer!==this.lexer){return new s(t)}return new s(t,this.start,e.end,this.lexer)};var l=new RegExp(\"([ \\r\\n\t]+)|\"+\"([!-\\\\[\\\\]-\\u2027\\u202a-\\ud7ff\\uf900-\\uffff]\"+\"|[\\ud800-\\udbff][\\udc00-\\udfff]\"+\"|\\\\\\\\(?:[a-zA-Z]+|[^\\ud800-\\udfff])\"+\")\");n.prototype.lex=function(){var e=this.input;var t=this.pos;if(t===e.length){return new s(\"EOF\",t,t,this)}var r=a(l,e,t);if(r===null){throw new i(\"Unexpected character: '\"+e[t]+\"'\",new s(e[t],t,t+1,this))}var n=r[2]||\" \";var o=this.pos;this.pos+=r[0].length;var u=this.pos;return new s(n,o,u,this)};t.exports=n},{\"./ParseError\":6,\"match-at\":2}],4:[function(e,t,r){var a=e(\"./Lexer\");function i(e,t){this.lexer=new a(e);this.macros=t;this.stack=[];this.discardedWhiteSpace=[]}i.prototype.nextToken=function(){for(;;){if(this.stack.length===0){this.stack.push(this.lexer.lex())}var e=this.stack.pop();var t=e.text;if(!(t.charAt(0)===\"\\\\\"&&this.macros.hasOwnProperty(t))){return e}var r=this.macros[t];if(typeof r===\"string\"){var i=new a(r);r=[];var n=i.lex();while(n.text!==\"EOF\"){r.push(n);n=i.lex()}r.reverse();this.macros[t]=r}this.stack=this.stack.concat(r)}};i.prototype.get=function(e){this.discardedWhiteSpace=[];var t=this.nextToken();if(e){while(t.text===\" \"){this.discardedWhiteSpace.push(t);t=this.nextToken()}}return t};i.prototype.unget=function(e){this.stack.push(e);while(this.discardedWhiteSpace.length!==0){this.stack.push(this.discardedWhiteSpace.pop())}};t.exports=i},{\"./Lexer\":3}],5:[function(e,t,r){function a(e){this.style=e.style;this.color=e.color;this.size=e.size;this.phantom=e.phantom;this.font=e.font;if(e.parentStyle===undefined){this.parentStyle=e.style}else{this.parentStyle=e.parentStyle}if(e.parentSize===undefined){this.parentSize=e.size}else{this.parentSize=e.parentSize}}a.prototype.extend=function(e){var t={style:this.style,size:this.size,color:this.color,parentStyle:this.style,parentSize:this.size,phantom:this.phantom,font:this.font};for(var r in e){if(e.hasOwnProperty(r)){t[r]=e[r]}}return new a(t)};a.prototype.withStyle=function(e){return this.extend({style:e})};a.prototype.withSize=function(e){return this.extend({size:e})};a.prototype.withColor=function(e){return this.extend({color:e})};a.prototype.withPhantom=function(){return this.extend({phantom:true})};a.prototype.withFont=function(e){return this.extend({font:e||this.font})};a.prototype.reset=function(){return this.extend({})};var i={\"katex-blue\":\"#6495ed\",\"katex-orange\":\"#ffa500\",\"katex-pink\":\"#ff00af\",\"katex-red\":\"#df0030\",\"katex-green\":\"#28ae7b\",\"katex-gray\":\"gray\",\"katex-purple\":\"#9d38bd\",\"katex-blueA\":\"#ccfaff\",\"katex-blueB\":\"#80f6ff\",\"katex-blueC\":\"#63d9ea\",\"katex-blueD\":\"#11accd\",\"katex-blueE\":\"#0c7f99\",\"katex-tealA\":\"#94fff5\",\"katex-tealB\":\"#26edd5\",\"katex-tealC\":\"#01d1c1\",\"katex-tealD\":\"#01a995\",\"katex-tealE\":\"#208170\",\"katex-greenA\":\"#b6ffb0\",\"katex-greenB\":\"#8af281\",\"katex-greenC\":\"#74cf70\",\"katex-greenD\":\"#1fab54\",\"katex-greenE\":\"#0d923f\",\"katex-goldA\":\"#ffd0a9\",\"katex-goldB\":\"#ffbb71\",\"katex-goldC\":\"#ff9c39\",\"katex-goldD\":\"#e07d10\",\"katex-goldE\":\"#a75a05\",\"katex-redA\":\"#fca9a9\",\"katex-redB\":\"#ff8482\",\"katex-redC\":\"#f9685d\",\"katex-redD\":\"#e84d39\",\"katex-redE\":\"#bc2612\",\"katex-maroonA\":\"#ffbde0\",\"katex-maroonB\":\"#ff92c6\",\"katex-maroonC\":\"#ed5fa6\",\"katex-maroonD\":\"#ca337c\",\"katex-maroonE\":\"#9e034e\",\"katex-purpleA\":\"#ddd7ff\",\"katex-purpleB\":\"#c6b9fc\",\"katex-purpleC\":\"#aa87ff\",\"katex-purpleD\":\"#7854ab\",\"katex-purpleE\":\"#543b78\",\"katex-mintA\":\"#f5f9e8\",\"katex-mintB\":\"#edf2df\",\"katex-mintC\":\"#e0e5cc\",\"katex-grayA\":\"#f6f7f7\",\"katex-grayB\":\"#f0f1f2\",\"katex-grayC\":\"#e3e5e6\",\"katex-grayD\":\"#d6d8da\",\"katex-grayE\":\"#babec2\",\"katex-grayF\":\"#888d93\",\"katex-grayG\":\"#626569\",\"katex-grayH\":\"#3b3e40\",\"katex-grayI\":\"#21242c\",\"katex-kaBlue\":\"#314453\",\"katex-kaGreen\":\"#71B307\"};a.prototype.getColor=function(){if(this.phantom){return\"transparent\"}else{return i[this.color]||this.color}};t.exports=a},{}],6:[function(e,t,r){function a(e,t){var r=\"KaTeX parse error: \"+e;var i;var n;if(t&&t.lexer&&t.start<=t.end){var s=t.lexer.input;i=t.start;n=t.end;if(i===s.length){r+=\" at end of input: \"}else{r+=\" at position \"+(i+1)+\": \"}var l=s.slice(i,n).replace(/[^]/g,\"$&\\u0332\");var o;if(i>15){o=\"\\u2026\"+s.slice(i-15,i)}else{o=s.slice(0,i)}var u;if(n+15<s.length){u=s.slice(n,n+15)+\"\\u2026\"}else{u=s.slice(n)}r+=o+l+u}var p=new Error(r);p.name=\"ParseError\";p.__proto__=a.prototype;p.position=i;return p}a.prototype.__proto__=Error.prototype;t.exports=a},{}],7:[function(e,t,r){var a=e(\"./functions\");var i=e(\"./environments\");var n=e(\"./MacroExpander\");var s=e(\"./symbols\");var l=e(\"./utils\");var o=e(\"./unicodeRegexes\").cjkRegex;var u=e(\"./parseData\");var p=e(\"./ParseError\");function h(e,t){this.gullet=new n(e,t.macros);this.settings=t;this.leftrightDepth=0}var c=u.ParseNode;function m(e,t,r){this.result=e;this.isFunction=t;this.token=r}h.prototype.expect=function(e,t){if(this.nextToken.text!==e){throw new p(\"Expected '\"+e+\"', got '\"+this.nextToken.text+\"'\",this.nextToken)}if(t!==false){this.consume()}};h.prototype.consume=function(){this.nextToken=this.gullet.get(this.mode===\"math\")};h.prototype.switchMode=function(e){this.gullet.unget(this.nextToken);this.mode=e;this.consume()};h.prototype.parse=function(){this.mode=\"math\";this.consume();var e=this.parseInput();return e};h.prototype.parseInput=function(){var e=this.parseExpression(false);this.expect(\"EOF\",false);return e};var f=[\"}\",\"\\\\end\",\"\\\\right\",\"&\",\"\\\\\\\\\",\"\\\\cr\"];h.prototype.parseExpression=function(e,t){var r=[];while(true){var i=this.nextToken;if(f.indexOf(i.text)!==-1){break}if(t&&i.text===t){break}if(e&&a[i.text]&&a[i.text].infix){break}var n=this.parseAtom();if(!n){if(!this.settings.throwOnError&&i.text[0]===\"\\\\\"){var s=this.handleUnsupportedCmd();r.push(s);continue}break}r.push(n)}return this.handleInfixNodes(r)};h.prototype.handleInfixNodes=function(e){var t=-1;var r;for(var a=0;a<e.length;a++){var i=e[a];if(i.type===\"infix\"){if(t!==-1){throw new p(\"only one infix operator per group\",i.value.token)}t=a;r=i.value.replaceWith}}if(t!==-1){var n;var s;var l=e.slice(0,t);var o=e.slice(t+1);if(l.length===1&&l[0].type===\"ordgroup\"){n=l[0]}else{n=new c(\"ordgroup\",l,this.mode)}if(o.length===1&&o[0].type===\"ordgroup\"){s=o[0]}else{s=new c(\"ordgroup\",o,this.mode)}var u=this.callFunction(r,[n,s],null);return[new c(u.type,u,this.mode)]}else{return e}};var v=1;h.prototype.handleSupSubscript=function(e){var t=this.nextToken;var r=t.text;this.consume();var i=this.parseGroup();if(!i){if(!this.settings.throwOnError&&this.nextToken.text[0]===\"\\\\\"){return this.handleUnsupportedCmd()}else{throw new p(\"Expected group after '\"+r+\"'\",t)}}else if(i.isFunction){var n=a[i.result].greediness;if(n>v){return this.parseFunction(i)}else{throw new p(\"Got function '\"+i.result+\"' with no arguments \"+\"as \"+e,t)}}else{return i.result}};h.prototype.handleUnsupportedCmd=function(){var e=this.nextToken.text;var t=[];for(var r=0;r<e.length;r++){t.push(new c(\"textord\",e[r],\"text\"))}var a=new c(\"text\",{body:t,type:\"text\"},this.mode);var i=new c(\"color\",{color:this.settings.errorColor,value:[a],type:\"color\"},this.mode);this.consume();return i};h.prototype.parseAtom=function(){var e=this.parseImplicitGroup();if(this.mode===\"text\"){return e}var t;var r;while(true){var a=this.nextToken;if(a.text===\"\\\\limits\"||a.text===\"\\\\nolimits\"){if(!e||e.type!==\"op\"){throw new p(\"Limit controls must follow a math operator\",a)}else{var i=a.text===\"\\\\limits\";e.value.limits=i;e.value.alwaysHandleSupSub=true}this.consume()}else if(a.text===\"^\"){if(t){throw new p(\"Double superscript\",a)}t=this.handleSupSubscript(\"superscript\")}else if(a.text===\"_\"){if(r){throw new p(\"Double subscript\",a)}r=this.handleSupSubscript(\"subscript\")}else if(a.text===\"'\"){var n=new c(\"textord\",\"\\\\prime\",this.mode);var s=[n];this.consume();while(this.nextToken.text===\"'\"){s.push(n);this.consume()}t=new c(\"ordgroup\",s,this.mode)}else{break}}if(t||r){return new c(\"supsub\",{base:e,sup:t,sub:r},this.mode)}else{return e}};var d=[\"\\\\tiny\",\"\\\\scriptsize\",\"\\\\footnotesize\",\"\\\\small\",\"\\\\normalsize\",\"\\\\large\",\"\\\\Large\",\"\\\\LARGE\",\"\\\\huge\",\"\\\\Huge\"];var g=[\"\\\\displaystyle\",\"\\\\textstyle\",\"\\\\scriptstyle\",\"\\\\scriptscriptstyle\"];h.prototype.parseImplicitGroup=function(){var e=this.parseSymbol();if(e==null){return this.parseFunction()}var t=e.result;var r;if(t===\"\\\\left\"){var a=this.parseFunction(e);++this.leftrightDepth;r=this.parseExpression(false);--this.leftrightDepth;this.expect(\"\\\\right\",false);var n=this.parseFunction();return new c(\"leftright\",{body:r,left:a.value.value,right:n.value.value},this.mode)}else if(t===\"\\\\begin\"){var s=this.parseFunction(e);var o=s.value.name;if(!i.hasOwnProperty(o)){throw new p(\"No such environment: \"+o,s.value.nameGroup)}var u=i[o];var h=this.parseArguments(\"\\\\begin{\"+o+\"}\",u);var m={mode:this.mode,envName:o,parser:this,positions:h.pop()};var f=u.handler(m,h);this.expect(\"\\\\end\",false);var v=this.nextToken;var y=this.parseFunction();if(y.value.name!==o){throw new p(\"Mismatch: \\\\begin{\"+o+\"} matched \"+\"by \\\\end{\"+y.value.name+\"}\",v)}f.position=y.position;return f}else if(l.contains(d,t)){r=this.parseExpression(false);return new c(\"sizing\",{size:\"size\"+(l.indexOf(d,t)+1),value:r},this.mode)}else if(l.contains(g,t)){r=this.parseExpression(true);return new c(\"styling\",{style:t.slice(1,t.length-5),value:r},this.mode)}else{return this.parseFunction(e)}};h.prototype.parseFunction=function(e){if(!e){e=this.parseGroup()}if(e){if(e.isFunction){var t=e.result;var r=a[t];if(this.mode===\"text\"&&!r.allowedInText){throw new p(\"Can't use function '\"+t+\"' in text mode\",e.token)}var i=this.parseArguments(t,r);var n=e.token;var s=this.callFunction(t,i,i.pop(),n);return new c(s.type,s,this.mode)}else{return e.result}}else{return null}};h.prototype.callFunction=function(e,t,r,i){var n={funcName:e,parser:this,positions:r,token:i};return a[e].handler(n,t)};h.prototype.parseArguments=function(e,t){var r=t.numArgs+t.numOptionalArgs;if(r===0){return[[this.pos]]}var i=t.greediness;var n=[this.pos];var s=[];for(var l=0;l<r;l++){var o=this.nextToken;var u=t.argTypes&&t.argTypes[l];var h;if(l<t.numOptionalArgs){if(u){h=this.parseGroupOfType(u,true)}else{h=this.parseGroup(true)}if(!h){s.push(null);n.push(this.pos);continue}}else{if(u){h=this.parseGroupOfType(u)}else{h=this.parseGroup()}if(!h){if(!this.settings.throwOnError&&this.nextToken.text[0]===\"\\\\\"){h=new m(this.handleUnsupportedCmd(this.nextToken.text),false)}else{throw new p(\"Expected group after '\"+e+\"'\",o)}}}var c;if(h.isFunction){var f=a[h.result].greediness;if(f>i){c=this.parseFunction(h)}else{throw new p(\"Got function '\"+h.result+\"' as \"+\"argument to '\"+e+\"'\",o)}}else{c=h.result}s.push(c);n.push(this.pos)}s.push(n);return s};h.prototype.parseGroupOfType=function(e,t){var r=this.mode;if(e===\"original\"){e=r}if(e===\"color\"){return this.parseColorGroup(t)}if(e===\"size\"){return this.parseSizeGroup(t)}this.switchMode(e);if(e===\"text\"){while(this.nextToken.text===\" \"){this.consume()}}var a=this.parseGroup(t);this.switchMode(r);return a};h.prototype.parseStringGroup=function(e,t){if(t&&this.nextToken.text!==\"[\"){return null}var r=this.mode;this.mode=\"text\";this.expect(t?\"[\":\"{\");var a=\"\";var i=this.nextToken;var n=i;while(this.nextToken.text!==(t?\"]\":\"}\")){if(this.nextToken.text===\"EOF\"){throw new p(\"Unexpected end of input in \"+e,i.range(this.nextToken,a))}n=this.nextToken;a+=n.text;this.consume()}this.mode=r;this.expect(t?\"]\":\"}\");return i.range(n,a)};h.prototype.parseRegexGroup=function(e,t){var r=this.mode;this.mode=\"text\";var a=this.nextToken;var i=a;var n=\"\";while(this.nextToken.text!==\"EOF\"&&e.test(n+this.nextToken.text)){i=this.nextToken;n+=i.text;this.consume()}if(n===\"\"){throw new p(\"Invalid \"+t+\": '\"+a.text+\"'\",a)}this.mode=r;return a.range(i,n)};h.prototype.parseColorGroup=function(e){var t=this.parseStringGroup(\"color\",e);if(!t){return null}var r=/^(#[a-z0-9]+|[a-z]+)$/i.exec(t.text);if(!r){throw new p(\"Invalid color: '\"+t.text+\"'\",t)}return new m(new c(\"color\",r[0],this.mode),false)};h.prototype.parseSizeGroup=function(e){var t;if(!e&&this.nextToken.text!==\"{\"){t=this.parseRegexGroup(/^[-+]? *(?:$|\\d+|\\d+\\.\\d*|\\.\\d*) *[a-z]{0,2}$/,\"size\")}else{t=this.parseStringGroup(\"size\",e)}if(!t){return null}var r=/([-+]?) *(\\d+(?:\\.\\d*)?|\\.\\d+) *([a-z]{2})/.exec(t.text);if(!r){throw new p(\"Invalid size: '\"+t.text+\"'\",t)}var a={number:+(r[1]+r[2]),unit:r[3]};if(a.unit!==\"em\"&&a.unit!==\"ex\"&&a.unit!==\"mu\"){throw new p(\"Invalid unit: '\"+a.unit+\"'\",t)}return new m(new c(\"color\",a,this.mode),false)};h.prototype.parseGroup=function(e){var t=this.nextToken;if(this.nextToken.text===(e?\"[\":\"{\")){this.consume();var r=this.parseExpression(false,e?\"]\":null);var a=this.nextToken;this.expect(e?\"]\":\"}\");if(this.mode===\"text\"){this.formLigatures(r)}return new m(new c(\"ordgroup\",r,this.mode,t,a),false)}else{return e?null:this.parseSymbol()}};h.prototype.formLigatures=function(e){var t;var r=e.length-1;for(t=0;t<r;++t){var a=e[t];var i=a.value;if(i===\"-\"&&e[t+1].value===\"-\"){if(t+1<r&&e[t+2].value===\"-\"){e.splice(t,3,new c(\"textord\",\"---\",\"text\",a,e[t+2]));r-=2}else{e.splice(t,2,new c(\"textord\",\"--\",\"text\",a,e[t+1]));r-=1}}if((i===\"'\"||i===\"`\")&&e[t+1].value===i){e.splice(t,2,new c(\"textord\",i+i,\"text\",a,e[t+1]));r-=1}}};h.prototype.parseSymbol=function(){var e=this.nextToken;if(a[e.text]){this.consume();return new m(e.text,true,e)}else if(s[this.mode][e.text]){this.consume();return new m(new c(s[this.mode][e.text].group,e.text,this.mode,e),false,e)}else if(this.mode===\"text\"&&o.test(e.text)){this.consume();return new m(new c(\"textord\",e.text,this.mode,e),false,e)}else{return null}};h.prototype.ParseNode=c;t.exports=h},{\"./MacroExpander\":4,\"./ParseError\":6,\"./environments\":16,\"./functions\":19,\"./parseData\":21,\"./symbols\":23,\"./unicodeRegexes\":24,\"./utils\":25}],8:[function(e,t,r){function a(e,t){return e===undefined?t:e}function i(e){e=e||{};this.displayMode=a(e.displayMode,false);this.throwOnError=a(e.throwOnError,true);this.errorColor=a(e.errorColor,\"#cc0000\");this.macros=e.macros||{}}t.exports=i},{}],9:[function(e,t,r){var a=e(\"./fontMetrics.js\").sigmas;var i=[{},{},{}];var n;for(var s in a){if(a.hasOwnProperty(s)){for(n=0;n<3;n++){i[n][s]=a[s][n]}}}for(n=0;n<3;n++){i[n].emPerEx=a.xHeight[n]/a.quad[n]}function l(e,t,r,a){this.id=e;this.size=t;this.cramped=a;this.sizeMultiplier=r;this.metrics=i[t>0?t-1:0]}l.prototype.sup=function(){return y[x[this.id]]};l.prototype.sub=function(){return y[b[this.id]]};l.prototype.fracNum=function(){return y[w[this.id]]};l.prototype.fracDen=function(){return y[k[this.id]]};l.prototype.cramp=function(){return y[z[this.id]]};l.prototype.cls=function(){return d[this.size]+(this.cramped?\" cramped\":\" uncramped\")};l.prototype.reset=function(){return g[this.size]};l.prototype.isTight=function(){return this.size>=2};var o=0;var u=1;var p=2;var h=3;var c=4;var m=5;var f=6;var v=7;var d=[\"displaystyle textstyle\",\"textstyle\",\"scriptstyle\",\"scriptscriptstyle\"];var g=[\"reset-textstyle\",\"reset-textstyle\",\"reset-scriptstyle\",\"reset-scriptscriptstyle\"];var y=[new l(o,0,1,false),new l(u,0,1,true),new l(p,1,1,false),new l(h,1,1,true),new l(c,2,.7,false),new l(m,2,.7,true),new l(f,3,.5,false),new l(v,3,.5,true)];var x=[c,m,c,m,f,v,f,v];var b=[m,m,m,m,v,v,v,v];var w=[p,h,c,m,f,v,f,v];var k=[h,h,m,m,v,v,v,v];var z=[u,u,h,h,m,m,v,v];t.exports={DISPLAY:y[o],TEXT:y[p],SCRIPT:y[c],SCRIPTSCRIPT:y[f]}},{\"./fontMetrics.js\":17}],10:[function(e,t,r){var a=e(\"./domTree\");var i=e(\"./fontMetrics\");var n=e(\"./symbols\");var s=e(\"./utils\");var l=[\"\\\\Gamma\",\"\\\\Delta\",\"\\\\Theta\",\"\\\\Lambda\",\"\\\\Xi\",\"\\\\Pi\",\"\\\\Sigma\",\"\\\\Upsilon\",\"\\\\Phi\",\"\\\\Psi\",\"\\\\Omega\"];var o=[\"\\u0131\",\"\\u0237\",\"\\xa3\"];var u=function(e,t,r,s,l){if(n[r][e]&&n[r][e].replace){e=n[r][e].replace}var o=i.getCharacterMetrics(e,t);var u;if(o){var p=o.italic;if(r===\"text\"){p=0}u=new a.symbolNode(e,o.height,o.depth,p,o.skew,l)}else{typeof console!==\"undefined\"&&console.warn(\"No character metrics for '\"+e+\"' in style '\"+t+\"'\");u=new a.symbolNode(e,0,0,0,0,l)}if(s){if(s.style.isTight()){u.classes.push(\"mtight\")}if(s.getColor()){u.style.color=s.getColor()}}return u};var p=function(e,t,r,a){if(e===\"\\\\\"||n[t][e].font===\"main\"){return u(e,\"Main-Regular\",t,r,a)}else{return u(e,\"AMS-Regular\",t,r,a.concat([\"amsrm\"]))}};var h=function(e,t,r,a,i){if(i===\"mathord\"){return c(e,t,r,a)}else if(i===\"textord\"){return u(e,\"Main-Regular\",t,r,a.concat([\"mathrm\"]))}else{throw new Error(\"unexpected type: \"+i+\" in mathDefault\")}};var c=function(e,t,r,a){if(/[0-9]/.test(e.charAt(0))||s.contains(o,e)||s.contains(l,e)){return u(e,\"Main-Italic\",t,r,a.concat([\"mainit\"]))}else{return u(e,\"Math-Italic\",t,r,a.concat([\"mathit\"]))}};var m=function(e,t,r){var a=e.mode;var l=e.value;if(n[a][l]&&n[a][l].replace){l=n[a][l].replace}var p=[\"mord\"];var m=t.font;if(m){if(m===\"mathit\"||s.contains(o,l)){return c(l,a,t,p)}else{var f=k[m].fontName;if(i.getCharacterMetrics(l,f)){return u(l,f,a,t,p.concat([m]))}else{return h(l,a,t,p,r)}}}else{return h(l,a,t,p,r)}};var f=function(e){var t=0;var r=0;var a=0;if(e.children){for(var i=0;i<e.children.length;i++){if(e.children[i].height>t){t=e.children[i].height}if(e.children[i].depth>r){r=e.children[i].depth}if(e.children[i].maxFontSize>a){a=e.children[i].maxFontSize}}}e.height=t;e.depth=r;e.maxFontSize=a};var v=function(e,t,r){var i=new a.span(e,t,r);f(i);return i};var d=function(e,t){e.children=t.concat(e.children);f(e)};var g=function(e){var t=new a.documentFragment(e);f(t);return t};var y=function(e,t){var r=v([],[new a.symbolNode(\"\\u200b\")]);r.style.fontSize=t/e.style.sizeMultiplier+\"em\";var i=v([\"fontsize-ensurer\",\"reset-\"+e.size,\"size5\"],[r]);return i};var x=function(e,t,r,i){var n;var s;var l;if(t===\"individualShift\"){var o=e;e=[o[0]];n=-o[0].shift-o[0].elem.depth;s=n;for(l=1;l<o.length;l++){var u=-o[l].shift-s-o[l].elem.depth;var p=u-(o[l-1].elem.height+o[l-1].elem.depth);s=s+u;e.push({type:\"kern\",size:p});e.push(o[l])}}else if(t===\"top\"){var h=r;for(l=0;l<e.length;l++){if(e[l].type===\"kern\"){h-=e[l].size}else{h-=e[l].elem.height+e[l].elem.depth}}n=h}else if(t===\"bottom\"){n=-r}else if(t===\"shift\"){n=-e[0].elem.depth-r}else if(t===\"firstBaseline\"){n=-e[0].elem.depth}else{n=0}var c=0;for(l=0;l<e.length;l++){if(e[l].type===\"elem\"){c=Math.max(c,e[l].elem.maxFontSize)}}var m=y(i,c);var f=[];s=n;for(l=0;l<e.length;l++){if(e[l].type===\"kern\"){s+=e[l].size}else{var d=e[l].elem;var g=-d.depth-s;s+=d.height+d.depth;var x=v([],[m,d]);x.height-=g;x.depth+=g;x.style.top=g+\"em\";f.push(x)}}var b=v([\"baseline-fix\"],[m,new a.symbolNode(\"\\u200b\")]);f.push(b);var w=v([\"vlist\"],f);w.height=Math.max(s,w.height);w.depth=Math.max(-n,w.depth);return w};var b={size1:.5,size2:.7,size3:.8,size4:.9,size5:1,size6:1.2,size7:1.44,size8:1.73,size9:2.07,size10:2.49};var w={\"\\\\qquad\":{size:\"2em\",className:\"qquad\"},\"\\\\quad\":{size:\"1em\",className:\"quad\"},\"\\\\enspace\":{size:\"0.5em\",className:\"enspace\"},\"\\\\;\":{size:\"0.277778em\",className:\"thickspace\"},\"\\\\:\":{size:\"0.22222em\",className:\"mediumspace\"},\"\\\\,\":{size:\"0.16667em\",className:\"thinspace\"},\"\\\\!\":{size:\"-0.16667em\",className:\"negativethinspace\"}};var k={mathbf:{variant:\"bold\",fontName:\"Main-Bold\"},mathrm:{variant:\"normal\",fontName:\"Main-Regular\"},textit:{variant:\"italic\",fontName:\"Main-Italic\"},mathbb:{variant:\"double-struck\",fontName:\"AMS-Regular\"},mathcal:{variant:\"script\",fontName:\"Caligraphic-Regular\"},mathfrak:{variant:\"fraktur\",fontName:\"Fraktur-Regular\"},mathscr:{variant:\"script\",fontName:\"Script-Regular\"},mathsf:{variant:\"sans-serif\",fontName:\"SansSerif-Regular\"},mathtt:{variant:\"monospace\",fontName:\"Typewriter-Regular\"}};t.exports={fontMap:k,makeSymbol:u,mathsym:p,makeSpan:v,makeFragment:g,makeVList:x,makeOrd:m,prependChildren:d,sizingMultiplier:b,spacingFunctions:w}},{\"./domTree\":15,\"./fontMetrics\":17,\"./symbols\":23,\"./utils\":25}],11:[function(e,t,r){var a=e(\"./ParseError\");var i=e(\"./Style\");var n=e(\"./buildCommon\");var s=e(\"./delimiter\");var l=e(\"./domTree\");var o=e(\"./fontMetrics\");var u=e(\"./utils\");var p=n.makeSpan;var h=function(e){return e instanceof l.span&&e.classes[0]===\"mspace\"};var c=function(e){return e&&e.classes[0]===\"mbin\"};var m=function(e,t){if(e){return u.contains([\"mbin\",\"mopen\",\"mrel\",\"mop\",\"mpunct\"],e.classes[0])}else{return t}};var f=function(e,t){if(e){return u.contains([\"mrel\",\"mclose\",\"mpunct\"],e.classes[0])}else{return t}};var v=function(e,t,r){var a=[];for(var i=0;i<e.length;i++){var s=e[i];var o=z(s,t);if(o instanceof l.documentFragment){Array.prototype.push.apply(a,o.children)}else{a.push(o)}}var u=null;for(i=0;i<a.length;i++){if(h(a[i])){u=u||[];u.push(a[i]);a.splice(i,1);i--}else if(u){if(a[i]instanceof l.symbolNode){a[i]=p([].concat(a[i].classes),[a[i]])}n.prependChildren(a[i],u);u=null}}if(u){Array.prototype.push.apply(a,u)}for(i=0;i<a.length;i++){if(c(a[i])&&(m(a[i-1],r)||f(a[i+1],r))){a[i].classes[0]=\"mord\"}}return a};var d=function(e){if(e instanceof l.documentFragment){if(e.children.length){return d(e.children[e.children.length-1])}}else{if(u.contains([\"mord\",\"mop\",\"mbin\",\"mrel\",\"mopen\",\"mclose\",\"mpunct\",\"minner\"],e.classes[0])){return e.classes[0]}}return null};var g=function(e,t){if(!e){return false}else if(e.type===\"op\"){return e.value.limits&&(t.style.size===i.DISPLAY.size||e.value.alwaysHandleSupSub)}else if(e.type===\"accent\"){return x(e.value.base)}else{return null}};var y=function(e){if(!e){return false}else if(e.type===\"ordgroup\"){if(e.value.length===1){return y(e.value[0])}else{return e}}else if(e.type===\"color\"){if(e.value.value.length===1){return y(e.value.value[0])}else{return e}}else if(e.type===\"font\"){return y(e.value.body)}else{return e}};var x=function(e){var t=y(e);return t.type===\"mathord\"||t.type===\"textord\"||t.type===\"bin\"||t.type===\"rel\"||t.type===\"inner\"||t.type===\"open\"||t.type===\"close\"||t.type===\"punct\"};var b=function(e,t){return p(t.concat([\"sizing\",\"reset-\"+e.size,\"size5\",e.style.reset(),i.TEXT.cls(),\"nulldelimiter\"]))};var w={};w.mathord=function(e,t){return n.makeOrd(e,t,\"mathord\")};w.textord=function(e,t){return n.makeOrd(e,t,\"textord\")};w.bin=function(e,t){return n.mathsym(e.value,e.mode,t,[\"mbin\"])};w.rel=function(e,t){return n.mathsym(e.value,e.mode,t,[\"mrel\"])};w.open=function(e,t){return n.mathsym(e.value,e.mode,t,[\"mopen\"])};w.close=function(e,t){return n.mathsym(e.value,e.mode,t,[\"mclose\"])};w.inner=function(e,t){return n.mathsym(e.value,e.mode,t,[\"minner\"])};w.punct=function(e,t){return n.mathsym(e.value,e.mode,t,[\"mpunct\"])};w.ordgroup=function(e,t){return p([\"mord\",t.style.cls()],v(e.value,t.reset(),true),t)};w.text=function(e,t){var r=t.withFont(e.value.style);var a=v(e.value.body,r,true);for(var i=0;i<a.length-1;i++){if(a[i].tryCombine(a[i+1])){a.splice(i+1,1);i--}}return p([\"mord\",\"text\",r.style.cls()],a,r)};w.color=function(e,t){var r=v(e.value.value,t.withColor(e.value.color),false);return new n.makeFragment(r)};w.supsub=function(e,t){if(g(e.value.base,t)){return w[e.value.base.type](e,t)}var r=z(e.value.base,t.reset());var a;var s;var u;var h;var c=t.style;var m;if(e.value.sup){m=t.withStyle(c.sup());u=z(e.value.sup,m);a=p([c.reset(),c.sup().cls()],[u],m)}if(e.value.sub){m=t.withStyle(c.sub());h=z(e.value.sub,m);s=p([c.reset(),c.sub().cls()],[h],m)}var f;var v;if(x(e.value.base)){f=0;v=0}else{f=r.height-c.metrics.supDrop;v=r.depth+c.metrics.subDrop}var y;if(c===i.DISPLAY){y=c.metrics.sup1}else if(c.cramped){y=c.metrics.sup3}else{y=c.metrics.sup2}var b=i.TEXT.sizeMultiplier*c.sizeMultiplier;var k=.5/o.metrics.ptPerEm/b+\"em\";var S;if(!e.value.sup){v=Math.max(v,c.metrics.sub1,h.height-.8*c.metrics.xHeight);S=n.makeVList([{type:\"elem\",elem:s}],\"shift\",v,t);S.children[0].style.marginRight=k;if(r instanceof l.symbolNode){S.children[0].style.marginLeft=-r.italic+\"em\"}}else if(!e.value.sub){f=Math.max(f,y,u.depth+.25*c.metrics.xHeight);S=n.makeVList([{type:\"elem\",elem:a}],\"shift\",-f,t);S.children[0].style.marginRight=k}else{f=Math.max(f,y,u.depth+.25*c.metrics.xHeight);v=Math.max(v,c.metrics.sub2);var M=o.metrics.defaultRuleThickness;if(f-u.depth-(h.height-v)<4*M){v=4*M-(f-u.depth)+h.height;var T=.8*c.metrics.xHeight-(f-u.depth);if(T>0){f+=T;v-=T}}S=n.makeVList([{type:\"elem\",elem:s,shift:v},{type:\"elem\",elem:a,shift:-f}],\"individualShift\",null,t);if(r instanceof l.symbolNode){S.children[0].style.marginLeft=-r.italic+\"em\"}S.children[0].style.marginRight=k;S.children[1].style.marginRight=k}var A=d(r)||\"mord\";return p([A],[r,p([\"msupsub\"],[S])],t)};w.genfrac=function(e,t){var r=t.style;if(e.value.size===\"display\"){r=i.DISPLAY}else if(e.value.size===\"text\"){r=i.TEXT}var a=r.fracNum();var l=r.fracDen();var u;u=t.withStyle(a);var h=z(e.value.numer,u);var c=p([r.reset(),a.cls()],[h],u);u=t.withStyle(l);var m=z(e.value.denom,u);var f=p([r.reset(),l.cls()],[m],u);var v;if(e.value.hasBarLine){v=o.metrics.defaultRuleThickness/t.style.sizeMultiplier}else{v=0}var d;var g;var y;if(r.size===i.DISPLAY.size){d=r.metrics.num1;if(v>0){g=3*v}else{g=7*o.metrics.defaultRuleThickness}y=r.metrics.denom1}else{if(v>0){d=r.metrics.num2;g=v}else{d=r.metrics.num3;g=3*o.metrics.defaultRuleThickness}y=r.metrics.denom2}var x;if(v===0){var w=d-h.depth-(m.height-y);if(w<g){d+=.5*(g-w);y+=.5*(g-w)}x=n.makeVList([{type:\"elem\",elem:f,shift:y},{type:\"elem\",elem:c,shift:-d}],\"individualShift\",null,t)}else{var k=r.metrics.axisHeight;if(d-h.depth-(k+.5*v)<g){d+=g-(d-h.depth-(k+.5*v))}if(k-.5*v-(m.height-y)<g){y+=g-(k-.5*v-(m.height-y))}var S=p([t.style.reset(),i.TEXT.cls(),\"frac-line\"]);S.height=v;var M=-(k-.5*v);x=n.makeVList([{type:\"elem\",elem:f,shift:y},{type:\"elem\",elem:S,shift:M},{type:\"elem\",elem:c,shift:-d}],\"individualShift\",null,t)}x.height*=r.sizeMultiplier/t.style.sizeMultiplier;x.depth*=r.sizeMultiplier/t.style.sizeMultiplier;var T;if(r.size===i.DISPLAY.size){T=r.metrics.delim1}else{T=r.metrics.delim2}var A;var N;if(e.value.leftDelim==null){A=b(t,[\"mopen\"])}else{A=s.customSizedDelim(e.value.leftDelim,T,true,t.withStyle(r),e.mode,[\"mopen\"])}if(e.value.rightDelim==null){N=b(t,[\"mclose\"])}else{N=s.customSizedDelim(e.value.rightDelim,T,true,t.withStyle(r),e.mode,[\"mclose\"])}return p([\"mord\",t.style.reset(),r.cls()],[A,p([\"mfrac\"],[x]),N],t)};var k=function(e,t){var r=e.number;if(e.unit===\"ex\"){r*=t.metrics.emPerEx}else if(e.unit===\"mu\"){r/=18}return r};w.array=function(e,t){var r;var i;var s=e.value.body.length;var l=0;var h=new Array(s);var c=t.style;var m=1/o.metrics.ptPerEm;var f=5*m;var v=12*m;var d=u.deflt(e.value.arraystretch,1);var g=d*v;var y=.7*g;var x=.3*g;var b=0;for(r=0;r<e.value.body.length;++r){var w=e.value.body[r];var S=y;var M=x;if(l<w.length){l=w.length}var T=new Array(w.length);for(i=0;i<w.length;++i){var A=z(w[i],t);if(M<A.depth){M=A.depth}if(S<A.height){S=A.height}T[i]=A}var N=0;if(e.value.rowGaps[r]){N=k(e.value.rowGaps[r].value,c);if(N>0){N+=x;if(M<N){M=N}N=0}}T.height=S;T.depth=M;b+=S;T.pos=b;b+=M+N;h[r]=T}var q=b/2+c.metrics.axisHeight;var R=e.value.cols||[];var E=[];var C;var D;for(i=0,D=0;i<l||D<R.length;++i,++D){var O=R[D]||{};var P=true;while(O.type===\"separator\"){if(!P){C=p([\"arraycolsep\"],[]);C.style.width=o.metrics.doubleRuleSep+\"em\";E.push(C)}if(O.separator===\"|\"){var F=p([\"vertical-separator\"],[]);F.style.height=b+\"em\";F.style.verticalAlign=-(b-q)+\"em\";E.push(F)}else{throw new a(\"Invalid separator type: \"+O.separator)}D++;O=R[D]||{};P=false}if(i>=l){continue}var I;if(i>0||e.value.hskipBeforeAndAfter){I=u.deflt(O.pregap,f);if(I!==0){C=p([\"arraycolsep\"],[]);C.style.width=I+\"em\";E.push(C)}}var L=[];for(r=0;r<s;++r){var B=h[r];var G=B[i];if(!G){continue}var V=B.pos-q;G.depth=B.depth;G.height=B.height;L.push({type:\"elem\",elem:G,shift:V})}L=n.makeVList(L,\"individualShift\",null,t);L=p([\"col-align-\"+(O.align||\"c\")],[L]);E.push(L);if(i<l-1||e.value.hskipBeforeAndAfter){I=u.deflt(O.postgap,f);if(I!==0){C=p([\"arraycolsep\"],[]);C.style.width=I+\"em\";E.push(C)}}}h=p([\"mtable\"],E);return p([\"mord\"],[h],t)};w.spacing=function(e,t){if(e.value===\"\\\\ \"||e.value===\"\\\\space\"||e.value===\" \"||e.value===\"~\"){if(e.mode===\"text\"){return n.makeOrd(e,t,\"textord\")}else{return p([\"mspace\"],[n.mathsym(e.value,e.mode,t)],t)}}else{return p([\"mspace\",n.spacingFunctions[e.value].className],[],t)}};w.llap=function(e,t){var r=p([\"inner\"],[z(e.value.body,t.reset())]);var a=p([\"fix\"],[]);return p([\"mord\",\"llap\",t.style.cls()],[r,a],t)};w.rlap=function(e,t){var r=p([\"inner\"],[z(e.value.body,t.reset())]);var a=p([\"fix\"],[]);return p([\"mord\",\"rlap\",t.style.cls()],[r,a],t)};w.op=function(e,t){var r;var a;var s=false;if(e.type===\"supsub\"){r=e.value.sup;a=e.value.sub;e=e.value.base;s=true}var l=t.style;var h=[\"\\\\smallint\"];var c=false;if(l.size===i.DISPLAY.size&&e.value.symbol&&!u.contains(h,e.value.body)){c=true}var m;var f=0;var d=0;if(e.value.symbol){var g=c?\"Size2-Regular\":\"Size1-Regular\";m=n.makeSymbol(e.value.body,g,\"math\",t,[\"mop\",\"op-symbol\",c?\"large-op\":\"small-op\"]);f=(m.height-m.depth)/2-l.metrics.axisHeight*l.sizeMultiplier;d=m.italic}else if(e.value.value){var y=v(e.value.value,t,true);m=p([\"mop\"],y,t)}else{var x=[];for(var b=1;b<e.value.body.length;b++){x.push(n.mathsym(e.value.body[b],e.mode))}m=p([\"mop\"],x,t)}if(s){m=p([],[m]);var w;var k;var S;var M;var T;if(r){T=t.withStyle(l.sup());var A=z(r,T);w=p([l.reset(),l.sup().cls()],[A],T);k=Math.max(o.metrics.bigOpSpacing1,o.metrics.bigOpSpacing3-A.depth)}if(a){T=t.withStyle(l.sub());var N=z(a,T);S=p([l.reset(),l.sub().cls()],[N],T);M=Math.max(o.metrics.bigOpSpacing2,o.metrics.bigOpSpacing4-N.height)}var q;var R;var E;if(!r){R=m.height-f;q=n.makeVList([{type:\"kern\",size:o.metrics.bigOpSpacing5},{type:\"elem\",elem:S},{type:\"kern\",size:M},{type:\"elem\",elem:m}],\"top\",R,t);q.children[0].style.marginLeft=-d+\"em\"}else if(!a){E=m.depth+f;q=n.makeVList([{type:\"elem\",elem:m},{type:\"kern\",size:k},{type:\"elem\",elem:w},{type:\"kern\",size:o.metrics.bigOpSpacing5}],\"bottom\",E,t);q.children[1].style.marginLeft=d+\"em\"}else if(!r&&!a){return m}else{E=o.metrics.bigOpSpacing5+S.height+S.depth+M+m.depth+f;\nq=n.makeVList([{type:\"kern\",size:o.metrics.bigOpSpacing5},{type:\"elem\",elem:S},{type:\"kern\",size:M},{type:\"elem\",elem:m},{type:\"kern\",size:k},{type:\"elem\",elem:w},{type:\"kern\",size:o.metrics.bigOpSpacing5}],\"bottom\",E,t);q.children[0].style.marginLeft=-d+\"em\";q.children[2].style.marginLeft=d+\"em\"}return p([\"mop\",\"op-limits\"],[q],t)}else{if(e.value.symbol){m.style.top=f+\"em\"}return m}};w.mod=function(e,t){var r=[];if(e.value.modType===\"bmod\"){if(!t.style.isTight()){r.push(p([\"mspace\",\"negativemediumspace\"],[],t))}r.push(p([\"mspace\",\"thickspace\"],[],t))}else if(t.style.size===i.DISPLAY.size){r.push(p([\"mspace\",\"quad\"],[],t))}else if(e.value.modType===\"mod\"){r.push(p([\"mspace\",\"twelvemuspace\"],[],t))}else{r.push(p([\"mspace\",\"eightmuspace\"],[],t))}if(e.value.modType===\"pod\"||e.value.modType===\"pmod\"){r.push(n.mathsym(\"(\",e.mode))}if(e.value.modType!==\"pod\"){var a=[n.mathsym(\"m\",e.mode),n.mathsym(\"o\",e.mode),n.mathsym(\"d\",e.mode)];if(e.value.modType===\"bmod\"){r.push(p([\"mbin\"],a,t));r.push(p([\"mspace\",\"thickspace\"],[],t));if(!t.style.isTight()){r.push(p([\"mspace\",\"negativemediumspace\"],[],t))}}else{Array.prototype.push.apply(r,a);r.push(p([\"mspace\",\"sixmuspace\"],[],t))}}if(e.value.value){Array.prototype.push.apply(r,v(e.value.value,t,false))}if(e.value.modType===\"pod\"||e.value.modType===\"pmod\"){r.push(n.mathsym(\")\",e.mode))}return n.makeFragment(r)};w.katex=function(e,t){var r=p([\"k\"],[n.mathsym(\"K\",e.mode)],t);var a=p([\"a\"],[n.mathsym(\"A\",e.mode)],t);a.height=(a.height+.2)*.75;a.depth=(a.height-.2)*.75;var i=p([\"t\"],[n.mathsym(\"T\",e.mode)],t);var s=p([\"e\"],[n.mathsym(\"E\",e.mode)],t);s.height=s.height-.2155;s.depth=s.depth+.2155;var l=p([\"x\"],[n.mathsym(\"X\",e.mode)],t);return p([\"mord\",\"katex-logo\"],[r,a,i,s,l],t)};w.overline=function(e,t){var r=t.style;var a=z(e.value.body,t.withStyle(r.cramp()));var s=o.metrics.defaultRuleThickness/r.sizeMultiplier;var l=p([r.reset(),i.TEXT.cls(),\"overline-line\"]);l.height=s;l.maxFontSize=1;var u=n.makeVList([{type:\"elem\",elem:a},{type:\"kern\",size:3*s},{type:\"elem\",elem:l},{type:\"kern\",size:s}],\"firstBaseline\",null,t);return p([\"mord\",\"overline\"],[u],t)};w.underline=function(e,t){var r=t.style;var a=z(e.value.body,t);var s=o.metrics.defaultRuleThickness/r.sizeMultiplier;var l=p([r.reset(),i.TEXT.cls(),\"underline-line\"]);l.height=s;l.maxFontSize=1;var u=n.makeVList([{type:\"kern\",size:s},{type:\"elem\",elem:l},{type:\"kern\",size:3*s},{type:\"elem\",elem:a}],\"top\",a.height,t);return p([\"mord\",\"underline\"],[u],t)};w.sqrt=function(e,t){var r=t.style;var a=z(e.value.body,t.withStyle(r.cramp()));var l=o.metrics.defaultRuleThickness/r.sizeMultiplier;var u=p([r.reset(),i.TEXT.cls(),\"sqrt-line\"],[],t);u.height=l;u.maxFontSize=1;var h=l;if(r.id<i.TEXT.id){h=r.metrics.xHeight}var c=l+h/4;var m=(a.height+a.depth)*r.sizeMultiplier;var f=m+c+l;var v=p([\"sqrt-sign\"],[s.customSizedDelim(\"\\\\surd\",f,false,t,e.mode)],t);var d=v.height+v.depth-l;if(d>a.height+a.depth+c){c=(c+d-a.height-a.depth)/2}var g=-(a.height+c+l)+v.height;v.style.top=g+\"em\";v.height-=g;v.depth+=g;var y;if(a.height===0&&a.depth===0){y=p()}else{y=n.makeVList([{type:\"elem\",elem:a},{type:\"kern\",size:c},{type:\"elem\",elem:u},{type:\"kern\",size:l}],\"firstBaseline\",null,t)}if(!e.value.index){return p([\"mord\",\"sqrt\"],[v,y],t)}else{var x=t.withStyle(i.SCRIPTSCRIPT);var b=z(e.value.index,x);var w=p([r.reset(),i.SCRIPTSCRIPT.cls()],[b],x);var k=Math.max(v.height,y.height);var S=Math.max(v.depth,y.depth);var M=.6*(k-S);var T=n.makeVList([{type:\"elem\",elem:w}],\"shift\",-M,t);var A=p([\"root\"],[T]);return p([\"mord\",\"sqrt\"],[A,v,y],t)}};w.sizing=function(e,t){var r=v(e.value.value,t.withSize(e.value.size),false);var a=t.style;var i=n.sizingMultiplier[e.value.size];i=i*a.sizeMultiplier;for(var s=0;s<r.length;s++){var l=u.indexOf(r[s].classes,\"sizing\");if(l<0){r[s].classes.push(\"sizing\",\"reset-\"+t.size,e.value.size,a.cls());r[s].maxFontSize=i}else if(r[s].classes[l+1]===\"reset-\"+e.value.size){r[s].classes[l+1]=\"reset-\"+t.size}}return n.makeFragment(r)};w.styling=function(e,t){var r={display:i.DISPLAY,text:i.TEXT,script:i.SCRIPT,scriptscript:i.SCRIPTSCRIPT};var a=r[e.value.style];var s=t.withStyle(a);var l=v(e.value.value,s,false);for(var o=0;o<l.length;o++){var p=u.indexOf(l[o].classes,a.reset());if(p<0){l[o].classes.push(t.style.reset(),a.cls())}else{l[o].classes[p]=t.style.reset()}}return new n.makeFragment(l)};w.font=function(e,t){var r=e.value.font;return z(e.value.body,t.withFont(r))};w.delimsizing=function(e,t){var r=e.value.value;if(r===\".\"){return p([e.value.mclass])}return s.sizedDelim(r,e.value.size,t,e.mode,[e.value.mclass])};w.leftright=function(e,t){var r=v(e.value.body,t.reset(),true);var a=0;var i=0;var n=false;for(var l=0;l<r.length;l++){if(r[l].isMiddle){n=true}else{a=Math.max(r[l].height,a);i=Math.max(r[l].depth,i)}}var o=t.style;a*=o.sizeMultiplier;i*=o.sizeMultiplier;var u;if(e.value.left===\".\"){u=b(t,[\"mopen\"])}else{u=s.leftRightDelim(e.value.left,a,i,t,e.mode,[\"mopen\"])}r.unshift(u);if(n){for(l=1;l<r.length;l++){if(r[l].isMiddle){r[l]=s.leftRightDelim(r[l].isMiddle.value,a,i,r[l].isMiddle.options,e.mode,[])}}}var h;if(e.value.right===\".\"){h=b(t,[\"mclose\"])}else{h=s.leftRightDelim(e.value.right,a,i,t,e.mode,[\"mclose\"])}r.push(h);return p([\"minner\",o.cls()],r,t)};w.middle=function(e,t){var r;if(e.value.value===\".\"){r=b(t,[])}else{r=s.sizedDelim(e.value.value,1,t,e.mode,[]);r.isMiddle={value:e.value.value,options:t}}return r};w.rule=function(e,t){var r=p([\"mord\",\"rule\"],[],t);var a=t.style;var i=0;if(e.value.shift){i=k(e.value.shift,a)}var n=k(e.value.width,a);var s=k(e.value.height,a);i/=a.sizeMultiplier;n/=a.sizeMultiplier;s/=a.sizeMultiplier;r.style.borderRightWidth=n+\"em\";r.style.borderTopWidth=s+\"em\";r.style.bottom=i+\"em\";r.width=n;r.height=s+i;r.depth=-i;return r};w.kern=function(e,t){var r=p([\"mord\",\"rule\"],[],t);var a=t.style;var i=0;if(e.value.dimension){i=k(e.value.dimension,a)}i/=a.sizeMultiplier;r.style.marginLeft=i+\"em\";return r};w.accent=function(e,t){var r=e.value.base;var a=t.style;var i;if(e.type===\"supsub\"){var s=e;e=s.value.base;r=e.value.base;s.value.base=r;i=z(s,t.reset())}var l=z(r,t.withStyle(a.cramp()));var o;if(x(r)){var u=y(r);var h=z(u,t.withStyle(a.cramp()));o=h.skew}else{o=0}var c=Math.min(l.height,a.metrics.xHeight);var m=n.makeSymbol(e.value.accent,\"Main-Regular\",\"math\",t);m.italic=0;var f=e.value.accent===\"\\\\vec\"?\"accent-vec\":null;var v=p([\"accent-body\",f],[p([],[m])]);v=n.makeVList([{type:\"elem\",elem:l},{type:\"kern\",size:-c},{type:\"elem\",elem:v}],\"firstBaseline\",null,t);v.children[1].style.marginLeft=2*o+\"em\";var d=p([\"mord\",\"accent\"],[v],t);if(i){i.children[0]=d;i.height=Math.max(d.height,i.height);i.classes[0]=\"mord\";return i}else{return d}};w.phantom=function(e,t){var r=v(e.value.value,t.withPhantom(),false);return new n.makeFragment(r)};w.mclass=function(e,t){var r=v(e.value.value,t,true);return p([e.value.mclass],r,t)};var z=function(e,t){if(!e){return p()}if(w[e.type]){var r=w[e.type](e,t);var i;if(t.style!==t.parentStyle){i=t.style.sizeMultiplier/t.parentStyle.sizeMultiplier;r.height*=i;r.depth*=i}if(t.size!==t.parentSize){i=n.sizingMultiplier[t.size]/n.sizingMultiplier[t.parentSize];r.height*=i;r.depth*=i}return r}else{throw new a(\"Got group of unknown type: '\"+e.type+\"'\")}};var S=function(e,t){e=JSON.parse(JSON.stringify(e));var r=v(e,t,true);var a=p([\"base\",t.style.cls()],r,t);var i=p([\"strut\"]);var n=p([\"strut\",\"bottom\"]);i.style.height=a.height+\"em\";n.style.height=a.height+a.depth+\"em\";n.style.verticalAlign=-a.depth+\"em\";var s=p([\"katex-html\"],[i,n,a]);s.setAttribute(\"aria-hidden\",\"true\");return s};t.exports=S},{\"./ParseError\":6,\"./Style\":9,\"./buildCommon\":10,\"./delimiter\":14,\"./domTree\":15,\"./fontMetrics\":17,\"./utils\":25}],12:[function(e,t,r){var a=e(\"./buildCommon\");var i=e(\"./fontMetrics\");var n=e(\"./mathMLTree\");var s=e(\"./ParseError\");var l=e(\"./symbols\");var o=e(\"./utils\");var u=a.makeSpan;var p=a.fontMap;var h=function(e,t){if(l[t][e]&&l[t][e].replace){e=l[t][e].replace}return new n.TextNode(e)};var c=function(e,t){var r=t.font;if(!r){return null}var a=e.mode;if(r===\"mathit\"){return\"italic\"}var n=e.value;if(o.contains([\"\\\\imath\",\"\\\\jmath\"],n)){return null}if(l[a][n]&&l[a][n].replace){n=l[a][n].replace}var s=p[r].fontName;if(i.getCharacterMetrics(n,s)){return p[t.font].variant}return null};var m={};m.mathord=function(e,t){var r=new n.MathNode(\"mi\",[h(e.value,e.mode)]);var a=c(e,t);if(a){r.setAttribute(\"mathvariant\",a)}return r};m.textord=function(e,t){var r=h(e.value,e.mode);var a=c(e,t)||\"normal\";var i;if(/[0-9]/.test(e.value)){i=new n.MathNode(\"mn\",[r]);if(t.font){i.setAttribute(\"mathvariant\",a)}}else{i=new n.MathNode(\"mi\",[r]);i.setAttribute(\"mathvariant\",a)}return i};m.bin=function(e){var t=new n.MathNode(\"mo\",[h(e.value,e.mode)]);return t};m.rel=function(e){var t=new n.MathNode(\"mo\",[h(e.value,e.mode)]);return t};m.open=function(e){var t=new n.MathNode(\"mo\",[h(e.value,e.mode)]);return t};m.close=function(e){var t=new n.MathNode(\"mo\",[h(e.value,e.mode)]);return t};m.inner=function(e){var t=new n.MathNode(\"mo\",[h(e.value,e.mode)]);return t};m.punct=function(e){var t=new n.MathNode(\"mo\",[h(e.value,e.mode)]);t.setAttribute(\"separator\",\"true\");return t};m.ordgroup=function(e,t){var r=f(e.value,t);var a=new n.MathNode(\"mrow\",r);return a};m.text=function(e,t){var r=f(e.value.body,t);var a=new n.MathNode(\"mtext\",r);return a};m.color=function(e,t){var r=f(e.value.value,t);var a=new n.MathNode(\"mstyle\",r);a.setAttribute(\"mathcolor\",e.value.color);return a};m.supsub=function(e,t){var r=[v(e.value.base,t)];if(e.value.sub){r.push(v(e.value.sub,t))}if(e.value.sup){r.push(v(e.value.sup,t))}var a;if(!e.value.sub){a=\"msup\"}else if(!e.value.sup){a=\"msub\"}else{a=\"msubsup\"}var i=new n.MathNode(a,r);return i};m.genfrac=function(e,t){var r=new n.MathNode(\"mfrac\",[v(e.value.numer,t),v(e.value.denom,t)]);if(!e.value.hasBarLine){r.setAttribute(\"linethickness\",\"0px\")}if(e.value.leftDelim!=null||e.value.rightDelim!=null){var a=[];if(e.value.leftDelim!=null){var i=new n.MathNode(\"mo\",[new n.TextNode(e.value.leftDelim)]);i.setAttribute(\"fence\",\"true\");a.push(i)}a.push(r);if(e.value.rightDelim!=null){var s=new n.MathNode(\"mo\",[new n.TextNode(e.value.rightDelim)]);s.setAttribute(\"fence\",\"true\");a.push(s)}var l=new n.MathNode(\"mrow\",a);return l}return r};m.array=function(e,t){return new n.MathNode(\"mtable\",e.value.body.map(function(e){return new n.MathNode(\"mtr\",e.map(function(e){return new n.MathNode(\"mtd\",[v(e,t)])}))}))};m.sqrt=function(e,t){var r;if(e.value.index){r=new n.MathNode(\"mroot\",[v(e.value.body,t),v(e.value.index,t)])}else{r=new n.MathNode(\"msqrt\",[v(e.value.body,t)])}return r};m.leftright=function(e,t){var r=f(e.value.body,t);if(e.value.left!==\".\"){var a=new n.MathNode(\"mo\",[h(e.value.left,e.mode)]);a.setAttribute(\"fence\",\"true\");r.unshift(a)}if(e.value.right!==\".\"){var i=new n.MathNode(\"mo\",[h(e.value.right,e.mode)]);i.setAttribute(\"fence\",\"true\");r.push(i)}var s=new n.MathNode(\"mrow\",r);return s};m.middle=function(e,t){var r=new n.MathNode(\"mo\",[h(e.value.middle,e.mode)]);r.setAttribute(\"fence\",\"true\");return r};m.accent=function(e,t){var r=new n.MathNode(\"mo\",[h(e.value.accent,e.mode)]);var a=new n.MathNode(\"mover\",[v(e.value.base,t),r]);a.setAttribute(\"accent\",\"true\");return a};m.spacing=function(e){var t;if(e.value===\"\\\\ \"||e.value===\"\\\\space\"||e.value===\" \"||e.value===\"~\"){t=new n.MathNode(\"mtext\",[new n.TextNode(\"\\xa0\")])}else{t=new n.MathNode(\"mspace\");t.setAttribute(\"width\",a.spacingFunctions[e.value].size)}return t};m.op=function(e,t){var r;if(e.value.symbol){r=new n.MathNode(\"mo\",[h(e.value.body,e.mode)])}else if(e.value.value){r=new n.MathNode(\"mo\",f(e.value.value,t))}else{r=new n.MathNode(\"mi\",[new n.TextNode(e.value.body.slice(1))])}return r};m.mod=function(e,t){var r=[];if(e.value.modType===\"pod\"||e.value.modType===\"pmod\"){r.push(new n.MathNode(\"mo\",[h(\"(\",e.mode)]))}if(e.value.modType!==\"pod\"){r.push(new n.MathNode(\"mo\",[h(\"mod\",e.mode)]))}if(e.value.value){var a=new n.MathNode(\"mspace\");a.setAttribute(\"width\",\"0.333333em\");r.push(a);r=r.concat(f(e.value.value,t))}if(e.value.modType===\"pod\"||e.value.modType===\"pmod\"){r.push(new n.MathNode(\"mo\",[h(\")\",e.mode)]))}return new n.MathNode(\"mo\",r)};m.katex=function(e){var t=new n.MathNode(\"mtext\",[new n.TextNode(\"KaTeX\")]);return t};m.font=function(e,t){var r=e.value.font;return v(e.value.body,t.withFont(r))};m.delimsizing=function(e){var t=[];if(e.value.value!==\".\"){t.push(h(e.value.value,e.mode))}var r=new n.MathNode(\"mo\",t);if(e.value.mclass===\"mopen\"||e.value.mclass===\"mclose\"){r.setAttribute(\"fence\",\"true\")}else{r.setAttribute(\"fence\",\"false\")}return r};m.styling=function(e,t){var r=f(e.value.value,t);var a=new n.MathNode(\"mstyle\",r);var i={display:[\"0\",\"true\"],text:[\"0\",\"false\"],script:[\"1\",\"false\"],scriptscript:[\"2\",\"false\"]};var s=i[e.value.style];a.setAttribute(\"scriptlevel\",s[0]);a.setAttribute(\"displaystyle\",s[1]);return a};m.sizing=function(e,t){var r=f(e.value.value,t);var i=new n.MathNode(\"mstyle\",r);i.setAttribute(\"mathsize\",a.sizingMultiplier[e.value.size]+\"em\");return i};m.overline=function(e,t){var r=new n.MathNode(\"mo\",[new n.TextNode(\"\\u203e\")]);r.setAttribute(\"stretchy\",\"true\");var a=new n.MathNode(\"mover\",[v(e.value.body,t),r]);a.setAttribute(\"accent\",\"true\");return a};m.underline=function(e,t){var r=new n.MathNode(\"mo\",[new n.TextNode(\"\\u203e\")]);r.setAttribute(\"stretchy\",\"true\");var a=new n.MathNode(\"munder\",[v(e.value.body,t),r]);a.setAttribute(\"accentunder\",\"true\");return a};m.rule=function(e){var t=new n.MathNode(\"mrow\");return t};m.kern=function(e){var t=new n.MathNode(\"mrow\");return t};m.llap=function(e,t){var r=new n.MathNode(\"mpadded\",[v(e.value.body,t)]);r.setAttribute(\"lspace\",\"-1width\");r.setAttribute(\"width\",\"0px\");return r};m.rlap=function(e,t){var r=new n.MathNode(\"mpadded\",[v(e.value.body,t)]);r.setAttribute(\"width\",\"0px\");return r};m.phantom=function(e,t){var r=f(e.value.value,t);return new n.MathNode(\"mphantom\",r)};m.mclass=function(e,t){var r=f(e.value.value,t);return new n.MathNode(\"mstyle\",r)};var f=function(e,t){var r=[];for(var a=0;a<e.length;a++){var i=e[a];r.push(v(i,t))}return r};var v=function(e,t){if(!e){return new n.MathNode(\"mrow\")}if(m[e.type]){return m[e.type](e,t)}else{throw new s(\"Got group of unknown type: '\"+e.type+\"'\")}};var d=function(e,t,r){var a=f(e,r);var i=new n.MathNode(\"mrow\",a);var s=new n.MathNode(\"annotation\",[new n.TextNode(t)]);s.setAttribute(\"encoding\",\"application/x-tex\");var l=new n.MathNode(\"semantics\",[i,s]);var o=new n.MathNode(\"math\",[l]);return u([\"katex-mathml\"],[o])};t.exports=d},{\"./ParseError\":6,\"./buildCommon\":10,\"./fontMetrics\":17,\"./mathMLTree\":20,\"./symbols\":23,\"./utils\":25}],13:[function(e,t,r){var a=e(\"./buildHTML\");var i=e(\"./buildMathML\");var n=e(\"./buildCommon\");var s=e(\"./Options\");var l=e(\"./Settings\");var o=e(\"./Style\");var u=n.makeSpan;var p=function(e,t,r){r=r||new l({});var n=o.TEXT;if(r.displayMode){n=o.DISPLAY}var p=new s({style:n,size:\"size5\"});var h=i(e,t,p);var c=a(e,p);var m=u([\"katex\"],[h,c]);if(r.displayMode){return u([\"katex-display\"],[m])}else{return m}};t.exports=p},{\"./Options\":5,\"./Settings\":8,\"./Style\":9,\"./buildCommon\":10,\"./buildHTML\":11,\"./buildMathML\":12}],14:[function(e,t,r){var a=e(\"./ParseError\");var i=e(\"./Style\");var n=e(\"./buildCommon\");var s=e(\"./fontMetrics\");var l=e(\"./symbols\");var o=e(\"./utils\");var u=n.makeSpan;var p=function(e,t){if(l.math[e]&&l.math[e].replace){return s.getCharacterMetrics(l.math[e].replace,t)}else{return s.getCharacterMetrics(e,t)}};var h=function(e,t,r,a){return n.makeSymbol(e,\"Size\"+t+\"-Regular\",r,a)};var c=function(e,t,r,a){a=a||[];var i=u(a.concat([\"style-wrap\",r.style.reset(),t.cls()]),[e],r);var n=t.sizeMultiplier/r.style.sizeMultiplier;i.height*=n;i.depth*=n;i.maxFontSize=t.sizeMultiplier;return i};var m=function(e,t,r,a,i,s){var l=n.makeSymbol(e,\"Main-Regular\",i,a);var o=c(l,t,a,s);if(r){var u=(1-a.style.sizeMultiplier/t.sizeMultiplier)*a.style.metrics.axisHeight;o.style.top=u+\"em\";o.height-=u;o.depth+=u}return o};var f=function(e,t,r,a,n,s){var l=h(e,t,n,a);var o=c(u([\"delimsizing\",\"size\"+t],[l],a),i.TEXT,a,s);if(r){var p=(1-a.style.sizeMultiplier)*a.style.metrics.axisHeight;o.style.top=p+\"em\";o.height-=p;o.depth+=p}return o};var v=function(e,t,r){var a;if(t===\"Size1-Regular\"){a=\"delim-size1\"}else if(t===\"Size4-Regular\"){a=\"delim-size4\"}var i=u([\"delimsizinginner\",a],[u([],[n.makeSymbol(e,t,r)])]);return{type:\"elem\",elem:i}};var d=function(e,t,r,a,s,l){var o;var h;var m;var f;o=m=f=e;h=null;var d=\"Size1-Regular\";if(e===\"\\\\uparrow\"){m=f=\"\\u23d0\"}else if(e===\"\\\\Uparrow\"){m=f=\"\\u2016\"}else if(e===\"\\\\downarrow\"){o=m=\"\\u23d0\"}else if(e===\"\\\\Downarrow\"){o=m=\"\\u2016\"}else if(e===\"\\\\updownarrow\"){o=\"\\\\uparrow\";m=\"\\u23d0\";f=\"\\\\downarrow\"}else if(e===\"\\\\Updownarrow\"){o=\"\\\\Uparrow\";m=\"\\u2016\";f=\"\\\\Downarrow\"}else if(e===\"[\"||e===\"\\\\lbrack\"){o=\"\\u23a1\";m=\"\\u23a2\";f=\"\\u23a3\";d=\"Size4-Regular\"}else if(e===\"]\"||e===\"\\\\rbrack\"){o=\"\\u23a4\";m=\"\\u23a5\";f=\"\\u23a6\";d=\"Size4-Regular\"}else if(e===\"\\\\lfloor\"){m=o=\"\\u23a2\";f=\"\\u23a3\";d=\"Size4-Regular\"}else if(e===\"\\\\lceil\"){o=\"\\u23a1\";m=f=\"\\u23a2\";d=\"Size4-Regular\"}else if(e===\"\\\\rfloor\"){m=o=\"\\u23a5\";f=\"\\u23a6\";d=\"Size4-Regular\"}else if(e===\"\\\\rceil\"){o=\"\\u23a4\";m=f=\"\\u23a5\";d=\"Size4-Regular\"}else if(e===\"(\"){o=\"\\u239b\";m=\"\\u239c\";f=\"\\u239d\";d=\"Size4-Regular\"}else if(e===\")\"){o=\"\\u239e\";m=\"\\u239f\";f=\"\\u23a0\";d=\"Size4-Regular\"}else if(e===\"\\\\{\"||e===\"\\\\lbrace\"){o=\"\\u23a7\";h=\"\\u23a8\";f=\"\\u23a9\";m=\"\\u23aa\";d=\"Size4-Regular\"}else if(e===\"\\\\}\"||e===\"\\\\rbrace\"){o=\"\\u23ab\";h=\"\\u23ac\";f=\"\\u23ad\";m=\"\\u23aa\";d=\"Size4-Regular\"}else if(e===\"\\\\lgroup\"){o=\"\\u23a7\";f=\"\\u23a9\";m=\"\\u23aa\";d=\"Size4-Regular\"}else if(e===\"\\\\rgroup\"){o=\"\\u23ab\";f=\"\\u23ad\";m=\"\\u23aa\";d=\"Size4-Regular\"}else if(e===\"\\\\lmoustache\"){o=\"\\u23a7\";f=\"\\u23ad\";m=\"\\u23aa\";d=\"Size4-Regular\"}else if(e===\"\\\\rmoustache\"){o=\"\\u23ab\";f=\"\\u23a9\";m=\"\\u23aa\";d=\"Size4-Regular\"}else if(e===\"\\\\surd\"){o=\"\\ue001\";f=\"\\u23b7\";m=\"\\ue000\";d=\"Size4-Regular\"}var g=p(o,d);var y=g.height+g.depth;var x=p(m,d);var b=x.height+x.depth;var w=p(f,d);var k=w.height+w.depth;var z=0;var S=1;if(h!==null){var M=p(h,d);z=M.height+M.depth;S=2}var T=y+k+z;var A=Math.ceil((t-T)/(S*b));var N=T+A*S*b;var q=a.style.metrics.axisHeight;if(r){q*=a.style.sizeMultiplier}var R=N/2-q;var E=[];E.push(v(f,d,s));var C;if(h===null){for(C=0;C<A;C++){E.push(v(m,d,s))}}else{for(C=0;C<A;C++){E.push(v(m,d,s))}E.push(v(h,d,s));for(C=0;C<A;C++){E.push(v(m,d,s))}}E.push(v(o,d,s));var D=n.makeVList(E,\"bottom\",R,a);return c(u([\"delimsizing\",\"mult\"],[D],a),i.TEXT,a,l)};var g=[\"(\",\")\",\"[\",\"\\\\lbrack\",\"]\",\"\\\\rbrack\",\"\\\\{\",\"\\\\lbrace\",\"\\\\}\",\"\\\\rbrace\",\"\\\\lfloor\",\"\\\\rfloor\",\"\\\\lceil\",\"\\\\rceil\",\"\\\\surd\"];var y=[\"\\\\uparrow\",\"\\\\downarrow\",\"\\\\updownarrow\",\"\\\\Uparrow\",\"\\\\Downarrow\",\"\\\\Updownarrow\",\"|\",\"\\\\|\",\"\\\\vert\",\"\\\\Vert\",\"\\\\lvert\",\"\\\\rvert\",\"\\\\lVert\",\"\\\\rVert\",\"\\\\lgroup\",\"\\\\rgroup\",\"\\\\lmoustache\",\"\\\\rmoustache\"];var x=[\"<\",\">\",\"\\\\langle\",\"\\\\rangle\",\"/\",\"\\\\backslash\",\"\\\\lt\",\"\\\\gt\"];var b=[0,1.2,1.8,2.4,3];var w=function(e,t,r,i,n){if(e===\"<\"||e===\"\\\\lt\"){e=\"\\\\langle\"}else if(e===\">\"||e===\"\\\\gt\"){e=\"\\\\rangle\"}if(o.contains(g,e)||o.contains(x,e)){return f(e,t,false,r,i,n)}else if(o.contains(y,e)){return d(e,b[t],false,r,i,n)}else{throw new a(\"Illegal delimiter: '\"+e+\"'\")}};var k=[{type:\"small\",style:i.SCRIPTSCRIPT},{type:\"small\",style:i.SCRIPT},{type:\"small\",style:i.TEXT},{type:\"large\",size:1},{type:\"large\",size:2},{type:\"large\",size:3},{type:\"large\",size:4}];var z=[{type:\"small\",style:i.SCRIPTSCRIPT},{type:\"small\",style:i.SCRIPT},{type:\"small\",style:i.TEXT},{type:\"stack\"}];var S=[{type:\"small\",style:i.SCRIPTSCRIPT},{type:\"small\",style:i.SCRIPT},{type:\"small\",style:i.TEXT},{type:\"large\",size:1},{type:\"large\",size:2},{type:\"large\",size:3},{type:\"large\",size:4},{type:\"stack\"}];var M=function(e){if(e.type===\"small\"){return\"Main-Regular\"}else if(e.type===\"large\"){return\"Size\"+e.size+\"-Regular\"}else if(e.type===\"stack\"){return\"Size4-Regular\"}};var T=function(e,t,r,a){var i=Math.min(2,3-a.style.size);for(var n=i;n<r.length;n++){if(r[n].type===\"stack\"){break}var s=p(e,M(r[n]));var l=s.height+s.depth;if(r[n].type===\"small\"){l*=r[n].style.sizeMultiplier}if(l>t){return r[n]}}return r[r.length-1]};var A=function(e,t,r,a,i,n){if(e===\"<\"||e===\"\\\\lt\"){e=\"\\\\langle\"}else if(e===\">\"||e===\"\\\\gt\"){e=\"\\\\rangle\"}var s;if(o.contains(x,e)){s=k}else if(o.contains(g,e)){s=S}else{s=z}var l=T(e,t,s,a);if(l.type===\"small\"){return m(e,l.style,r,a,i,n)}else if(l.type===\"large\"){return f(e,l.size,r,a,i,n)}else if(l.type===\"stack\"){return d(e,t,r,a,i,n)}};var N=function(e,t,r,a,i,n){var l=a.style.metrics.axisHeight*a.style.sizeMultiplier;var o=901;var u=5/s.metrics.ptPerEm;var p=Math.max(t-l,r+l);var h=Math.max(p/500*o,2*p-u);return A(e,h,true,a,i,n)};t.exports={sizedDelim:w,customSizedDelim:A,leftRightDelim:N}},{\"./ParseError\":6,\"./Style\":9,\"./buildCommon\":10,\"./fontMetrics\":17,\"./symbols\":23,\"./utils\":25}],15:[function(e,t,r){var a=e(\"./unicodeRegexes\");var i=e(\"./utils\");var n=function(e){e=e.slice();for(var t=e.length-1;t>=0;t--){if(!e[t]){e.splice(t,1)}}return e.join(\" \")};function s(e,t,r){this.classes=e||[];this.children=t||[];this.height=0;this.depth=0;this.maxFontSize=0;this.style={};this.attributes={};if(r){if(r.style.isTight()){this.classes.push(\"mtight\")}if(r.getColor()){this.style.color=r.getColor()}}}s.prototype.setAttribute=function(e,t){this.attributes[e]=t};s.prototype.tryCombine=function(e){return false};s.prototype.toNode=function(){var e=document.createElement(\"span\");e.className=n(this.classes);for(var t in this.style){if(Object.prototype.hasOwnProperty.call(this.style,t)){e.style[t]=this.style[t]}}for(var r in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,r)){e.setAttribute(r,this.attributes[r])}}for(var a=0;a<this.children.length;a++){e.appendChild(this.children[a].toNode())}return e};s.prototype.toMarkup=function(){var e=\"<span\";if(this.classes.length){e+=' class=\"';e+=i.escape(n(this.classes));e+='\"'}var t=\"\";for(var r in this.style){if(this.style.hasOwnProperty(r)){t+=i.hyphenate(r)+\":\"+this.style[r]+\";\"}}if(t){e+=' style=\"'+i.escape(t)+'\"'}for(var a in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,a)){e+=\" \"+a+'=\"';e+=i.escape(this.attributes[a]);e+='\"'}}e+=\">\";for(var s=0;s<this.children.length;s++){e+=this.children[s].toMarkup()}e+=\"</span>\";return e};function l(e){this.children=e||[];this.height=0;this.depth=0;this.maxFontSize=0}l.prototype.toNode=function(){var e=document.createDocumentFragment();for(var t=0;t<this.children.length;t++){e.appendChild(this.children[t].toNode())}return e};l.prototype.toMarkup=function(){var e=\"\";for(var t=0;t<this.children.length;t++){e+=this.children[t].toMarkup()}return e};var o={\"\\xee\":\"\\u0131\\u0302\",\"\\xef\":\"\\u0131\\u0308\",\"\\xed\":\"\\u0131\\u0301\",\"\\xec\":\"\\u0131\\u0300\"};function u(e,t,r,i,n,s,l){this.value=e||\"\";this.height=t||0;this.depth=r||0;this.italic=i||0;this.skew=n||0;this.classes=s||[];this.style=l||{};this.maxFontSize=0;if(a.cjkRegex.test(e)){if(a.hangulRegex.test(e)){this.classes.push(\"hangul_fallback\")}else{this.classes.push(\"cjk_fallback\")}}if(/[\\xee\\xef\\xed\\xec]/.test(this.value)){this.value=o[this.value]}}u.prototype.tryCombine=function(e){if(!e||!(e instanceof u)||this.italic>0||n(this.classes)!==n(e.classes)||this.skew!==e.skew||this.maxFontSize!==e.maxFontSize){return false}for(var t in this.style){if(this.style.hasOwnProperty(t)&&this.style[t]!==e.style[t]){return false}}for(t in e.style){if(e.style.hasOwnProperty(t)&&this.style[t]!==e.style[t]){return false}}this.value+=e.value;this.height=Math.max(this.height,e.height);this.depth=Math.max(this.depth,e.depth);this.italic=e.italic;return true};u.prototype.toNode=function(){var e=document.createTextNode(this.value);var t=null;if(this.italic>0){t=document.createElement(\"span\");t.style.marginRight=this.italic+\"em\"}if(this.classes.length>0){t=t||document.createElement(\"span\");t.className=n(this.classes)}for(var r in this.style){if(this.style.hasOwnProperty(r)){t=t||document.createElement(\"span\");t.style[r]=this.style[r]}}if(t){t.appendChild(e);return t}else{return e}};u.prototype.toMarkup=function(){var e=false;var t=\"<span\";if(this.classes.length){e=true;t+=' class=\"';t+=i.escape(n(this.classes));t+='\"'}var r=\"\";if(this.italic>0){r+=\"margin-right:\"+this.italic+\"em;\"}for(var a in this.style){if(this.style.hasOwnProperty(a)){r+=i.hyphenate(a)+\":\"+this.style[a]+\";\"}}if(r){e=true;t+=' style=\"'+i.escape(r)+'\"'}var s=i.escape(this.value);if(e){t+=\">\";t+=s;t+=\"</span>\";return t}else{return s}};t.exports={span:s,documentFragment:l,symbolNode:u}},{\"./unicodeRegexes\":24,\"./utils\":25}],16:[function(e,t,r){var a=e(\"./parseData\");var i=e(\"./ParseError\");var n=e(\"./Style\");var s=a.ParseNode;function l(e,t){var r=[];var a=[r];var n=[];while(true){var l=e.parseExpression(false,null);r.push(new s(\"ordgroup\",l,e.mode));var o=e.nextToken.text;if(o===\"&\"){e.consume()}else if(o===\"\\\\end\"){break}else if(o===\"\\\\\\\\\"||o===\"\\\\cr\"){var u=e.parseFunction();n.push(u.value.size);r=[];a.push(r)}else{throw new i(\"Expected & or \\\\\\\\ or \\\\end\",e.nextToken)}}t.body=a;t.rowGaps=n;return new s(t.type,t,e.mode)}function o(e,r,a){if(typeof e===\"string\"){e=[e]}if(typeof r===\"number\"){r={numArgs:r}}var i={numArgs:r.numArgs||0,argTypes:r.argTypes,greediness:1,allowedInText:!!r.allowedInText,numOptionalArgs:r.numOptionalArgs||0,handler:a};for(var n=0;n<e.length;++n){t.exports[e[n]]=i}}o(\"array\",{numArgs:1},function(e,t){var r=t[0];r=r.value.map?r.value:[r];var a=r.map(function(e){var t=e.value;if(\"lcr\".indexOf(t)!==-1){return{type:\"align\",align:t}}else if(t===\"|\"){return{type:\"separator\",separator:\"|\"}}throw new i(\"Unknown column alignment: \"+e.value,e)});var n={type:\"array\",cols:a,hskipBeforeAndAfter:true};n=l(e.parser,n);return n});o([\"matrix\",\"pmatrix\",\"bmatrix\",\"Bmatrix\",\"vmatrix\",\"Vmatrix\"],{},function(e){var t={matrix:null,pmatrix:[\"(\",\")\"],bmatrix:[\"[\",\"]\"],Bmatrix:[\"\\\\{\",\"\\\\}\"],vmatrix:[\"|\",\"|\"],Vmatrix:[\"\\\\Vert\",\"\\\\Vert\"]}[e.envName];var r={type:\"array\",hskipBeforeAndAfter:false};r=l(e.parser,r);if(t){r=new s(\"leftright\",{body:[r],left:t[0],right:t[1]},e.mode)}return r});o(\"cases\",{},function(e){var t={type:\"array\",arraystretch:1.2,cols:[{type:\"align\",align:\"l\",pregap:0,postgap:n.TEXT.metrics.quad},{type:\"align\",align:\"l\",pregap:0,postgap:0}]};t=l(e.parser,t);t=new s(\"leftright\",{body:[t],left:\"\\\\{\",right:\".\"},e.mode);return t});o(\"aligned\",{},function(e){var t={type:\"array\",cols:[]};t=l(e.parser,t);var r=new s(\"ordgroup\",[],e.mode);var a=0;t.value.body.forEach(function(e){var t;for(t=1;t<e.length;t+=2){e[t].value.unshift(r)}if(a<e.length){a=e.length}});for(var i=0;i<a;++i){var n=\"r\";var o=0;if(i%2===1){n=\"l\"}else if(i>0){o=2}t.value.cols[i]={type:\"align\",align:n,pregap:o,postgap:0}}return t})},{\"./ParseError\":6,\"./Style\":9,\"./parseData\":21}],17:[function(e,t,r){var a=e(\"./Style\");var i=e(\"./unicodeRegexes\").cjkRegex;var n={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25]};var s=0;var l=0;var o=0;var u=0;var p=.431;var h=1;var c=0;var m=.04;var f=.111;var v=.166;var d=.2;var g=.6;var y=.1;var x=10;var b=2/x;var w={defaultRuleThickness:m,bigOpSpacing1:f,bigOpSpacing2:v,bigOpSpacing3:d,bigOpSpacing4:g,bigOpSpacing5:y,ptPerEm:x,doubleRuleSep:b};var k=e(\"./fontMetricsData\");var z={\"\\xc0\":\"A\",\"\\xc1\":\"A\",\"\\xc2\":\"A\",\"\\xc3\":\"A\",\"\\xc4\":\"A\",\"\\xc5\":\"A\",\"\\xc6\":\"A\",\"\\xc7\":\"C\",\"\\xc8\":\"E\",\"\\xc9\":\"E\",\"\\xca\":\"E\",\"\\xcb\":\"E\",\"\\xcc\":\"I\",\"\\xcd\":\"I\",\"\\xce\":\"I\",\"\\xcf\":\"I\",\"\\xd0\":\"D\",\"\\xd1\":\"N\",\"\\xd2\":\"O\",\"\\xd3\":\"O\",\"\\xd4\":\"O\",\"\\xd5\":\"O\",\"\\xd6\":\"O\",\"\\xd8\":\"O\",\"\\xd9\":\"U\",\"\\xda\":\"U\",\"\\xdb\":\"U\",\"\\xdc\":\"U\",\"\\xdd\":\"Y\",\"\\xde\":\"o\",\"\\xdf\":\"B\",\"\\xe0\":\"a\",\"\\xe1\":\"a\",\"\\xe2\":\"a\",\"\\xe3\":\"a\",\"\\xe4\":\"a\",\"\\xe5\":\"a\",\"\\xe6\":\"a\",\"\\xe7\":\"c\",\"\\xe8\":\"e\",\"\\xe9\":\"e\",\"\\xea\":\"e\",\"\\xeb\":\"e\",\"\\xec\":\"i\",\"\\xed\":\"i\",\"\\xee\":\"i\",\"\\xef\":\"i\",\"\\xf0\":\"d\",\"\\xf1\":\"n\",\"\\xf2\":\"o\",\"\\xf3\":\"o\",\"\\xf4\":\"o\",\"\\xf5\":\"o\",\"\\xf6\":\"o\",\"\\xf8\":\"o\",\"\\xf9\":\"u\",\"\\xfa\":\"u\",\"\\xfb\":\"u\",\"\\xfc\":\"u\",\"\\xfd\":\"y\",\"\\xfe\":\"o\",\"\\xff\":\"y\",\"\\u0410\":\"A\",\"\\u0411\":\"B\",\"\\u0412\":\"B\",\"\\u0413\":\"F\",\"\\u0414\":\"A\",\"\\u0415\":\"E\",\"\\u0416\":\"K\",\"\\u0417\":\"3\",\"\\u0418\":\"N\",\"\\u0419\":\"N\",\"\\u041a\":\"K\",\"\\u041b\":\"N\",\"\\u041c\":\"M\",\"\\u041d\":\"H\",\"\\u041e\":\"O\",\"\\u041f\":\"N\",\"\\u0420\":\"P\",\"\\u0421\":\"C\",\"\\u0422\":\"T\",\"\\u0423\":\"y\",\"\\u0424\":\"O\",\"\\u0425\":\"X\",\"\\u0426\":\"U\",\"\\u0427\":\"h\",\"\\u0428\":\"W\",\"\\u0429\":\"W\",\"\\u042a\":\"B\",\"\\u042b\":\"X\",\"\\u042c\":\"B\",\"\\u042d\":\"3\",\"\\u042e\":\"X\",\"\\u042f\":\"R\",\"\\u0430\":\"a\",\"\\u0431\":\"b\",\"\\u0432\":\"a\",\"\\u0433\":\"r\",\"\\u0434\":\"y\",\"\\u0435\":\"e\",\"\\u0436\":\"m\",\"\\u0437\":\"e\",\"\\u0438\":\"n\",\"\\u0439\":\"n\",\"\\u043a\":\"n\",\"\\u043b\":\"n\",\"\\u043c\":\"m\",\"\\u043d\":\"n\",\"\\u043e\":\"o\",\"\\u043f\":\"n\",\"\\u0440\":\"p\",\"\\u0441\":\"c\",\"\\u0442\":\"o\",\"\\u0443\":\"y\",\"\\u0444\":\"b\",\"\\u0445\":\"x\",\"\\u0446\":\"n\",\"\\u0447\":\"n\",\"\\u0448\":\"w\",\"\\u0449\":\"w\",\"\\u044a\":\"a\",\"\\u044b\":\"m\",\"\\u044c\":\"a\",\"\\u044d\":\"e\",\"\\u044e\":\"m\",\"\\u044f\":\"r\"};var S=function(e,t){var r=e.charCodeAt(0);if(e[0]in z){r=z[e[0]].charCodeAt(0)}else if(i.test(e[0])){r=\"M\".charCodeAt(0)}var a=k[t][r];if(a){return{depth:a[0],height:a[1],italic:a[2],skew:a[3],width:a[4]}}};t.exports={metrics:w,sigmas:n,getCharacterMetrics:S}},{\"./Style\":9,\"./fontMetricsData\":18,\"./unicodeRegexes\":24}],18:[function(e,t,r){t.exports={\"AMS-Regular\":{65:[0,.68889,0,0],66:[0,.68889,0,0],67:[0,.68889,0,0],68:[0,.68889,0,0],69:[0,.68889,0,0],70:[0,.68889,0,0],71:[0,.68889,0,0],72:[0,.68889,0,0],73:[0,.68889,0,0],74:[.16667,.68889,0,0],75:[0,.68889,0,0],76:[0,.68889,0,0],77:[0,.68889,0,0],78:[0,.68889,0,0],79:[.16667,.68889,0,0],80:[0,.68889,0,0],81:[.16667,.68889,0,0],82:[0,.68889,0,0],83:[0,.68889,0,0],84:[0,.68889,0,0],85:[0,.68889,0,0],86:[0,.68889,0,0],87:[0,.68889,0,0],88:[0,.68889,0,0],89:[0,.68889,0,0],90:[0,.68889,0,0],107:[0,.68889,0,0],165:[0,.675,.025,0],174:[.15559,.69224,0,0],240:[0,.68889,0,0],295:[0,.68889,0,0],710:[0,.825,0,0],732:[0,.9,0,0],770:[0,.825,0,0],771:[0,.9,0,0],989:[.08167,.58167,0,0],1008:[0,.43056,.04028,0],8245:[0,.54986,0,0],8463:[0,.68889,0,0],8487:[0,.68889,0,0],8498:[0,.68889,0,0],8502:[0,.68889,0,0],8503:[0,.68889,0,0],8504:[0,.68889,0,0],8513:[0,.68889,0,0],8592:[-.03598,.46402,0,0],8594:[-.03598,.46402,0,0],8602:[-.13313,.36687,0,0],8603:[-.13313,.36687,0,0],8606:[.01354,.52239,0,0],8608:[.01354,.52239,0,0],8610:[.01354,.52239,0,0],8611:[.01354,.52239,0,0],8619:[0,.54986,0,0],8620:[0,.54986,0,0],8621:[-.13313,.37788,0,0],8622:[-.13313,.36687,0,0],8624:[0,.69224,0,0],8625:[0,.69224,0,0],8630:[0,.43056,0,0],8631:[0,.43056,0,0],8634:[.08198,.58198,0,0],8635:[.08198,.58198,0,0],8638:[.19444,.69224,0,0],8639:[.19444,.69224,0,0],8642:[.19444,.69224,0,0],8643:[.19444,.69224,0,0],8644:[.1808,.675,0,0],8646:[.1808,.675,0,0],8647:[.1808,.675,0,0],8648:[.19444,.69224,0,0],8649:[.1808,.675,0,0],8650:[.19444,.69224,0,0],8651:[.01354,.52239,0,0],8652:[.01354,.52239,0,0],8653:[-.13313,.36687,0,0],8654:[-.13313,.36687,0,0],8655:[-.13313,.36687,0,0],8666:[.13667,.63667,0,0],8667:[.13667,.63667,0,0],8669:[-.13313,.37788,0,0],8672:[-.064,.437,0,0],8674:[-.064,.437,0,0],8705:[0,.825,0,0],8708:[0,.68889,0,0],8709:[.08167,.58167,0,0],8717:[0,.43056,0,0],8722:[-.03598,.46402,0,0],8724:[.08198,.69224,0,0],8726:[.08167,.58167,0,0],8733:[0,.69224,0,0],8736:[0,.69224,0,0],8737:[0,.69224,0,0],8738:[.03517,.52239,0,0],8739:[.08167,.58167,0,0],8740:[.25142,.74111,0,0],8741:[.08167,.58167,0,0],8742:[.25142,.74111,0,0],8756:[0,.69224,0,0],8757:[0,.69224,0,0],8764:[-.13313,.36687,0,0],8765:[-.13313,.37788,0,0],8769:[-.13313,.36687,0,0],8770:[-.03625,.46375,0,0],8774:[.30274,.79383,0,0],8776:[-.01688,.48312,0,0],8778:[.08167,.58167,0,0],8782:[.06062,.54986,0,0],8783:[.06062,.54986,0,0],8785:[.08198,.58198,0,0],8786:[.08198,.58198,0,0],8787:[.08198,.58198,0,0],8790:[0,.69224,0,0],8791:[.22958,.72958,0,0],8796:[.08198,.91667,0,0],8806:[.25583,.75583,0,0],\n8807:[.25583,.75583,0,0],8808:[.25142,.75726,0,0],8809:[.25142,.75726,0,0],8812:[.25583,.75583,0,0],8814:[.20576,.70576,0,0],8815:[.20576,.70576,0,0],8816:[.30274,.79383,0,0],8817:[.30274,.79383,0,0],8818:[.22958,.72958,0,0],8819:[.22958,.72958,0,0],8822:[.1808,.675,0,0],8823:[.1808,.675,0,0],8828:[.13667,.63667,0,0],8829:[.13667,.63667,0,0],8830:[.22958,.72958,0,0],8831:[.22958,.72958,0,0],8832:[.20576,.70576,0,0],8833:[.20576,.70576,0,0],8840:[.30274,.79383,0,0],8841:[.30274,.79383,0,0],8842:[.13597,.63597,0,0],8843:[.13597,.63597,0,0],8847:[.03517,.54986,0,0],8848:[.03517,.54986,0,0],8858:[.08198,.58198,0,0],8859:[.08198,.58198,0,0],8861:[.08198,.58198,0,0],8862:[0,.675,0,0],8863:[0,.675,0,0],8864:[0,.675,0,0],8865:[0,.675,0,0],8872:[0,.69224,0,0],8873:[0,.69224,0,0],8874:[0,.69224,0,0],8876:[0,.68889,0,0],8877:[0,.68889,0,0],8878:[0,.68889,0,0],8879:[0,.68889,0,0],8882:[.03517,.54986,0,0],8883:[.03517,.54986,0,0],8884:[.13667,.63667,0,0],8885:[.13667,.63667,0,0],8888:[0,.54986,0,0],8890:[.19444,.43056,0,0],8891:[.19444,.69224,0,0],8892:[.19444,.69224,0,0],8901:[0,.54986,0,0],8903:[.08167,.58167,0,0],8905:[.08167,.58167,0,0],8906:[.08167,.58167,0,0],8907:[0,.69224,0,0],8908:[0,.69224,0,0],8909:[-.03598,.46402,0,0],8910:[0,.54986,0,0],8911:[0,.54986,0,0],8912:[.03517,.54986,0,0],8913:[.03517,.54986,0,0],8914:[0,.54986,0,0],8915:[0,.54986,0,0],8916:[0,.69224,0,0],8918:[.0391,.5391,0,0],8919:[.0391,.5391,0,0],8920:[.03517,.54986,0,0],8921:[.03517,.54986,0,0],8922:[.38569,.88569,0,0],8923:[.38569,.88569,0,0],8926:[.13667,.63667,0,0],8927:[.13667,.63667,0,0],8928:[.30274,.79383,0,0],8929:[.30274,.79383,0,0],8934:[.23222,.74111,0,0],8935:[.23222,.74111,0,0],8936:[.23222,.74111,0,0],8937:[.23222,.74111,0,0],8938:[.20576,.70576,0,0],8939:[.20576,.70576,0,0],8940:[.30274,.79383,0,0],8941:[.30274,.79383,0,0],8994:[.19444,.69224,0,0],8995:[.19444,.69224,0,0],9416:[.15559,.69224,0,0],9484:[0,.69224,0,0],9488:[0,.69224,0,0],9492:[0,.37788,0,0],9496:[0,.37788,0,0],9585:[.19444,.68889,0,0],9586:[.19444,.74111,0,0],9632:[0,.675,0,0],9633:[0,.675,0,0],9650:[0,.54986,0,0],9651:[0,.54986,0,0],9654:[.03517,.54986,0,0],9660:[0,.54986,0,0],9661:[0,.54986,0,0],9664:[.03517,.54986,0,0],9674:[.11111,.69224,0,0],9733:[.19444,.69224,0,0],10003:[0,.69224,0,0],10016:[0,.69224,0,0],10731:[.11111,.69224,0,0],10846:[.19444,.75583,0,0],10877:[.13667,.63667,0,0],10878:[.13667,.63667,0,0],10885:[.25583,.75583,0,0],10886:[.25583,.75583,0,0],10887:[.13597,.63597,0,0],10888:[.13597,.63597,0,0],10889:[.26167,.75726,0,0],10890:[.26167,.75726,0,0],10891:[.48256,.98256,0,0],10892:[.48256,.98256,0,0],10901:[.13667,.63667,0,0],10902:[.13667,.63667,0,0],10933:[.25142,.75726,0,0],10934:[.25142,.75726,0,0],10935:[.26167,.75726,0,0],10936:[.26167,.75726,0,0],10937:[.26167,.75726,0,0],10938:[.26167,.75726,0,0],10949:[.25583,.75583,0,0],10950:[.25583,.75583,0,0],10955:[.28481,.79383,0,0],10956:[.28481,.79383,0,0],57350:[.08167,.58167,0,0],57351:[.08167,.58167,0,0],57352:[.08167,.58167,0,0],57353:[0,.43056,.04028,0],57356:[.25142,.75726,0,0],57357:[.25142,.75726,0,0],57358:[.41951,.91951,0,0],57359:[.30274,.79383,0,0],57360:[.30274,.79383,0,0],57361:[.41951,.91951,0,0],57366:[.25142,.75726,0,0],57367:[.25142,.75726,0,0],57368:[.25142,.75726,0,0],57369:[.25142,.75726,0,0],57370:[.13597,.63597,0,0],57371:[.13597,.63597,0,0]},\"Caligraphic-Regular\":{48:[0,.43056,0,0],49:[0,.43056,0,0],50:[0,.43056,0,0],51:[.19444,.43056,0,0],52:[.19444,.43056,0,0],53:[.19444,.43056,0,0],54:[0,.64444,0,0],55:[.19444,.43056,0,0],56:[0,.64444,0,0],57:[.19444,.43056,0,0],65:[0,.68333,0,.19445],66:[0,.68333,.03041,.13889],67:[0,.68333,.05834,.13889],68:[0,.68333,.02778,.08334],69:[0,.68333,.08944,.11111],70:[0,.68333,.09931,.11111],71:[.09722,.68333,.0593,.11111],72:[0,.68333,.00965,.11111],73:[0,.68333,.07382,0],74:[.09722,.68333,.18472,.16667],75:[0,.68333,.01445,.05556],76:[0,.68333,0,.13889],77:[0,.68333,0,.13889],78:[0,.68333,.14736,.08334],79:[0,.68333,.02778,.11111],80:[0,.68333,.08222,.08334],81:[.09722,.68333,0,.11111],82:[0,.68333,0,.08334],83:[0,.68333,.075,.13889],84:[0,.68333,.25417,0],85:[0,.68333,.09931,.08334],86:[0,.68333,.08222,0],87:[0,.68333,.08222,.08334],88:[0,.68333,.14643,.13889],89:[.09722,.68333,.08222,.08334],90:[0,.68333,.07944,.13889]},\"Fraktur-Regular\":{33:[0,.69141,0,0],34:[0,.69141,0,0],38:[0,.69141,0,0],39:[0,.69141,0,0],40:[.24982,.74947,0,0],41:[.24982,.74947,0,0],42:[0,.62119,0,0],43:[.08319,.58283,0,0],44:[0,.10803,0,0],45:[.08319,.58283,0,0],46:[0,.10803,0,0],47:[.24982,.74947,0,0],48:[0,.47534,0,0],49:[0,.47534,0,0],50:[0,.47534,0,0],51:[.18906,.47534,0,0],52:[.18906,.47534,0,0],53:[.18906,.47534,0,0],54:[0,.69141,0,0],55:[.18906,.47534,0,0],56:[0,.69141,0,0],57:[.18906,.47534,0,0],58:[0,.47534,0,0],59:[.12604,.47534,0,0],61:[-.13099,.36866,0,0],63:[0,.69141,0,0],65:[0,.69141,0,0],66:[0,.69141,0,0],67:[0,.69141,0,0],68:[0,.69141,0,0],69:[0,.69141,0,0],70:[.12604,.69141,0,0],71:[0,.69141,0,0],72:[.06302,.69141,0,0],73:[0,.69141,0,0],74:[.12604,.69141,0,0],75:[0,.69141,0,0],76:[0,.69141,0,0],77:[0,.69141,0,0],78:[0,.69141,0,0],79:[0,.69141,0,0],80:[.18906,.69141,0,0],81:[.03781,.69141,0,0],82:[0,.69141,0,0],83:[0,.69141,0,0],84:[0,.69141,0,0],85:[0,.69141,0,0],86:[0,.69141,0,0],87:[0,.69141,0,0],88:[0,.69141,0,0],89:[.18906,.69141,0,0],90:[.12604,.69141,0,0],91:[.24982,.74947,0,0],93:[.24982,.74947,0,0],94:[0,.69141,0,0],97:[0,.47534,0,0],98:[0,.69141,0,0],99:[0,.47534,0,0],100:[0,.62119,0,0],101:[0,.47534,0,0],102:[.18906,.69141,0,0],103:[.18906,.47534,0,0],104:[.18906,.69141,0,0],105:[0,.69141,0,0],106:[0,.69141,0,0],107:[0,.69141,0,0],108:[0,.69141,0,0],109:[0,.47534,0,0],110:[0,.47534,0,0],111:[0,.47534,0,0],112:[.18906,.52396,0,0],113:[.18906,.47534,0,0],114:[0,.47534,0,0],115:[0,.47534,0,0],116:[0,.62119,0,0],117:[0,.47534,0,0],118:[0,.52396,0,0],119:[0,.52396,0,0],120:[.18906,.47534,0,0],121:[.18906,.47534,0,0],122:[.18906,.47534,0,0],8216:[0,.69141,0,0],8217:[0,.69141,0,0],58112:[0,.62119,0,0],58113:[0,.62119,0,0],58114:[.18906,.69141,0,0],58115:[.18906,.69141,0,0],58116:[.18906,.47534,0,0],58117:[0,.69141,0,0],58118:[0,.62119,0,0],58119:[0,.47534,0,0]},\"Main-Bold\":{33:[0,.69444,0,0],34:[0,.69444,0,0],35:[.19444,.69444,0,0],36:[.05556,.75,0,0],37:[.05556,.75,0,0],38:[0,.69444,0,0],39:[0,.69444,0,0],40:[.25,.75,0,0],41:[.25,.75,0,0],42:[0,.75,0,0],43:[.13333,.63333,0,0],44:[.19444,.15556,0,0],45:[0,.44444,0,0],46:[0,.15556,0,0],47:[.25,.75,0,0],48:[0,.64444,0,0],49:[0,.64444,0,0],50:[0,.64444,0,0],51:[0,.64444,0,0],52:[0,.64444,0,0],53:[0,.64444,0,0],54:[0,.64444,0,0],55:[0,.64444,0,0],56:[0,.64444,0,0],57:[0,.64444,0,0],58:[0,.44444,0,0],59:[.19444,.44444,0,0],60:[.08556,.58556,0,0],61:[-.10889,.39111,0,0],62:[.08556,.58556,0,0],63:[0,.69444,0,0],64:[0,.69444,0,0],65:[0,.68611,0,0],66:[0,.68611,0,0],67:[0,.68611,0,0],68:[0,.68611,0,0],69:[0,.68611,0,0],70:[0,.68611,0,0],71:[0,.68611,0,0],72:[0,.68611,0,0],73:[0,.68611,0,0],74:[0,.68611,0,0],75:[0,.68611,0,0],76:[0,.68611,0,0],77:[0,.68611,0,0],78:[0,.68611,0,0],79:[0,.68611,0,0],80:[0,.68611,0,0],81:[.19444,.68611,0,0],82:[0,.68611,0,0],83:[0,.68611,0,0],84:[0,.68611,0,0],85:[0,.68611,0,0],86:[0,.68611,.01597,0],87:[0,.68611,.01597,0],88:[0,.68611,0,0],89:[0,.68611,.02875,0],90:[0,.68611,0,0],91:[.25,.75,0,0],92:[.25,.75,0,0],93:[.25,.75,0,0],94:[0,.69444,0,0],95:[.31,.13444,.03194,0],96:[0,.69444,0,0],97:[0,.44444,0,0],98:[0,.69444,0,0],99:[0,.44444,0,0],100:[0,.69444,0,0],101:[0,.44444,0,0],102:[0,.69444,.10903,0],103:[.19444,.44444,.01597,0],104:[0,.69444,0,0],105:[0,.69444,0,0],106:[.19444,.69444,0,0],107:[0,.69444,0,0],108:[0,.69444,0,0],109:[0,.44444,0,0],110:[0,.44444,0,0],111:[0,.44444,0,0],112:[.19444,.44444,0,0],113:[.19444,.44444,0,0],114:[0,.44444,0,0],115:[0,.44444,0,0],116:[0,.63492,0,0],117:[0,.44444,0,0],118:[0,.44444,.01597,0],119:[0,.44444,.01597,0],120:[0,.44444,0,0],121:[.19444,.44444,.01597,0],122:[0,.44444,0,0],123:[.25,.75,0,0],124:[.25,.75,0,0],125:[.25,.75,0,0],126:[.35,.34444,0,0],168:[0,.69444,0,0],172:[0,.44444,0,0],175:[0,.59611,0,0],176:[0,.69444,0,0],177:[.13333,.63333,0,0],180:[0,.69444,0,0],215:[.13333,.63333,0,0],247:[.13333,.63333,0,0],305:[0,.44444,0,0],567:[.19444,.44444,0,0],710:[0,.69444,0,0],711:[0,.63194,0,0],713:[0,.59611,0,0],714:[0,.69444,0,0],715:[0,.69444,0,0],728:[0,.69444,0,0],729:[0,.69444,0,0],730:[0,.69444,0,0],732:[0,.69444,0,0],768:[0,.69444,0,0],769:[0,.69444,0,0],770:[0,.69444,0,0],771:[0,.69444,0,0],772:[0,.59611,0,0],774:[0,.69444,0,0],775:[0,.69444,0,0],776:[0,.69444,0,0],778:[0,.69444,0,0],779:[0,.69444,0,0],780:[0,.63194,0,0],824:[.19444,.69444,0,0],915:[0,.68611,0,0],916:[0,.68611,0,0],920:[0,.68611,0,0],923:[0,.68611,0,0],926:[0,.68611,0,0],928:[0,.68611,0,0],931:[0,.68611,0,0],933:[0,.68611,0,0],934:[0,.68611,0,0],936:[0,.68611,0,0],937:[0,.68611,0,0],8211:[0,.44444,.03194,0],8212:[0,.44444,.03194,0],8216:[0,.69444,0,0],8217:[0,.69444,0,0],8220:[0,.69444,0,0],8221:[0,.69444,0,0],8224:[.19444,.69444,0,0],8225:[.19444,.69444,0,0],8242:[0,.55556,0,0],8407:[0,.72444,.15486,0],8463:[0,.69444,0,0],8465:[0,.69444,0,0],8467:[0,.69444,0,0],8472:[.19444,.44444,0,0],8476:[0,.69444,0,0],8501:[0,.69444,0,0],8592:[-.10889,.39111,0,0],8593:[.19444,.69444,0,0],8594:[-.10889,.39111,0,0],8595:[.19444,.69444,0,0],8596:[-.10889,.39111,0,0],8597:[.25,.75,0,0],8598:[.19444,.69444,0,0],8599:[.19444,.69444,0,0],8600:[.19444,.69444,0,0],8601:[.19444,.69444,0,0],8636:[-.10889,.39111,0,0],8637:[-.10889,.39111,0,0],8640:[-.10889,.39111,0,0],8641:[-.10889,.39111,0,0],8656:[-.10889,.39111,0,0],8657:[.19444,.69444,0,0],8658:[-.10889,.39111,0,0],8659:[.19444,.69444,0,0],8660:[-.10889,.39111,0,0],8661:[.25,.75,0,0],8704:[0,.69444,0,0],8706:[0,.69444,.06389,0],8707:[0,.69444,0,0],8709:[.05556,.75,0,0],8711:[0,.68611,0,0],8712:[.08556,.58556,0,0],8715:[.08556,.58556,0,0],8722:[.13333,.63333,0,0],8723:[.13333,.63333,0,0],8725:[.25,.75,0,0],8726:[.25,.75,0,0],8727:[-.02778,.47222,0,0],8728:[-.02639,.47361,0,0],8729:[-.02639,.47361,0,0],8730:[.18,.82,0,0],8733:[0,.44444,0,0],8734:[0,.44444,0,0],8736:[0,.69224,0,0],8739:[.25,.75,0,0],8741:[.25,.75,0,0],8743:[0,.55556,0,0],8744:[0,.55556,0,0],8745:[0,.55556,0,0],8746:[0,.55556,0,0],8747:[.19444,.69444,.12778,0],8764:[-.10889,.39111,0,0],8768:[.19444,.69444,0,0],8771:[.00222,.50222,0,0],8776:[.02444,.52444,0,0],8781:[.00222,.50222,0,0],8801:[.00222,.50222,0,0],8804:[.19667,.69667,0,0],8805:[.19667,.69667,0,0],8810:[.08556,.58556,0,0],8811:[.08556,.58556,0,0],8826:[.08556,.58556,0,0],8827:[.08556,.58556,0,0],8834:[.08556,.58556,0,0],8835:[.08556,.58556,0,0],8838:[.19667,.69667,0,0],8839:[.19667,.69667,0,0],8846:[0,.55556,0,0],8849:[.19667,.69667,0,0],8850:[.19667,.69667,0,0],8851:[0,.55556,0,0],8852:[0,.55556,0,0],8853:[.13333,.63333,0,0],8854:[.13333,.63333,0,0],8855:[.13333,.63333,0,0],8856:[.13333,.63333,0,0],8857:[.13333,.63333,0,0],8866:[0,.69444,0,0],8867:[0,.69444,0,0],8868:[0,.69444,0,0],8869:[0,.69444,0,0],8900:[-.02639,.47361,0,0],8901:[-.02639,.47361,0,0],8902:[-.02778,.47222,0,0],8968:[.25,.75,0,0],8969:[.25,.75,0,0],8970:[.25,.75,0,0],8971:[.25,.75,0,0],8994:[-.13889,.36111,0,0],8995:[-.13889,.36111,0,0],9651:[.19444,.69444,0,0],9657:[-.02778,.47222,0,0],9661:[.19444,.69444,0,0],9667:[-.02778,.47222,0,0],9711:[.19444,.69444,0,0],9824:[.12963,.69444,0,0],9825:[.12963,.69444,0,0],9826:[.12963,.69444,0,0],9827:[.12963,.69444,0,0],9837:[0,.75,0,0],9838:[.19444,.69444,0,0],9839:[.19444,.69444,0,0],10216:[.25,.75,0,0],10217:[.25,.75,0,0],10815:[0,.68611,0,0],10927:[.19667,.69667,0,0],10928:[.19667,.69667,0,0]},\"Main-Italic\":{33:[0,.69444,.12417,0],34:[0,.69444,.06961,0],35:[.19444,.69444,.06616,0],37:[.05556,.75,.13639,0],38:[0,.69444,.09694,0],39:[0,.69444,.12417,0],40:[.25,.75,.16194,0],41:[.25,.75,.03694,0],42:[0,.75,.14917,0],43:[.05667,.56167,.03694,0],44:[.19444,.10556,0,0],45:[0,.43056,.02826,0],46:[0,.10556,0,0],47:[.25,.75,.16194,0],48:[0,.64444,.13556,0],49:[0,.64444,.13556,0],50:[0,.64444,.13556,0],51:[0,.64444,.13556,0],52:[.19444,.64444,.13556,0],53:[0,.64444,.13556,0],54:[0,.64444,.13556,0],55:[.19444,.64444,.13556,0],56:[0,.64444,.13556,0],57:[0,.64444,.13556,0],58:[0,.43056,.0582,0],59:[.19444,.43056,.0582,0],61:[-.13313,.36687,.06616,0],63:[0,.69444,.1225,0],64:[0,.69444,.09597,0],65:[0,.68333,0,0],66:[0,.68333,.10257,0],67:[0,.68333,.14528,0],68:[0,.68333,.09403,0],69:[0,.68333,.12028,0],70:[0,.68333,.13305,0],71:[0,.68333,.08722,0],72:[0,.68333,.16389,0],73:[0,.68333,.15806,0],74:[0,.68333,.14028,0],75:[0,.68333,.14528,0],76:[0,.68333,0,0],77:[0,.68333,.16389,0],78:[0,.68333,.16389,0],79:[0,.68333,.09403,0],80:[0,.68333,.10257,0],81:[.19444,.68333,.09403,0],82:[0,.68333,.03868,0],83:[0,.68333,.11972,0],84:[0,.68333,.13305,0],85:[0,.68333,.16389,0],86:[0,.68333,.18361,0],87:[0,.68333,.18361,0],88:[0,.68333,.15806,0],89:[0,.68333,.19383,0],90:[0,.68333,.14528,0],91:[.25,.75,.1875,0],93:[.25,.75,.10528,0],94:[0,.69444,.06646,0],95:[.31,.12056,.09208,0],97:[0,.43056,.07671,0],98:[0,.69444,.06312,0],99:[0,.43056,.05653,0],100:[0,.69444,.10333,0],101:[0,.43056,.07514,0],102:[.19444,.69444,.21194,0],103:[.19444,.43056,.08847,0],104:[0,.69444,.07671,0],105:[0,.65536,.1019,0],106:[.19444,.65536,.14467,0],107:[0,.69444,.10764,0],108:[0,.69444,.10333,0],109:[0,.43056,.07671,0],110:[0,.43056,.07671,0],111:[0,.43056,.06312,0],112:[.19444,.43056,.06312,0],113:[.19444,.43056,.08847,0],114:[0,.43056,.10764,0],115:[0,.43056,.08208,0],116:[0,.61508,.09486,0],117:[0,.43056,.07671,0],118:[0,.43056,.10764,0],119:[0,.43056,.10764,0],120:[0,.43056,.12042,0],121:[.19444,.43056,.08847,0],122:[0,.43056,.12292,0],126:[.35,.31786,.11585,0],163:[0,.69444,0,0],305:[0,.43056,0,.02778],567:[.19444,.43056,0,.08334],768:[0,.69444,0,0],769:[0,.69444,.09694,0],770:[0,.69444,.06646,0],771:[0,.66786,.11585,0],772:[0,.56167,.10333,0],774:[0,.69444,.10806,0],775:[0,.66786,.11752,0],776:[0,.66786,.10474,0],778:[0,.69444,0,0],779:[0,.69444,.1225,0],780:[0,.62847,.08295,0],915:[0,.68333,.13305,0],916:[0,.68333,0,0],920:[0,.68333,.09403,0],923:[0,.68333,0,0],926:[0,.68333,.15294,0],928:[0,.68333,.16389,0],931:[0,.68333,.12028,0],933:[0,.68333,.11111,0],934:[0,.68333,.05986,0],936:[0,.68333,.11111,0],937:[0,.68333,.10257,0],8211:[0,.43056,.09208,0],8212:[0,.43056,.09208,0],8216:[0,.69444,.12417,0],8217:[0,.69444,.12417,0],8220:[0,.69444,.1685,0],8221:[0,.69444,.06961,0],8463:[0,.68889,0,0]},\"Main-Regular\":{32:[0,0,0,0],33:[0,.69444,0,0],34:[0,.69444,0,0],35:[.19444,.69444,0,0],36:[.05556,.75,0,0],37:[.05556,.75,0,0],38:[0,.69444,0,0],39:[0,.69444,0,0],40:[.25,.75,0,0],41:[.25,.75,0,0],42:[0,.75,0,0],43:[.08333,.58333,0,0],44:[.19444,.10556,0,0],45:[0,.43056,0,0],46:[0,.10556,0,0],47:[.25,.75,0,0],48:[0,.64444,0,0],49:[0,.64444,0,0],50:[0,.64444,0,0],51:[0,.64444,0,0],52:[0,.64444,0,0],53:[0,.64444,0,0],54:[0,.64444,0,0],55:[0,.64444,0,0],56:[0,.64444,0,0],57:[0,.64444,0,0],58:[0,.43056,0,0],59:[.19444,.43056,0,0],60:[.0391,.5391,0,0],61:[-.13313,.36687,0,0],62:[.0391,.5391,0,0],63:[0,.69444,0,0],64:[0,.69444,0,0],65:[0,.68333,0,0],66:[0,.68333,0,0],67:[0,.68333,0,0],68:[0,.68333,0,0],69:[0,.68333,0,0],70:[0,.68333,0,0],71:[0,.68333,0,0],72:[0,.68333,0,0],73:[0,.68333,0,0],74:[0,.68333,0,0],75:[0,.68333,0,0],76:[0,.68333,0,0],77:[0,.68333,0,0],78:[0,.68333,0,0],79:[0,.68333,0,0],80:[0,.68333,0,0],81:[.19444,.68333,0,0],82:[0,.68333,0,0],83:[0,.68333,0,0],84:[0,.68333,0,0],85:[0,.68333,0,0],86:[0,.68333,.01389,0],87:[0,.68333,.01389,0],88:[0,.68333,0,0],89:[0,.68333,.025,0],90:[0,.68333,0,0],91:[.25,.75,0,0],92:[.25,.75,0,0],93:[.25,.75,0,0],94:[0,.69444,0,0],95:[.31,.12056,.02778,0],96:[0,.69444,0,0],97:[0,.43056,0,0],98:[0,.69444,0,0],99:[0,.43056,0,0],100:[0,.69444,0,0],101:[0,.43056,0,0],102:[0,.69444,.07778,0],103:[.19444,.43056,.01389,0],104:[0,.69444,0,0],105:[0,.66786,0,0],106:[.19444,.66786,0,0],107:[0,.69444,0,0],108:[0,.69444,0,0],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,0],112:[.19444,.43056,0,0],113:[.19444,.43056,0,0],114:[0,.43056,0,0],115:[0,.43056,0,0],116:[0,.61508,0,0],117:[0,.43056,0,0],118:[0,.43056,.01389,0],119:[0,.43056,.01389,0],120:[0,.43056,0,0],121:[.19444,.43056,.01389,0],122:[0,.43056,0,0],123:[.25,.75,0,0],124:[.25,.75,0,0],125:[.25,.75,0,0],126:[.35,.31786,0,0],160:[0,0,0,0],168:[0,.66786,0,0],172:[0,.43056,0,0],175:[0,.56778,0,0],176:[0,.69444,0,0],177:[.08333,.58333,0,0],180:[0,.69444,0,0],215:[.08333,.58333,0,0],247:[.08333,.58333,0,0],305:[0,.43056,0,0],567:[.19444,.43056,0,0],710:[0,.69444,0,0],711:[0,.62847,0,0],713:[0,.56778,0,0],714:[0,.69444,0,0],715:[0,.69444,0,0],728:[0,.69444,0,0],729:[0,.66786,0,0],730:[0,.69444,0,0],732:[0,.66786,0,0],768:[0,.69444,0,0],769:[0,.69444,0,0],770:[0,.69444,0,0],771:[0,.66786,0,0],772:[0,.56778,0,0],774:[0,.69444,0,0],775:[0,.66786,0,0],776:[0,.66786,0,0],778:[0,.69444,0,0],779:[0,.69444,0,0],780:[0,.62847,0,0],824:[.19444,.69444,0,0],915:[0,.68333,0,0],916:[0,.68333,0,0],920:[0,.68333,0,0],923:[0,.68333,0,0],926:[0,.68333,0,0],928:[0,.68333,0,0],931:[0,.68333,0,0],933:[0,.68333,0,0],934:[0,.68333,0,0],936:[0,.68333,0,0],937:[0,.68333,0,0],8211:[0,.43056,.02778,0],8212:[0,.43056,.02778,0],8216:[0,.69444,0,0],8217:[0,.69444,0,0],8220:[0,.69444,0,0],8221:[0,.69444,0,0],8224:[.19444,.69444,0,0],8225:[.19444,.69444,0,0],8230:[0,.12,0,0],8242:[0,.55556,0,0],8407:[0,.71444,.15382,0],8463:[0,.68889,0,0],8465:[0,.69444,0,0],8467:[0,.69444,0,.11111],8472:[.19444,.43056,0,.11111],8476:[0,.69444,0,0],8501:[0,.69444,0,0],8592:[-.13313,.36687,0,0],8593:[.19444,.69444,0,0],8594:[-.13313,.36687,0,0],8595:[.19444,.69444,0,0],8596:[-.13313,.36687,0,0],8597:[.25,.75,0,0],8598:[.19444,.69444,0,0],8599:[.19444,.69444,0,0],8600:[.19444,.69444,0,0],8601:[.19444,.69444,0,0],8614:[.011,.511,0,0],8617:[.011,.511,0,0],8618:[.011,.511,0,0],8636:[-.13313,.36687,0,0],8637:[-.13313,.36687,0,0],8640:[-.13313,.36687,0,0],8641:[-.13313,.36687,0,0],8652:[.011,.671,0,0],8656:[-.13313,.36687,0,0],8657:[.19444,.69444,0,0],8658:[-.13313,.36687,0,0],8659:[.19444,.69444,0,0],8660:[-.13313,.36687,0,0],8661:[.25,.75,0,0],8704:[0,.69444,0,0],8706:[0,.69444,.05556,.08334],8707:[0,.69444,0,0],8709:[.05556,.75,0,0],8711:[0,.68333,0,0],8712:[.0391,.5391,0,0],8715:[.0391,.5391,0,0],8722:[.08333,.58333,0,0],8723:[.08333,.58333,0,0],8725:[.25,.75,0,0],8726:[.25,.75,0,0],8727:[-.03472,.46528,0,0],8728:[-.05555,.44445,0,0],8729:[-.05555,.44445,0,0],8730:[.2,.8,0,0],8733:[0,.43056,0,0],8734:[0,.43056,0,0],8736:[0,.69224,0,0],8739:[.25,.75,0,0],8741:[.25,.75,0,0],8743:[0,.55556,0,0],8744:[0,.55556,0,0],8745:[0,.55556,0,0],8746:[0,.55556,0,0],8747:[.19444,.69444,.11111,0],8764:[-.13313,.36687,0,0],8768:[.19444,.69444,0,0],8771:[-.03625,.46375,0,0],8773:[-.022,.589,0,0],8776:[-.01688,.48312,0,0],8781:[-.03625,.46375,0,0],8784:[-.133,.67,0,0],8800:[.215,.716,0,0],8801:[-.03625,.46375,0,0],8804:[.13597,.63597,0,0],8805:[.13597,.63597,0,0],8810:[.0391,.5391,0,0],8811:[.0391,.5391,0,0],8826:[.0391,.5391,0,0],8827:[.0391,.5391,0,0],8834:[.0391,.5391,0,0],8835:[.0391,.5391,0,0],8838:[.13597,.63597,0,0],8839:[.13597,.63597,0,0],8846:[0,.55556,0,0],8849:[.13597,.63597,0,0],8850:[.13597,.63597,0,0],8851:[0,.55556,0,0],8852:[0,.55556,0,0],8853:[.08333,.58333,0,0],8854:[.08333,.58333,0,0],8855:[.08333,.58333,0,0],8856:[.08333,.58333,0,0],8857:[.08333,.58333,0,0],8866:[0,.69444,0,0],8867:[0,.69444,0,0],8868:[0,.69444,0,0],8869:[0,.69444,0,0],8872:[.249,.75,0,0],8900:[-.05555,.44445,0,0],8901:[-.05555,.44445,0,0],8902:[-.03472,.46528,0,0],8904:[.005,.505,0,0],8942:[.03,.9,0,0],8943:[-.19,.31,0,0],8945:[-.1,.82,0,0],8968:[.25,.75,0,0],8969:[.25,.75,0,0],8970:[.25,.75,0,0],8971:[.25,.75,0,0],8994:[-.14236,.35764,0,0],8995:[-.14236,.35764,0,0],9136:[.244,.744,0,0],9137:[.244,.744,0,0],9651:[.19444,.69444,0,0],9657:[-.03472,.46528,0,0],9661:[.19444,.69444,0,0],9667:[-.03472,.46528,0,0],9711:[.19444,.69444,0,0],9824:[.12963,.69444,0,0],9825:[.12963,.69444,0,0],9826:[.12963,.69444,0,0],9827:[.12963,.69444,0,0],9837:[0,.75,0,0],9838:[.19444,.69444,0,0],9839:[.19444,.69444,0,0],10216:[.25,.75,0,0],10217:[.25,.75,0,0],10222:[.244,.744,0,0],10223:[.244,.744,0,0],10229:[.011,.511,0,0],10230:[.011,.511,0,0],10231:[.011,.511,0,0],10232:[.024,.525,0,0],10233:[.024,.525,0,0],10234:[.024,.525,0,0],10236:[.011,.511,0,0],10815:[0,.68333,0,0],10927:[.13597,.63597,0,0],10928:[.13597,.63597,0,0]},\"Math-BoldItalic\":{47:[.19444,.69444,0,0],65:[0,.68611,0,0],66:[0,.68611,.04835,0],67:[0,.68611,.06979,0],68:[0,.68611,.03194,0],69:[0,.68611,.05451,0],70:[0,.68611,.15972,0],71:[0,.68611,0,0],72:[0,.68611,.08229,0],73:[0,.68611,.07778,0],74:[0,.68611,.10069,0],75:[0,.68611,.06979,0],76:[0,.68611,0,0],77:[0,.68611,.11424,0],78:[0,.68611,.11424,0],79:[0,.68611,.03194,0],80:[0,.68611,.15972,0],81:[.19444,.68611,0,0],82:[0,.68611,.00421,0],83:[0,.68611,.05382,0],84:[0,.68611,.15972,0],85:[0,.68611,.11424,0],86:[0,.68611,.25555,0],87:[0,.68611,.15972,0],88:[0,.68611,.07778,0],89:[0,.68611,.25555,0],90:[0,.68611,.06979,0],97:[0,.44444,0,0],98:[0,.69444,0,0],99:[0,.44444,0,0],100:[0,.69444,0,0],101:[0,.44444,0,0],102:[.19444,.69444,.11042,0],103:[.19444,.44444,.03704,0],104:[0,.69444,0,0],105:[0,.69326,0,0],106:[.19444,.69326,.0622,0],107:[0,.69444,.01852,0],108:[0,.69444,.0088,0],109:[0,.44444,0,0],110:[0,.44444,0,0],111:[0,.44444,0,0],112:[.19444,.44444,0,0],113:[.19444,.44444,.03704,0],114:[0,.44444,.03194,0],115:[0,.44444,0,0],116:[0,.63492,0,0],117:[0,.44444,0,0],118:[0,.44444,.03704,0],119:[0,.44444,.02778,0],120:[0,.44444,0,0],121:[.19444,.44444,.03704,0],122:[0,.44444,.04213,0],915:[0,.68611,.15972,0],916:[0,.68611,0,0],920:[0,.68611,.03194,0],923:[0,.68611,0,0],926:[0,.68611,.07458,0],928:[0,.68611,.08229,0],931:[0,.68611,.05451,0],933:[0,.68611,.15972,0],934:[0,.68611,0,0],936:[0,.68611,.11653,0],937:[0,.68611,.04835,0],945:[0,.44444,0,0],946:[.19444,.69444,.03403,0],947:[.19444,.44444,.06389,0],948:[0,.69444,.03819,0],949:[0,.44444,0,0],950:[.19444,.69444,.06215,0],951:[.19444,.44444,.03704,0],952:[0,.69444,.03194,0],953:[0,.44444,0,0],954:[0,.44444,0,0],955:[0,.69444,0,0],956:[.19444,.44444,0,0],957:[0,.44444,.06898,0],958:[.19444,.69444,.03021,0],959:[0,.44444,0,0],960:[0,.44444,.03704,0],961:[.19444,.44444,0,0],962:[.09722,.44444,.07917,0],963:[0,.44444,.03704,0],964:[0,.44444,.13472,0],965:[0,.44444,.03704,0],966:[.19444,.44444,0,0],967:[.19444,.44444,0,0],968:[.19444,.69444,.03704,0],969:[0,.44444,.03704,0],977:[0,.69444,0,0],981:[.19444,.69444,0,0],982:[0,.44444,.03194,0],1009:[.19444,.44444,0,0],1013:[0,.44444,0,0]},\"Math-Italic\":{47:[.19444,.69444,0,0],65:[0,.68333,0,.13889],66:[0,.68333,.05017,.08334],67:[0,.68333,.07153,.08334],68:[0,.68333,.02778,.05556],69:[0,.68333,.05764,.08334],70:[0,.68333,.13889,.08334],71:[0,.68333,0,.08334],72:[0,.68333,.08125,.05556],73:[0,.68333,.07847,.11111],74:[0,.68333,.09618,.16667],75:[0,.68333,.07153,.05556],76:[0,.68333,0,.02778],77:[0,.68333,.10903,.08334],78:[0,.68333,.10903,.08334],79:[0,.68333,.02778,.08334],80:[0,.68333,.13889,.08334],81:[.19444,.68333,0,.08334],82:[0,.68333,.00773,.08334],83:[0,.68333,.05764,.08334],84:[0,.68333,.13889,.08334],85:[0,.68333,.10903,.02778],86:[0,.68333,.22222,0],87:[0,.68333,.13889,0],88:[0,.68333,.07847,.08334],89:[0,.68333,.22222,0],90:[0,.68333,.07153,.08334],97:[0,.43056,0,0],98:[0,.69444,0,0],99:[0,.43056,0,.05556],100:[0,.69444,0,.16667],101:[0,.43056,0,.05556],102:[.19444,.69444,.10764,.16667],103:[.19444,.43056,.03588,.02778],104:[0,.69444,0,0],105:[0,.65952,0,0],106:[.19444,.65952,.05724,0],107:[0,.69444,.03148,0],108:[0,.69444,.01968,.08334],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,.05556],112:[.19444,.43056,0,.08334],113:[.19444,.43056,.03588,.08334],114:[0,.43056,.02778,.05556],115:[0,.43056,0,.05556],116:[0,.61508,0,.08334],117:[0,.43056,0,.02778],118:[0,.43056,.03588,.02778],119:[0,.43056,.02691,.08334],120:[0,.43056,0,.02778],121:[.19444,.43056,.03588,.05556],122:[0,.43056,.04398,.05556],915:[0,.68333,.13889,.08334],916:[0,.68333,0,.16667],920:[0,.68333,.02778,.08334],923:[0,.68333,0,.16667],926:[0,.68333,.07569,.08334],928:[0,.68333,.08125,.05556],931:[0,.68333,.05764,.08334],933:[0,.68333,.13889,.05556],934:[0,.68333,0,.08334],936:[0,.68333,.11,.05556],937:[0,.68333,.05017,.08334],945:[0,.43056,.0037,.02778],946:[.19444,.69444,.05278,.08334],947:[.19444,.43056,.05556,0],948:[0,.69444,.03785,.05556],949:[0,.43056,0,.08334],950:[.19444,.69444,.07378,.08334],951:[.19444,.43056,.03588,.05556],952:[0,.69444,.02778,.08334],953:[0,.43056,0,.05556],954:[0,.43056,0,0],955:[0,.69444,0,0],956:[.19444,.43056,0,.02778],957:[0,.43056,.06366,.02778],958:[.19444,.69444,.04601,.11111],959:[0,.43056,0,.05556],960:[0,.43056,.03588,0],961:[.19444,.43056,0,.08334],962:[.09722,.43056,.07986,.08334],963:[0,.43056,.03588,0],964:[0,.43056,.1132,.02778],965:[0,.43056,.03588,.02778],966:[.19444,.43056,0,.08334],967:[.19444,.43056,0,.05556],968:[.19444,.69444,.03588,.11111],969:[0,.43056,.03588,0],977:[0,.69444,0,.08334],981:[.19444,.69444,0,.08334],982:[0,.43056,.02778,0],1009:[.19444,.43056,0,.08334],1013:[0,.43056,0,.05556]},\"Math-Regular\":{65:[0,.68333,0,.13889],66:[0,.68333,.05017,.08334],67:[0,.68333,.07153,.08334],68:[0,.68333,.02778,.05556],69:[0,.68333,.05764,.08334],70:[0,.68333,.13889,.08334],71:[0,.68333,0,.08334],72:[0,.68333,.08125,.05556],73:[0,.68333,.07847,.11111],74:[0,.68333,.09618,.16667],75:[0,.68333,.07153,.05556],76:[0,.68333,0,.02778],77:[0,.68333,.10903,.08334],78:[0,.68333,.10903,.08334],79:[0,.68333,.02778,.08334],80:[0,.68333,.13889,.08334],81:[.19444,.68333,0,.08334],82:[0,.68333,.00773,.08334],83:[0,.68333,.05764,.08334],84:[0,.68333,.13889,.08334],85:[0,.68333,.10903,.02778],86:[0,.68333,.22222,0],87:[0,.68333,.13889,0],88:[0,.68333,.07847,.08334],89:[0,.68333,.22222,0],90:[0,.68333,.07153,.08334],97:[0,.43056,0,0],98:[0,.69444,0,0],99:[0,.43056,0,.05556],100:[0,.69444,0,.16667],101:[0,.43056,0,.05556],102:[.19444,.69444,.10764,.16667],103:[.19444,.43056,.03588,.02778],104:[0,.69444,0,0],105:[0,.65952,0,0],106:[.19444,.65952,.05724,0],107:[0,.69444,.03148,0],108:[0,.69444,.01968,.08334],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,.05556],112:[.19444,.43056,0,.08334],113:[.19444,.43056,.03588,.08334],114:[0,.43056,.02778,.05556],115:[0,.43056,0,.05556],116:[0,.61508,0,.08334],117:[0,.43056,0,.02778],118:[0,.43056,.03588,.02778],119:[0,.43056,.02691,.08334],120:[0,.43056,0,.02778],121:[.19444,.43056,.03588,.05556],122:[0,.43056,.04398,.05556],915:[0,.68333,.13889,.08334],916:[0,.68333,0,.16667],920:[0,.68333,.02778,.08334],923:[0,.68333,0,.16667],926:[0,.68333,.07569,.08334],928:[0,.68333,.08125,.05556],931:[0,.68333,.05764,.08334],933:[0,.68333,.13889,.05556],934:[0,.68333,0,.08334],936:[0,.68333,.11,.05556],937:[0,.68333,.05017,.08334],945:[0,.43056,.0037,.02778],946:[.19444,.69444,.05278,.08334],947:[.19444,.43056,.05556,0],948:[0,.69444,.03785,.05556],949:[0,.43056,0,.08334],950:[.19444,.69444,.07378,.08334],951:[.19444,.43056,.03588,.05556],952:[0,.69444,.02778,.08334],953:[0,.43056,0,.05556],954:[0,.43056,0,0],955:[0,.69444,0,0],956:[.19444,.43056,0,.02778],957:[0,.43056,.06366,.02778],958:[.19444,.69444,.04601,.11111],959:[0,.43056,0,.05556],960:[0,.43056,.03588,0],961:[.19444,.43056,0,.08334],962:[.09722,.43056,.07986,.08334],963:[0,.43056,.03588,0],964:[0,.43056,.1132,.02778],965:[0,.43056,.03588,.02778],966:[.19444,.43056,0,.08334],967:[.19444,.43056,0,.05556],968:[.19444,.69444,.03588,.11111],969:[0,.43056,.03588,0],977:[0,.69444,0,.08334],981:[.19444,.69444,0,.08334],982:[0,.43056,.02778,0],1009:[.19444,.43056,0,.08334],1013:[0,.43056,0,.05556]},\"SansSerif-Regular\":{33:[0,.69444,0,0],34:[0,.69444,0,0],35:[.19444,.69444,0,0],36:[.05556,.75,0,0],37:[.05556,.75,0,0],38:[0,.69444,0,0],39:[0,.69444,0,0],40:[.25,.75,0,0],41:[.25,.75,0,0],42:[0,.75,0,0],43:[.08333,.58333,0,0],44:[.125,.08333,0,0],45:[0,.44444,0,0],46:[0,.08333,0,0],47:[.25,.75,0,0],48:[0,.65556,0,0],49:[0,.65556,0,0],50:[0,.65556,0,0],51:[0,.65556,0,0],52:[0,.65556,0,0],53:[0,.65556,0,0],54:[0,.65556,0,0],55:[0,.65556,0,0],56:[0,.65556,0,0],57:[0,.65556,0,0],58:[0,.44444,0,0],59:[.125,.44444,0,0],61:[-.13,.37,0,0],63:[0,.69444,0,0],64:[0,.69444,0,0],65:[0,.69444,0,0],66:[0,.69444,0,0],67:[0,.69444,0,0],68:[0,.69444,0,0],69:[0,.69444,0,0],70:[0,.69444,0,0],71:[0,.69444,0,0],72:[0,.69444,0,0],73:[0,.69444,0,0],74:[0,.69444,0,0],75:[0,.69444,0,0],76:[0,.69444,0,0],77:[0,.69444,0,0],78:[0,.69444,0,0],79:[0,.69444,0,0],80:[0,.69444,0,0],81:[.125,.69444,0,0],82:[0,.69444,0,0],83:[0,.69444,0,0],84:[0,.69444,0,0],85:[0,.69444,0,0],86:[0,.69444,.01389,0],87:[0,.69444,.01389,0],88:[0,.69444,0,0],89:[0,.69444,.025,0],90:[0,.69444,0,0],91:[.25,.75,0,0],93:[.25,.75,0,0],94:[0,.69444,0,0],95:[.35,.09444,.02778,0],97:[0,.44444,0,0],98:[0,.69444,0,0],99:[0,.44444,0,0],100:[0,.69444,0,0],101:[0,.44444,0,0],102:[0,.69444,.06944,0],103:[.19444,.44444,.01389,0],104:[0,.69444,0,0],105:[0,.67937,0,0],106:[.19444,.67937,0,0],107:[0,.69444,0,0],108:[0,.69444,0,0],109:[0,.44444,0,0],110:[0,.44444,0,0],111:[0,.44444,0,0],112:[.19444,.44444,0,0],113:[.19444,.44444,0,0],114:[0,.44444,.01389,0],115:[0,.44444,0,0],116:[0,.57143,0,0],117:[0,.44444,0,0],118:[0,.44444,.01389,0],119:[0,.44444,.01389,0],120:[0,.44444,0,0],121:[.19444,.44444,.01389,0],122:[0,.44444,0,0],126:[.35,.32659,0,0],305:[0,.44444,0,0],567:[.19444,.44444,0,0],768:[0,.69444,0,0],769:[0,.69444,0,0],770:[0,.69444,0,0],771:[0,.67659,0,0],772:[0,.60889,0,0],774:[0,.69444,0,0],775:[0,.67937,0,0],776:[0,.67937,0,0],778:[0,.69444,0,0],779:[0,.69444,0,0],780:[0,.63194,0,0],915:[0,.69444,0,0],916:[0,.69444,0,0],920:[0,.69444,0,0],923:[0,.69444,0,0],926:[0,.69444,0,0],928:[0,.69444,0,0],931:[0,.69444,0,0],933:[0,.69444,0,0],934:[0,.69444,0,0],936:[0,.69444,0,0],937:[0,.69444,0,0],8211:[0,.44444,.02778,0],8212:[0,.44444,.02778,0],8216:[0,.69444,0,0],8217:[0,.69444,0,0],8220:[0,.69444,0,0],8221:[0,.69444,0,0]},\"Script-Regular\":{65:[0,.7,.22925,0],66:[0,.7,.04087,0],67:[0,.7,.1689,0],68:[0,.7,.09371,0],69:[0,.7,.18583,0],70:[0,.7,.13634,0],71:[0,.7,.17322,0],72:[0,.7,.29694,0],73:[0,.7,.19189,0],74:[.27778,.7,.19189,0],75:[0,.7,.31259,0],76:[0,.7,.19189,0],77:[0,.7,.15981,0],78:[0,.7,.3525,0],79:[0,.7,.08078,0],80:[0,.7,.08078,0],81:[0,.7,.03305,0],82:[0,.7,.06259,0],83:[0,.7,.19189,0],84:[0,.7,.29087,0],85:[0,.7,.25815,0],86:[0,.7,.27523,0],87:[0,.7,.27523,0],88:[0,.7,.26006,0],89:[0,.7,.2939,0],90:[0,.7,.24037,0]},\"Size1-Regular\":{40:[.35001,.85,0,0],41:[.35001,.85,0,0],47:[.35001,.85,0,0],91:[.35001,.85,0,0],92:[.35001,.85,0,0],93:[.35001,.85,0,0],123:[.35001,.85,0,0],125:[.35001,.85,0,0],710:[0,.72222,0,0],732:[0,.72222,0,0],770:[0,.72222,0,0],771:[0,.72222,0,0],8214:[-99e-5,.601,0,0],8593:[1e-5,.6,0,0],8595:[1e-5,.6,0,0],8657:[1e-5,.6,0,0],8659:[1e-5,.6,0,0],8719:[.25001,.75,0,0],8720:[.25001,.75,0,0],8721:[.25001,.75,0,0],8730:[.35001,.85,0,0],8739:[-.00599,.606,0,0],8741:[-.00599,.606,0,0],8747:[.30612,.805,.19445,0],8748:[.306,.805,.19445,0],8749:[.306,.805,.19445,0],8750:[.30612,.805,.19445,0],8896:[.25001,.75,0,0],8897:[.25001,.75,0,0],8898:[.25001,.75,0,0],8899:[.25001,.75,0,0],8968:[.35001,.85,0,0],8969:[.35001,.85,0,0],8970:[.35001,.85,0,0],8971:[.35001,.85,0,0],9168:[-99e-5,.601,0,0],10216:[.35001,.85,0,0],10217:[.35001,.85,0,0],10752:[.25001,.75,0,0],10753:[.25001,.75,0,0],10754:[.25001,.75,0,0],10756:[.25001,.75,0,0],10758:[.25001,.75,0,0]},\"Size2-Regular\":{40:[.65002,1.15,0,0],41:[.65002,1.15,0,0],47:[.65002,1.15,0,0],91:[.65002,1.15,0,0],92:[.65002,1.15,0,0],93:[.65002,1.15,0,0],123:[.65002,1.15,0,0],125:[.65002,1.15,0,0],710:[0,.75,0,0],732:[0,.75,0,0],770:[0,.75,0,0],771:[0,.75,0,0],8719:[.55001,1.05,0,0],8720:[.55001,1.05,0,0],8721:[.55001,1.05,0,0],8730:[.65002,1.15,0,0],8747:[.86225,1.36,.44445,0],8748:[.862,1.36,.44445,0],8749:[.862,1.36,.44445,0],8750:[.86225,1.36,.44445,0],8896:[.55001,1.05,0,0],8897:[.55001,1.05,0,0],8898:[.55001,1.05,0,0],8899:[.55001,1.05,0,0],8968:[.65002,1.15,0,0],8969:[.65002,1.15,0,0],8970:[.65002,1.15,0,0],8971:[.65002,1.15,0,0],10216:[.65002,1.15,0,0],10217:[.65002,1.15,0,0],10752:[.55001,1.05,0,0],10753:[.55001,1.05,0,0],10754:[.55001,1.05,0,0],\n10756:[.55001,1.05,0,0],10758:[.55001,1.05,0,0]},\"Size3-Regular\":{40:[.95003,1.45,0,0],41:[.95003,1.45,0,0],47:[.95003,1.45,0,0],91:[.95003,1.45,0,0],92:[.95003,1.45,0,0],93:[.95003,1.45,0,0],123:[.95003,1.45,0,0],125:[.95003,1.45,0,0],710:[0,.75,0,0],732:[0,.75,0,0],770:[0,.75,0,0],771:[0,.75,0,0],8730:[.95003,1.45,0,0],8968:[.95003,1.45,0,0],8969:[.95003,1.45,0,0],8970:[.95003,1.45,0,0],8971:[.95003,1.45,0,0],10216:[.95003,1.45,0,0],10217:[.95003,1.45,0,0]},\"Size4-Regular\":{40:[1.25003,1.75,0,0],41:[1.25003,1.75,0,0],47:[1.25003,1.75,0,0],91:[1.25003,1.75,0,0],92:[1.25003,1.75,0,0],93:[1.25003,1.75,0,0],123:[1.25003,1.75,0,0],125:[1.25003,1.75,0,0],710:[0,.825,0,0],732:[0,.825,0,0],770:[0,.825,0,0],771:[0,.825,0,0],8730:[1.25003,1.75,0,0],8968:[1.25003,1.75,0,0],8969:[1.25003,1.75,0,0],8970:[1.25003,1.75,0,0],8971:[1.25003,1.75,0,0],9115:[.64502,1.155,0,0],9116:[1e-5,.6,0,0],9117:[.64502,1.155,0,0],9118:[.64502,1.155,0,0],9119:[1e-5,.6,0,0],9120:[.64502,1.155,0,0],9121:[.64502,1.155,0,0],9122:[-99e-5,.601,0,0],9123:[.64502,1.155,0,0],9124:[.64502,1.155,0,0],9125:[-99e-5,.601,0,0],9126:[.64502,1.155,0,0],9127:[1e-5,.9,0,0],9128:[.65002,1.15,0,0],9129:[.90001,0,0,0],9130:[0,.3,0,0],9131:[1e-5,.9,0,0],9132:[.65002,1.15,0,0],9133:[.90001,0,0,0],9143:[.88502,.915,0,0],10216:[1.25003,1.75,0,0],10217:[1.25003,1.75,0,0],57344:[-.00499,.605,0,0],57345:[-.00499,.605,0,0],57680:[0,.12,0,0],57681:[0,.12,0,0],57682:[0,.12,0,0],57683:[0,.12,0,0]},\"Typewriter-Regular\":{33:[0,.61111,0,0],34:[0,.61111,0,0],35:[0,.61111,0,0],36:[.08333,.69444,0,0],37:[.08333,.69444,0,0],38:[0,.61111,0,0],39:[0,.61111,0,0],40:[.08333,.69444,0,0],41:[.08333,.69444,0,0],42:[0,.52083,0,0],43:[-.08056,.53055,0,0],44:[.13889,.125,0,0],45:[-.08056,.53055,0,0],46:[0,.125,0,0],47:[.08333,.69444,0,0],48:[0,.61111,0,0],49:[0,.61111,0,0],50:[0,.61111,0,0],51:[0,.61111,0,0],52:[0,.61111,0,0],53:[0,.61111,0,0],54:[0,.61111,0,0],55:[0,.61111,0,0],56:[0,.61111,0,0],57:[0,.61111,0,0],58:[0,.43056,0,0],59:[.13889,.43056,0,0],60:[-.05556,.55556,0,0],61:[-.19549,.41562,0,0],62:[-.05556,.55556,0,0],63:[0,.61111,0,0],64:[0,.61111,0,0],65:[0,.61111,0,0],66:[0,.61111,0,0],67:[0,.61111,0,0],68:[0,.61111,0,0],69:[0,.61111,0,0],70:[0,.61111,0,0],71:[0,.61111,0,0],72:[0,.61111,0,0],73:[0,.61111,0,0],74:[0,.61111,0,0],75:[0,.61111,0,0],76:[0,.61111,0,0],77:[0,.61111,0,0],78:[0,.61111,0,0],79:[0,.61111,0,0],80:[0,.61111,0,0],81:[.13889,.61111,0,0],82:[0,.61111,0,0],83:[0,.61111,0,0],84:[0,.61111,0,0],85:[0,.61111,0,0],86:[0,.61111,0,0],87:[0,.61111,0,0],88:[0,.61111,0,0],89:[0,.61111,0,0],90:[0,.61111,0,0],91:[.08333,.69444,0,0],92:[.08333,.69444,0,0],93:[.08333,.69444,0,0],94:[0,.61111,0,0],95:[.09514,0,0,0],96:[0,.61111,0,0],97:[0,.43056,0,0],98:[0,.61111,0,0],99:[0,.43056,0,0],100:[0,.61111,0,0],101:[0,.43056,0,0],102:[0,.61111,0,0],103:[.22222,.43056,0,0],104:[0,.61111,0,0],105:[0,.61111,0,0],106:[.22222,.61111,0,0],107:[0,.61111,0,0],108:[0,.61111,0,0],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,0],112:[.22222,.43056,0,0],113:[.22222,.43056,0,0],114:[0,.43056,0,0],115:[0,.43056,0,0],116:[0,.55358,0,0],117:[0,.43056,0,0],118:[0,.43056,0,0],119:[0,.43056,0,0],120:[0,.43056,0,0],121:[.22222,.43056,0,0],122:[0,.43056,0,0],123:[.08333,.69444,0,0],124:[.08333,.69444,0,0],125:[.08333,.69444,0,0],126:[0,.61111,0,0],127:[0,.61111,0,0],305:[0,.43056,0,0],567:[.22222,.43056,0,0],768:[0,.61111,0,0],769:[0,.61111,0,0],770:[0,.61111,0,0],771:[0,.61111,0,0],772:[0,.56555,0,0],774:[0,.61111,0,0],776:[0,.61111,0,0],778:[0,.61111,0,0],780:[0,.56597,0,0],915:[0,.61111,0,0],916:[0,.61111,0,0],920:[0,.61111,0,0],923:[0,.61111,0,0],926:[0,.61111,0,0],928:[0,.61111,0,0],931:[0,.61111,0,0],933:[0,.61111,0,0],934:[0,.61111,0,0],936:[0,.61111,0,0],937:[0,.61111,0,0],2018:[0,.61111,0,0],2019:[0,.61111,0,0],8242:[0,.61111,0,0]}}},{}],19:[function(e,t,r){var a=e(\"./utils\");var i=e(\"./ParseError\");var n=e(\"./parseData\");var s=n.ParseNode;function l(e,r,a){if(typeof e===\"string\"){e=[e]}if(typeof r===\"number\"){r={numArgs:r}}var i={numArgs:r.numArgs,argTypes:r.argTypes,greediness:r.greediness===undefined?1:r.greediness,allowedInText:!!r.allowedInText,numOptionalArgs:r.numOptionalArgs||0,infix:!!r.infix,handler:a};for(var n=0;n<e.length;++n){t.exports[e[n]]=i}}var o=function(e){if(e.type===\"ordgroup\"){return e.value}else{return[e]}};l(\"\\\\sqrt\",{numArgs:1,numOptionalArgs:1},function(e,t){var r=t[0];var a=t[1];return{type:\"sqrt\",body:a,index:r}});var u={\"\\\\text\":undefined,\"\\\\textrm\":\"mathrm\",\"\\\\textsf\":\"mathsf\",\"\\\\texttt\":\"mathtt\",\"\\\\textnormal\":\"mathrm\",\"\\\\textbf\":\"mathbf\",\"\\\\textit\":\"textit\"};l([\"\\\\text\",\"\\\\textrm\",\"\\\\textsf\",\"\\\\texttt\",\"\\\\textnormal\",\"\\\\textbf\",\"\\\\textit\"],{numArgs:1,argTypes:[\"text\"],greediness:2,allowedInText:true},function(e,t){var r=t[0];return{type:\"text\",body:o(r),style:u[e.funcName]}});l(\"\\\\color\",{numArgs:2,allowedInText:true,greediness:3,argTypes:[\"color\",\"original\"]},function(e,t){var r=t[0];var a=t[1];return{type:\"color\",color:r.value,value:o(a)}});l(\"\\\\overline\",{numArgs:1},function(e,t){var r=t[0];return{type:\"overline\",body:r}});l(\"\\\\underline\",{numArgs:1},function(e,t){var r=t[0];return{type:\"underline\",body:r}});l(\"\\\\rule\",{numArgs:2,numOptionalArgs:1,argTypes:[\"size\",\"size\",\"size\"]},function(e,t){var r=t[0];var a=t[1];var i=t[2];return{type:\"rule\",shift:r&&r.value,width:a.value,height:i.value}});l([\"\\\\kern\",\"\\\\mkern\"],{numArgs:1,argTypes:[\"size\"]},function(e,t){return{type:\"kern\",dimension:t[0].value}});l(\"\\\\KaTeX\",{numArgs:0},function(e){return{type:\"katex\"}});l(\"\\\\phantom\",{numArgs:1},function(e,t){var r=t[0];return{type:\"phantom\",value:o(r)}});l([\"\\\\mathord\",\"\\\\mathbin\",\"\\\\mathrel\",\"\\\\mathopen\",\"\\\\mathclose\",\"\\\\mathpunct\",\"\\\\mathinner\"],{numArgs:1},function(e,t){var r=t[0];return{type:\"mclass\",mclass:\"m\"+e.funcName.substr(5),value:o(r)}});l(\"\\\\stackrel\",{numArgs:2},function(e,t){var r=t[0];var a=t[1];var i=new s(\"op\",{type:\"op\",limits:true,alwaysHandleSupSub:true,symbol:false,value:o(a)},a.mode);var n=new s(\"supsub\",{base:i,sup:r,sub:null},r.mode);return{type:\"mclass\",mclass:\"mrel\",value:[n]}});l(\"\\\\bmod\",{numArgs:0},function(e,t){return{type:\"mod\",modType:\"bmod\",value:null}});l([\"\\\\pod\",\"\\\\pmod\",\"\\\\mod\"],{numArgs:1},function(e,t){var r=t[0];return{type:\"mod\",modType:e.funcName.substr(1),value:o(r)}});var p={\"\\\\bigl\":{mclass:\"mopen\",size:1},\"\\\\Bigl\":{mclass:\"mopen\",size:2},\"\\\\biggl\":{mclass:\"mopen\",size:3},\"\\\\Biggl\":{mclass:\"mopen\",size:4},\"\\\\bigr\":{mclass:\"mclose\",size:1},\"\\\\Bigr\":{mclass:\"mclose\",size:2},\"\\\\biggr\":{mclass:\"mclose\",size:3},\"\\\\Biggr\":{mclass:\"mclose\",size:4},\"\\\\bigm\":{mclass:\"mrel\",size:1},\"\\\\Bigm\":{mclass:\"mrel\",size:2},\"\\\\biggm\":{mclass:\"mrel\",size:3},\"\\\\Biggm\":{mclass:\"mrel\",size:4},\"\\\\big\":{mclass:\"mord\",size:1},\"\\\\Big\":{mclass:\"mord\",size:2},\"\\\\bigg\":{mclass:\"mord\",size:3},\"\\\\Bigg\":{mclass:\"mord\",size:4}};var h=[\"(\",\")\",\"[\",\"\\\\lbrack\",\"]\",\"\\\\rbrack\",\"\\\\{\",\"\\\\lbrace\",\"\\\\}\",\"\\\\rbrace\",\"\\\\lfloor\",\"\\\\rfloor\",\"\\\\lceil\",\"\\\\rceil\",\"<\",\">\",\"\\\\langle\",\"\\\\rangle\",\"\\\\lt\",\"\\\\gt\",\"\\\\lvert\",\"\\\\rvert\",\"\\\\lVert\",\"\\\\rVert\",\"\\\\lgroup\",\"\\\\rgroup\",\"\\\\lmoustache\",\"\\\\rmoustache\",\"/\",\"\\\\backslash\",\"|\",\"\\\\vert\",\"\\\\|\",\"\\\\Vert\",\"\\\\uparrow\",\"\\\\Uparrow\",\"\\\\downarrow\",\"\\\\Downarrow\",\"\\\\updownarrow\",\"\\\\Updownarrow\",\".\"];var c={\"\\\\Bbb\":\"\\\\mathbb\",\"\\\\bold\":\"\\\\mathbf\",\"\\\\frak\":\"\\\\mathfrak\"};l([\"\\\\blue\",\"\\\\orange\",\"\\\\pink\",\"\\\\red\",\"\\\\green\",\"\\\\gray\",\"\\\\purple\",\"\\\\blueA\",\"\\\\blueB\",\"\\\\blueC\",\"\\\\blueD\",\"\\\\blueE\",\"\\\\tealA\",\"\\\\tealB\",\"\\\\tealC\",\"\\\\tealD\",\"\\\\tealE\",\"\\\\greenA\",\"\\\\greenB\",\"\\\\greenC\",\"\\\\greenD\",\"\\\\greenE\",\"\\\\goldA\",\"\\\\goldB\",\"\\\\goldC\",\"\\\\goldD\",\"\\\\goldE\",\"\\\\redA\",\"\\\\redB\",\"\\\\redC\",\"\\\\redD\",\"\\\\redE\",\"\\\\maroonA\",\"\\\\maroonB\",\"\\\\maroonC\",\"\\\\maroonD\",\"\\\\maroonE\",\"\\\\purpleA\",\"\\\\purpleB\",\"\\\\purpleC\",\"\\\\purpleD\",\"\\\\purpleE\",\"\\\\mintA\",\"\\\\mintB\",\"\\\\mintC\",\"\\\\grayA\",\"\\\\grayB\",\"\\\\grayC\",\"\\\\grayD\",\"\\\\grayE\",\"\\\\grayF\",\"\\\\grayG\",\"\\\\grayH\",\"\\\\grayI\",\"\\\\kaBlue\",\"\\\\kaGreen\"],{numArgs:1,allowedInText:true,greediness:3},function(e,t){var r=t[0];return{type:\"color\",color:\"katex-\"+e.funcName.slice(1),value:o(r)}});l([\"\\\\arcsin\",\"\\\\arccos\",\"\\\\arctan\",\"\\\\arg\",\"\\\\cos\",\"\\\\cosh\",\"\\\\cot\",\"\\\\coth\",\"\\\\csc\",\"\\\\deg\",\"\\\\dim\",\"\\\\exp\",\"\\\\hom\",\"\\\\ker\",\"\\\\lg\",\"\\\\ln\",\"\\\\log\",\"\\\\sec\",\"\\\\sin\",\"\\\\sinh\",\"\\\\tan\",\"\\\\tanh\"],{numArgs:0},function(e){return{type:\"op\",limits:false,symbol:false,body:e.funcName}});l([\"\\\\det\",\"\\\\gcd\",\"\\\\inf\",\"\\\\lim\",\"\\\\liminf\",\"\\\\limsup\",\"\\\\max\",\"\\\\min\",\"\\\\Pr\",\"\\\\sup\"],{numArgs:0},function(e){return{type:\"op\",limits:true,symbol:false,body:e.funcName}});l([\"\\\\int\",\"\\\\iint\",\"\\\\iiint\",\"\\\\oint\"],{numArgs:0},function(e){return{type:\"op\",limits:false,symbol:true,body:e.funcName}});l([\"\\\\coprod\",\"\\\\bigvee\",\"\\\\bigwedge\",\"\\\\biguplus\",\"\\\\bigcap\",\"\\\\bigcup\",\"\\\\intop\",\"\\\\prod\",\"\\\\sum\",\"\\\\bigotimes\",\"\\\\bigoplus\",\"\\\\bigodot\",\"\\\\bigsqcup\",\"\\\\smallint\"],{numArgs:0},function(e){return{type:\"op\",limits:true,symbol:true,body:e.funcName}});l(\"\\\\mathop\",{numArgs:1},function(e,t){var r=t[0];return{type:\"op\",limits:false,symbol:false,value:o(r)}});l([\"\\\\dfrac\",\"\\\\frac\",\"\\\\tfrac\",\"\\\\dbinom\",\"\\\\binom\",\"\\\\tbinom\",\"\\\\\\\\atopfrac\"],{numArgs:2,greediness:2},function(e,t){var r=t[0];var a=t[1];var i;var n=null;var s=null;var l=\"auto\";switch(e.funcName){case\"\\\\dfrac\":case\"\\\\frac\":case\"\\\\tfrac\":i=true;break;case\"\\\\\\\\atopfrac\":i=false;break;case\"\\\\dbinom\":case\"\\\\binom\":case\"\\\\tbinom\":i=false;n=\"(\";s=\")\";break;default:throw new Error(\"Unrecognized genfrac command\")}switch(e.funcName){case\"\\\\dfrac\":case\"\\\\dbinom\":l=\"display\";break;case\"\\\\tfrac\":case\"\\\\tbinom\":l=\"text\";break}return{type:\"genfrac\",numer:r,denom:a,hasBarLine:i,leftDelim:n,rightDelim:s,size:l}});l([\"\\\\llap\",\"\\\\rlap\"],{numArgs:1,allowedInText:true},function(e,t){var r=t[0];return{type:e.funcName.slice(1),body:r}});var m=function(e,t){if(a.contains(h,e.value)){return e}else{throw new i(\"Invalid delimiter: '\"+e.value+\"' after '\"+t.funcName+\"'\",e)}};l([\"\\\\bigl\",\"\\\\Bigl\",\"\\\\biggl\",\"\\\\Biggl\",\"\\\\bigr\",\"\\\\Bigr\",\"\\\\biggr\",\"\\\\Biggr\",\"\\\\bigm\",\"\\\\Bigm\",\"\\\\biggm\",\"\\\\Biggm\",\"\\\\big\",\"\\\\Big\",\"\\\\bigg\",\"\\\\Bigg\"],{numArgs:1},function(e,t){var r=m(t[0],e);return{type:\"delimsizing\",size:p[e.funcName].size,mclass:p[e.funcName].mclass,value:r.value}});l([\"\\\\left\",\"\\\\right\"],{numArgs:1},function(e,t){var r=m(t[0],e);return{type:\"leftright\",value:r.value}});l(\"\\\\middle\",{numArgs:1},function(e,t){var r=m(t[0],e);if(!e.parser.leftrightDepth){throw new i(\"\\\\middle without preceding \\\\left\",r)}return{type:\"middle\",value:r.value}});l([\"\\\\tiny\",\"\\\\scriptsize\",\"\\\\footnotesize\",\"\\\\small\",\"\\\\normalsize\",\"\\\\large\",\"\\\\Large\",\"\\\\LARGE\",\"\\\\huge\",\"\\\\Huge\"],0,null);l([\"\\\\displaystyle\",\"\\\\textstyle\",\"\\\\scriptstyle\",\"\\\\scriptscriptstyle\"],0,null);l([\"\\\\mathrm\",\"\\\\mathit\",\"\\\\mathbf\",\"\\\\mathbb\",\"\\\\mathcal\",\"\\\\mathfrak\",\"\\\\mathscr\",\"\\\\mathsf\",\"\\\\mathtt\",\"\\\\Bbb\",\"\\\\bold\",\"\\\\frak\"],{numArgs:1,greediness:2},function(e,t){var r=t[0];var a=e.funcName;if(a in c){a=c[a]}return{type:\"font\",font:a.slice(1),body:r}});l([\"\\\\acute\",\"\\\\grave\",\"\\\\ddot\",\"\\\\tilde\",\"\\\\bar\",\"\\\\breve\",\"\\\\check\",\"\\\\hat\",\"\\\\vec\",\"\\\\dot\"],{numArgs:1},function(e,t){var r=t[0];return{type:\"accent\",accent:e.funcName,base:r}});l([\"\\\\over\",\"\\\\choose\",\"\\\\atop\"],{numArgs:0,infix:true},function(e){var t;switch(e.funcName){case\"\\\\over\":t=\"\\\\frac\";break;case\"\\\\choose\":t=\"\\\\binom\";break;case\"\\\\atop\":t=\"\\\\\\\\atopfrac\";break;default:throw new Error(\"Unrecognized infix genfrac command\")}return{type:\"infix\",replaceWith:t,token:e.token}});l([\"\\\\\\\\\",\"\\\\cr\"],{numArgs:0,numOptionalArgs:1,argTypes:[\"size\"]},function(e,t){var r=t[0];return{type:\"cr\",size:r}});l([\"\\\\begin\",\"\\\\end\"],{numArgs:1,argTypes:[\"text\"]},function(e,t){var r=t[0];if(r.type!==\"ordgroup\"){throw new i(\"Invalid environment name\",r)}var a=\"\";for(var n=0;n<r.value.length;++n){a+=r.value[n].value}return{type:\"environment\",name:a,nameGroup:r}})},{\"./ParseError\":6,\"./parseData\":21,\"./utils\":25}],20:[function(e,t,r){var a=e(\"./utils\");function i(e,t){this.type=e;this.attributes={};this.children=t||[]}i.prototype.setAttribute=function(e,t){this.attributes[e]=t};i.prototype.toNode=function(){var e=document.createElementNS(\"http://www.w3.org/1998/Math/MathML\",this.type);for(var t in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,t)){e.setAttribute(t,this.attributes[t])}}for(var r=0;r<this.children.length;r++){e.appendChild(this.children[r].toNode())}return e};i.prototype.toMarkup=function(){var e=\"<\"+this.type;for(var t in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,t)){e+=\" \"+t+'=\"';e+=a.escape(this.attributes[t]);e+='\"'}}e+=\">\";for(var r=0;r<this.children.length;r++){e+=this.children[r].toMarkup()}e+=\"</\"+this.type+\">\";return e};function n(e){this.text=e}n.prototype.toNode=function(){return document.createTextNode(this.text)};n.prototype.toMarkup=function(){return a.escape(this.text)};t.exports={MathNode:i,TextNode:n}},{\"./utils\":25}],21:[function(e,t,r){function a(e,t,r,a,i){this.type=e;this.value=t;this.mode=r;if(a&&(!i||i.lexer===a.lexer)){this.lexer=a.lexer;this.start=a.start;this.end=(i||a).end}}t.exports={ParseNode:a}},{}],22:[function(e,t,r){var a=e(\"./Parser\");var i=function(e,t){if(!(typeof e===\"string\"||e instanceof String)){throw new TypeError(\"KaTeX can only parse string typed expression\")}var r=new a(e,t);return r.parse()};t.exports=i},{\"./Parser\":7}],23:[function(e,t,r){t.exports={math:{},text:{}};function a(e,r,a,i,n){t.exports[e][n]={font:r,group:a,replace:i}}var i=\"math\";var n=\"text\";var s=\"main\";var l=\"ams\";var o=\"accent\";var u=\"bin\";var p=\"close\";var h=\"inner\";var c=\"mathord\";var m=\"op\";var f=\"open\";var v=\"punct\";var d=\"rel\";var g=\"spacing\";var y=\"textord\";a(i,s,d,\"\\u2261\",\"\\\\equiv\");a(i,s,d,\"\\u227a\",\"\\\\prec\");a(i,s,d,\"\\u227b\",\"\\\\succ\");a(i,s,d,\"\\u223c\",\"\\\\sim\");a(i,s,d,\"\\u22a5\",\"\\\\perp\");a(i,s,d,\"\\u2aaf\",\"\\\\preceq\");a(i,s,d,\"\\u2ab0\",\"\\\\succeq\");a(i,s,d,\"\\u2243\",\"\\\\simeq\");a(i,s,d,\"\\u2223\",\"\\\\mid\");a(i,s,d,\"\\u226a\",\"\\\\ll\");a(i,s,d,\"\\u226b\",\"\\\\gg\");a(i,s,d,\"\\u224d\",\"\\\\asymp\");a(i,s,d,\"\\u2225\",\"\\\\parallel\");a(i,s,d,\"\\u22c8\",\"\\\\bowtie\");a(i,s,d,\"\\u2323\",\"\\\\smile\");a(i,s,d,\"\\u2291\",\"\\\\sqsubseteq\");a(i,s,d,\"\\u2292\",\"\\\\sqsupseteq\");a(i,s,d,\"\\u2250\",\"\\\\doteq\");a(i,s,d,\"\\u2322\",\"\\\\frown\");a(i,s,d,\"\\u220b\",\"\\\\ni\");a(i,s,d,\"\\u221d\",\"\\\\propto\");a(i,s,d,\"\\u22a2\",\"\\\\vdash\");a(i,s,d,\"\\u22a3\",\"\\\\dashv\");a(i,s,d,\"\\u220b\",\"\\\\owns\");a(i,s,v,\".\",\"\\\\ldotp\");a(i,s,v,\"\\u22c5\",\"\\\\cdotp\");a(i,s,y,\"#\",\"\\\\#\");a(n,s,y,\"#\",\"\\\\#\");a(i,s,y,\"&\",\"\\\\&\");a(n,s,y,\"&\",\"\\\\&\");a(i,s,y,\"\\u2135\",\"\\\\aleph\");a(i,s,y,\"\\u2200\",\"\\\\forall\");a(i,s,y,\"\\u210f\",\"\\\\hbar\");a(i,s,y,\"\\u2203\",\"\\\\exists\");a(i,s,y,\"\\u2207\",\"\\\\nabla\");a(i,s,y,\"\\u266d\",\"\\\\flat\");a(i,s,y,\"\\u2113\",\"\\\\ell\");a(i,s,y,\"\\u266e\",\"\\\\natural\");a(i,s,y,\"\\u2663\",\"\\\\clubsuit\");a(i,s,y,\"\\u2118\",\"\\\\wp\");a(i,s,y,\"\\u266f\",\"\\\\sharp\");a(i,s,y,\"\\u2662\",\"\\\\diamondsuit\");a(i,s,y,\"\\u211c\",\"\\\\Re\");a(i,s,y,\"\\u2661\",\"\\\\heartsuit\");a(i,s,y,\"\\u2111\",\"\\\\Im\");a(i,s,y,\"\\u2660\",\"\\\\spadesuit\");a(i,s,y,\"\\u2020\",\"\\\\dag\");a(i,s,y,\"\\u2021\",\"\\\\ddag\");a(i,s,p,\"\\u23b1\",\"\\\\rmoustache\");a(i,s,f,\"\\u23b0\",\"\\\\lmoustache\");a(i,s,p,\"\\u27ef\",\"\\\\rgroup\");a(i,s,f,\"\\u27ee\",\"\\\\lgroup\");a(i,s,u,\"\\u2213\",\"\\\\mp\");a(i,s,u,\"\\u2296\",\"\\\\ominus\");a(i,s,u,\"\\u228e\",\"\\\\uplus\");a(i,s,u,\"\\u2293\",\"\\\\sqcap\");a(i,s,u,\"\\u2217\",\"\\\\ast\");a(i,s,u,\"\\u2294\",\"\\\\sqcup\");a(i,s,u,\"\\u25ef\",\"\\\\bigcirc\");a(i,s,u,\"\\u2219\",\"\\\\bullet\");a(i,s,u,\"\\u2021\",\"\\\\ddagger\");a(i,s,u,\"\\u2240\",\"\\\\wr\");a(i,s,u,\"\\u2a3f\",\"\\\\amalg\");a(i,s,d,\"\\u27f5\",\"\\\\longleftarrow\");a(i,s,d,\"\\u21d0\",\"\\\\Leftarrow\");a(i,s,d,\"\\u27f8\",\"\\\\Longleftarrow\");a(i,s,d,\"\\u27f6\",\"\\\\longrightarrow\");a(i,s,d,\"\\u21d2\",\"\\\\Rightarrow\");a(i,s,d,\"\\u27f9\",\"\\\\Longrightarrow\");a(i,s,d,\"\\u2194\",\"\\\\leftrightarrow\");a(i,s,d,\"\\u27f7\",\"\\\\longleftrightarrow\");a(i,s,d,\"\\u21d4\",\"\\\\Leftrightarrow\");a(i,s,d,\"\\u27fa\",\"\\\\Longleftrightarrow\");a(i,s,d,\"\\u21a6\",\"\\\\mapsto\");a(i,s,d,\"\\u27fc\",\"\\\\longmapsto\");a(i,s,d,\"\\u2197\",\"\\\\nearrow\");a(i,s,d,\"\\u21a9\",\"\\\\hookleftarrow\");a(i,s,d,\"\\u21aa\",\"\\\\hookrightarrow\");a(i,s,d,\"\\u2198\",\"\\\\searrow\");a(i,s,d,\"\\u21bc\",\"\\\\leftharpoonup\");a(i,s,d,\"\\u21c0\",\"\\\\rightharpoonup\");a(i,s,d,\"\\u2199\",\"\\\\swarrow\");a(i,s,d,\"\\u21bd\",\"\\\\leftharpoondown\");a(i,s,d,\"\\u21c1\",\"\\\\rightharpoondown\");a(i,s,d,\"\\u2196\",\"\\\\nwarrow\");a(i,s,d,\"\\u21cc\",\"\\\\rightleftharpoons\");a(i,l,d,\"\\u226e\",\"\\\\nless\");a(i,l,d,\"\\ue010\",\"\\\\nleqslant\");a(i,l,d,\"\\ue011\",\"\\\\nleqq\");a(i,l,d,\"\\u2a87\",\"\\\\lneq\");a(i,l,d,\"\\u2268\",\"\\\\lneqq\");a(i,l,d,\"\\ue00c\",\"\\\\lvertneqq\");a(i,l,d,\"\\u22e6\",\"\\\\lnsim\");a(i,l,d,\"\\u2a89\",\"\\\\lnapprox\");a(i,l,d,\"\\u2280\",\"\\\\nprec\");a(i,l,d,\"\\u22e0\",\"\\\\npreceq\");a(i,l,d,\"\\u22e8\",\"\\\\precnsim\");a(i,l,d,\"\\u2ab9\",\"\\\\precnapprox\");a(i,l,d,\"\\u2241\",\"\\\\nsim\");a(i,l,d,\"\\ue006\",\"\\\\nshortmid\");a(i,l,d,\"\\u2224\",\"\\\\nmid\");a(i,l,d,\"\\u22ac\",\"\\\\nvdash\");a(i,l,d,\"\\u22ad\",\"\\\\nvDash\");a(i,l,d,\"\\u22ea\",\"\\\\ntriangleleft\");a(i,l,d,\"\\u22ec\",\"\\\\ntrianglelefteq\");a(i,l,d,\"\\u228a\",\"\\\\subsetneq\");a(i,l,d,\"\\ue01a\",\"\\\\varsubsetneq\");a(i,l,d,\"\\u2acb\",\"\\\\subsetneqq\");a(i,l,d,\"\\ue017\",\"\\\\varsubsetneqq\");a(i,l,d,\"\\u226f\",\"\\\\ngtr\");a(i,l,d,\"\\ue00f\",\"\\\\ngeqslant\");a(i,l,d,\"\\ue00e\",\"\\\\ngeqq\");a(i,l,d,\"\\u2a88\",\"\\\\gneq\");a(i,l,d,\"\\u2269\",\"\\\\gneqq\");a(i,l,d,\"\\ue00d\",\"\\\\gvertneqq\");a(i,l,d,\"\\u22e7\",\"\\\\gnsim\");a(i,l,d,\"\\u2a8a\",\"\\\\gnapprox\");a(i,l,d,\"\\u2281\",\"\\\\nsucc\");a(i,l,d,\"\\u22e1\",\"\\\\nsucceq\");a(i,l,d,\"\\u22e9\",\"\\\\succnsim\");a(i,l,d,\"\\u2aba\",\"\\\\succnapprox\");a(i,l,d,\"\\u2246\",\"\\\\ncong\");a(i,l,d,\"\\ue007\",\"\\\\nshortparallel\");a(i,l,d,\"\\u2226\",\"\\\\nparallel\");a(i,l,d,\"\\u22af\",\"\\\\nVDash\");a(i,l,d,\"\\u22eb\",\"\\\\ntriangleright\");a(i,l,d,\"\\u22ed\",\"\\\\ntrianglerighteq\");a(i,l,d,\"\\ue018\",\"\\\\nsupseteqq\");a(i,l,d,\"\\u228b\",\"\\\\supsetneq\");a(i,l,d,\"\\ue01b\",\"\\\\varsupsetneq\");a(i,l,d,\"\\u2acc\",\"\\\\supsetneqq\");a(i,l,d,\"\\ue019\",\"\\\\varsupsetneqq\");a(i,l,d,\"\\u22ae\",\"\\\\nVdash\");a(i,l,d,\"\\u2ab5\",\"\\\\precneqq\");a(i,l,d,\"\\u2ab6\",\"\\\\succneqq\");a(i,l,d,\"\\ue016\",\"\\\\nsubseteqq\");a(i,l,u,\"\\u22b4\",\"\\\\unlhd\");a(i,l,u,\"\\u22b5\",\"\\\\unrhd\");a(i,l,d,\"\\u219a\",\"\\\\nleftarrow\");a(i,l,d,\"\\u219b\",\"\\\\nrightarrow\");a(i,l,d,\"\\u21cd\",\"\\\\nLeftarrow\");a(i,l,d,\"\\u21cf\",\"\\\\nRightarrow\");a(i,l,d,\"\\u21ae\",\"\\\\nleftrightarrow\");a(i,l,d,\"\\u21ce\",\"\\\\nLeftrightarrow\");a(i,l,d,\"\\u25b3\",\"\\\\vartriangle\");a(i,l,y,\"\\u210f\",\"\\\\hslash\");a(i,l,y,\"\\u25bd\",\"\\\\triangledown\");a(i,l,y,\"\\u25ca\",\"\\\\lozenge\");a(i,l,y,\"\\u24c8\",\"\\\\circledS\");a(i,l,y,\"\\xae\",\"\\\\circledR\");a(i,l,y,\"\\u2221\",\"\\\\measuredangle\");a(i,l,y,\"\\u2204\",\"\\\\nexists\");a(i,l,y,\"\\u2127\",\"\\\\mho\");a(i,l,y,\"\\u2132\",\"\\\\Finv\");a(i,l,y,\"\\u2141\",\"\\\\Game\");a(i,l,y,\"k\",\"\\\\Bbbk\");a(i,l,y,\"\\u2035\",\"\\\\backprime\");a(i,l,y,\"\\u25b2\",\"\\\\blacktriangle\");a(i,l,y,\"\\u25bc\",\"\\\\blacktriangledown\");a(i,l,y,\"\\u25a0\",\"\\\\blacksquare\");a(i,l,y,\"\\u29eb\",\"\\\\blacklozenge\");a(i,l,y,\"\\u2605\",\"\\\\bigstar\");a(i,l,y,\"\\u2222\",\"\\\\sphericalangle\");a(i,l,y,\"\\u2201\",\"\\\\complement\");a(i,l,y,\"\\xf0\",\"\\\\eth\");a(i,l,y,\"\\u2571\",\"\\\\diagup\");a(i,l,y,\"\\u2572\",\"\\\\diagdown\");a(i,l,y,\"\\u25a1\",\"\\\\square\");a(i,l,y,\"\\u25a1\",\"\\\\Box\");a(i,l,y,\"\\u25ca\",\"\\\\Diamond\");a(i,l,y,\"\\xa5\",\"\\\\yen\");a(i,l,y,\"\\u2713\",\"\\\\checkmark\");a(i,l,y,\"\\u2136\",\"\\\\beth\");a(i,l,y,\"\\u2138\",\"\\\\daleth\");a(i,l,y,\"\\u2137\",\"\\\\gimel\");a(i,l,y,\"\\u03dd\",\"\\\\digamma\");a(i,l,y,\"\\u03f0\",\"\\\\varkappa\");a(i,l,f,\"\\u250c\",\"\\\\ulcorner\");a(i,l,p,\"\\u2510\",\"\\\\urcorner\");a(i,l,f,\"\\u2514\",\"\\\\llcorner\");a(i,l,p,\"\\u2518\",\"\\\\lrcorner\");a(i,l,d,\"\\u2266\",\"\\\\leqq\");a(i,l,d,\"\\u2a7d\",\"\\\\leqslant\");a(i,l,d,\"\\u2a95\",\"\\\\eqslantless\");a(i,l,d,\"\\u2272\",\"\\\\lesssim\");a(i,l,d,\"\\u2a85\",\"\\\\lessapprox\");a(i,l,d,\"\\u224a\",\"\\\\approxeq\");a(i,l,u,\"\\u22d6\",\"\\\\lessdot\");a(i,l,d,\"\\u22d8\",\"\\\\lll\");a(i,l,d,\"\\u2276\",\"\\\\lessgtr\");a(i,l,d,\"\\u22da\",\"\\\\lesseqgtr\");a(i,l,d,\"\\u2a8b\",\"\\\\lesseqqgtr\");a(i,l,d,\"\\u2251\",\"\\\\doteqdot\");a(i,l,d,\"\\u2253\",\"\\\\risingdotseq\");a(i,l,d,\"\\u2252\",\"\\\\fallingdotseq\");a(i,l,d,\"\\u223d\",\"\\\\backsim\");a(i,l,d,\"\\u22cd\",\"\\\\backsimeq\");a(i,l,d,\"\\u2ac5\",\"\\\\subseteqq\");a(i,l,d,\"\\u22d0\",\"\\\\Subset\");a(i,l,d,\"\\u228f\",\"\\\\sqsubset\");a(i,l,d,\"\\u227c\",\"\\\\preccurlyeq\");a(i,l,d,\"\\u22de\",\"\\\\curlyeqprec\");a(i,l,d,\"\\u227e\",\"\\\\precsim\");a(i,l,d,\"\\u2ab7\",\"\\\\precapprox\");a(i,l,d,\"\\u22b2\",\"\\\\vartriangleleft\");a(i,l,d,\"\\u22b4\",\"\\\\trianglelefteq\");a(i,l,d,\"\\u22a8\",\"\\\\vDash\");a(i,l,d,\"\\u22aa\",\"\\\\Vvdash\");a(i,l,d,\"\\u2323\",\"\\\\smallsmile\");a(i,l,d,\"\\u2322\",\"\\\\smallfrown\");a(i,l,d,\"\\u224f\",\"\\\\bumpeq\");a(i,l,d,\"\\u224e\",\"\\\\Bumpeq\");a(i,l,d,\"\\u2267\",\"\\\\geqq\");a(i,l,d,\"\\u2a7e\",\"\\\\geqslant\");a(i,l,d,\"\\u2a96\",\"\\\\eqslantgtr\");a(i,l,d,\"\\u2273\",\"\\\\gtrsim\");a(i,l,d,\"\\u2a86\",\"\\\\gtrapprox\");a(i,l,u,\"\\u22d7\",\"\\\\gtrdot\");a(i,l,d,\"\\u22d9\",\"\\\\ggg\");a(i,l,d,\"\\u2277\",\"\\\\gtrless\");a(i,l,d,\"\\u22db\",\"\\\\gtreqless\");a(i,l,d,\"\\u2a8c\",\"\\\\gtreqqless\");a(i,l,d,\"\\u2256\",\"\\\\eqcirc\");a(i,l,d,\"\\u2257\",\"\\\\circeq\");a(i,l,d,\"\\u225c\",\"\\\\triangleq\");a(i,l,d,\"\\u223c\",\"\\\\thicksim\");a(i,l,d,\"\\u2248\",\"\\\\thickapprox\");a(i,l,d,\"\\u2ac6\",\"\\\\supseteqq\");a(i,l,d,\"\\u22d1\",\"\\\\Supset\");a(i,l,d,\"\\u2290\",\"\\\\sqsupset\");a(i,l,d,\"\\u227d\",\"\\\\succcurlyeq\");a(i,l,d,\"\\u22df\",\"\\\\curlyeqsucc\");a(i,l,d,\"\\u227f\",\"\\\\succsim\");a(i,l,d,\"\\u2ab8\",\"\\\\succapprox\");a(i,l,d,\"\\u22b3\",\"\\\\vartriangleright\");a(i,l,d,\"\\u22b5\",\"\\\\trianglerighteq\");a(i,l,d,\"\\u22a9\",\"\\\\Vdash\");a(i,l,d,\"\\u2223\",\"\\\\shortmid\");a(i,l,d,\"\\u2225\",\"\\\\shortparallel\");a(i,l,d,\"\\u226c\",\"\\\\between\");a(i,l,d,\"\\u22d4\",\"\\\\pitchfork\");a(i,l,d,\"\\u221d\",\"\\\\varpropto\");a(i,l,d,\"\\u25c0\",\"\\\\blacktriangleleft\");a(i,l,d,\"\\u2234\",\"\\\\therefore\");a(i,l,d,\"\\u220d\",\"\\\\backepsilon\");a(i,l,d,\"\\u25b6\",\"\\\\blacktriangleright\");a(i,l,d,\"\\u2235\",\"\\\\because\");a(i,l,d,\"\\u22d8\",\"\\\\llless\");a(i,l,d,\"\\u22d9\",\"\\\\gggtr\");a(i,l,u,\"\\u22b2\",\"\\\\lhd\");a(i,l,u,\"\\u22b3\",\"\\\\rhd\");a(i,l,d,\"\\u2242\",\"\\\\eqsim\");a(i,s,d,\"\\u22c8\",\"\\\\Join\");a(i,l,d,\"\\u2251\",\"\\\\Doteq\");a(i,l,u,\"\\u2214\",\"\\\\dotplus\");a(i,l,u,\"\\u2216\",\"\\\\smallsetminus\");a(i,l,u,\"\\u22d2\",\"\\\\Cap\");a(i,l,u,\"\\u22d3\",\"\\\\Cup\");a(i,l,u,\"\\u2a5e\",\"\\\\doublebarwedge\");a(i,l,u,\"\\u229f\",\"\\\\boxminus\");a(i,l,u,\"\\u229e\",\"\\\\boxplus\");a(i,l,u,\"\\u22c7\",\"\\\\divideontimes\");a(i,l,u,\"\\u22c9\",\"\\\\ltimes\");a(i,l,u,\"\\u22ca\",\"\\\\rtimes\");a(i,l,u,\"\\u22cb\",\"\\\\leftthreetimes\");a(i,l,u,\"\\u22cc\",\"\\\\rightthreetimes\");a(i,l,u,\"\\u22cf\",\"\\\\curlywedge\");a(i,l,u,\"\\u22ce\",\"\\\\curlyvee\");a(i,l,u,\"\\u229d\",\"\\\\circleddash\");a(i,l,u,\"\\u229b\",\"\\\\circledast\");a(i,l,u,\"\\u22c5\",\"\\\\centerdot\");a(i,l,u,\"\\u22ba\",\"\\\\intercal\");a(i,l,u,\"\\u22d2\",\"\\\\doublecap\");a(i,l,u,\"\\u22d3\",\"\\\\doublecup\");a(i,l,u,\"\\u22a0\",\"\\\\boxtimes\");a(i,l,d,\"\\u21e2\",\"\\\\dashrightarrow\");a(i,l,d,\"\\u21e0\",\"\\\\dashleftarrow\");a(i,l,d,\"\\u21c7\",\"\\\\leftleftarrows\");a(i,l,d,\"\\u21c6\",\"\\\\leftrightarrows\");a(i,l,d,\"\\u21da\",\"\\\\Lleftarrow\");a(i,l,d,\"\\u219e\",\"\\\\twoheadleftarrow\");a(i,l,d,\"\\u21a2\",\"\\\\leftarrowtail\");a(i,l,d,\"\\u21ab\",\"\\\\looparrowleft\");a(i,l,d,\"\\u21cb\",\"\\\\leftrightharpoons\");a(i,l,d,\"\\u21b6\",\"\\\\curvearrowleft\");a(i,l,d,\"\\u21ba\",\"\\\\circlearrowleft\");a(i,l,d,\"\\u21b0\",\"\\\\Lsh\");a(i,l,d,\"\\u21c8\",\"\\\\upuparrows\");a(i,l,d,\"\\u21bf\",\"\\\\upharpoonleft\");a(i,l,d,\"\\u21c3\",\"\\\\downharpoonleft\");a(i,l,d,\"\\u22b8\",\"\\\\multimap\");a(i,l,d,\"\\u21ad\",\"\\\\leftrightsquigarrow\");a(i,l,d,\"\\u21c9\",\"\\\\rightrightarrows\");a(i,l,d,\"\\u21c4\",\"\\\\rightleftarrows\");a(i,l,d,\"\\u21a0\",\"\\\\twoheadrightarrow\");a(i,l,d,\"\\u21a3\",\"\\\\rightarrowtail\");a(i,l,d,\"\\u21ac\",\"\\\\looparrowright\");a(i,l,d,\"\\u21b7\",\"\\\\curvearrowright\");a(i,l,d,\"\\u21bb\",\"\\\\circlearrowright\");a(i,l,d,\"\\u21b1\",\"\\\\Rsh\");a(i,l,d,\"\\u21ca\",\"\\\\downdownarrows\");a(i,l,d,\"\\u21be\",\"\\\\upharpoonright\");a(i,l,d,\"\\u21c2\",\"\\\\downharpoonright\");a(i,l,d,\"\\u21dd\",\"\\\\rightsquigarrow\");a(i,l,d,\"\\u21dd\",\"\\\\leadsto\");a(i,l,d,\"\\u21db\",\"\\\\Rrightarrow\");a(i,l,d,\"\\u21be\",\"\\\\restriction\");a(i,s,y,\"\\u2018\",\"`\");a(i,s,y,\"$\",\"\\\\$\");a(n,s,y,\"$\",\"\\\\$\");a(i,s,y,\"%\",\"\\\\%\");a(n,s,y,\"%\",\"\\\\%\");a(i,s,y,\"_\",\"\\\\_\");a(n,s,y,\"_\",\"\\\\_\");a(i,s,y,\"\\u2220\",\"\\\\angle\");a(i,s,y,\"\\u221e\",\"\\\\infty\");a(i,s,y,\"\\u2032\",\"\\\\prime\");a(i,s,y,\"\\u25b3\",\"\\\\triangle\");a(i,s,y,\"\\u0393\",\"\\\\Gamma\");a(i,s,y,\"\\u0394\",\"\\\\Delta\");a(i,s,y,\"\\u0398\",\"\\\\Theta\");a(i,s,y,\"\\u039b\",\"\\\\Lambda\");a(i,s,y,\"\\u039e\",\"\\\\Xi\");a(i,s,y,\"\\u03a0\",\"\\\\Pi\");a(i,s,y,\"\\u03a3\",\"\\\\Sigma\");a(i,s,y,\"\\u03a5\",\"\\\\Upsilon\");a(i,s,y,\"\\u03a6\",\"\\\\Phi\");a(i,s,y,\"\\u03a8\",\"\\\\Psi\");a(i,s,y,\"\\u03a9\",\"\\\\Omega\");a(i,s,y,\"\\xac\",\"\\\\neg\");a(i,s,y,\"\\xac\",\"\\\\lnot\");a(i,s,y,\"\\u22a4\",\"\\\\top\");a(i,s,y,\"\\u22a5\",\"\\\\bot\");a(i,s,y,\"\\u2205\",\"\\\\emptyset\");a(i,l,y,\"\\u2205\",\"\\\\varnothing\");a(i,s,c,\"\\u03b1\",\"\\\\alpha\");a(i,s,c,\"\\u03b2\",\"\\\\beta\");a(i,s,c,\"\\u03b3\",\"\\\\gamma\");a(i,s,c,\"\\u03b4\",\"\\\\delta\");a(i,s,c,\"\\u03f5\",\"\\\\epsilon\");a(i,s,c,\"\\u03b6\",\"\\\\zeta\");a(i,s,c,\"\\u03b7\",\"\\\\eta\");a(i,s,c,\"\\u03b8\",\"\\\\theta\");a(i,s,c,\"\\u03b9\",\"\\\\iota\");a(i,s,c,\"\\u03ba\",\"\\\\kappa\");a(i,s,c,\"\\u03bb\",\"\\\\lambda\");a(i,s,c,\"\\u03bc\",\"\\\\mu\");a(i,s,c,\"\\u03bd\",\"\\\\nu\");a(i,s,c,\"\\u03be\",\"\\\\xi\");a(i,s,c,\"o\",\"\\\\omicron\");a(i,s,c,\"\\u03c0\",\"\\\\pi\");a(i,s,c,\"\\u03c1\",\"\\\\rho\");a(i,s,c,\"\\u03c3\",\"\\\\sigma\");a(i,s,c,\"\\u03c4\",\"\\\\tau\");a(i,s,c,\"\\u03c5\",\"\\\\upsilon\");a(i,s,c,\"\\u03d5\",\"\\\\phi\");a(i,s,c,\"\\u03c7\",\"\\\\chi\");a(i,s,c,\"\\u03c8\",\"\\\\psi\");a(i,s,c,\"\\u03c9\",\"\\\\omega\");a(i,s,c,\"\\u03b5\",\"\\\\varepsilon\");a(i,s,c,\"\\u03d1\",\"\\\\vartheta\");a(i,s,c,\"\\u03d6\",\"\\\\varpi\");a(i,s,c,\"\\u03f1\",\"\\\\varrho\");a(i,s,c,\"\\u03c2\",\"\\\\varsigma\");a(i,s,c,\"\\u03c6\",\"\\\\varphi\");a(i,s,u,\"\\u2217\",\"*\");a(i,s,u,\"+\",\"+\");a(i,s,u,\"\\u2212\",\"-\");a(i,s,u,\"\\u22c5\",\"\\\\cdot\");a(i,s,u,\"\\u2218\",\"\\\\circ\");a(i,s,u,\"\\xf7\",\"\\\\div\");a(i,s,u,\"\\xb1\",\"\\\\pm\");a(i,s,u,\"\\xd7\",\"\\\\times\");a(i,s,u,\"\\u2229\",\"\\\\cap\");a(i,s,u,\"\\u222a\",\"\\\\cup\");a(i,s,u,\"\\u2216\",\"\\\\setminus\");a(i,s,u,\"\\u2227\",\"\\\\land\");a(i,s,u,\"\\u2228\",\"\\\\lor\");a(i,s,u,\"\\u2227\",\"\\\\wedge\");a(i,s,u,\"\\u2228\",\"\\\\vee\");a(i,s,y,\"\\u221a\",\"\\\\surd\");a(i,s,f,\"(\",\"(\");a(i,s,f,\"[\",\"[\");a(i,s,f,\"\\u27e8\",\"\\\\langle\");a(i,s,f,\"\\u2223\",\"\\\\lvert\");a(i,s,f,\"\\u2225\",\"\\\\lVert\");a(i,s,p,\")\",\")\");a(i,s,p,\"]\",\"]\");a(i,s,p,\"?\",\"?\");a(i,s,p,\"!\",\"!\");a(i,s,p,\"\\u27e9\",\"\\\\rangle\");a(i,s,p,\"\\u2223\",\"\\\\rvert\");a(i,s,p,\"\\u2225\",\"\\\\rVert\");a(i,s,d,\"=\",\"=\");a(i,s,d,\"<\",\"<\");a(i,s,d,\">\",\">\");a(i,s,d,\":\",\":\");a(i,s,d,\"\\u2248\",\"\\\\approx\");a(i,s,d,\"\\u2245\",\"\\\\cong\");a(i,s,d,\"\\u2265\",\"\\\\ge\");a(i,s,d,\"\\u2265\",\"\\\\geq\");a(i,s,d,\"\\u2190\",\"\\\\gets\");a(i,s,d,\">\",\"\\\\gt\");a(i,s,d,\"\\u2208\",\"\\\\in\");a(i,s,d,\"\\u2209\",\"\\\\notin\");a(i,s,d,\"\\u2282\",\"\\\\subset\");a(i,s,d,\"\\u2283\",\"\\\\supset\");a(i,s,d,\"\\u2286\",\"\\\\subseteq\");a(i,s,d,\"\\u2287\",\"\\\\supseteq\");a(i,l,d,\"\\u2288\",\"\\\\nsubseteq\");a(i,l,d,\"\\u2289\",\"\\\\nsupseteq\");a(i,s,d,\"\\u22a8\",\"\\\\models\");a(i,s,d,\"\\u2190\",\"\\\\leftarrow\");a(i,s,d,\"\\u2264\",\"\\\\le\");a(i,s,d,\"\\u2264\",\"\\\\leq\");a(i,s,d,\"<\",\"\\\\lt\");a(i,s,d,\"\\u2260\",\"\\\\ne\");a(i,s,d,\"\\u2260\",\"\\\\neq\");a(i,s,d,\"\\u2192\",\"\\\\rightarrow\");a(i,s,d,\"\\u2192\",\"\\\\to\");a(i,l,d,\"\\u2271\",\"\\\\ngeq\");a(i,l,d,\"\\u2270\",\"\\\\nleq\");a(i,s,g,null,\"\\\\!\");a(i,s,g,\"\\xa0\",\"\\\\ \");a(i,s,g,\"\\xa0\",\"~\");a(i,s,g,null,\"\\\\,\");a(i,s,g,null,\"\\\\:\");a(i,s,g,null,\"\\\\;\");a(i,s,g,null,\"\\\\enspace\");a(i,s,g,null,\"\\\\qquad\");a(i,s,g,null,\"\\\\quad\");a(i,s,g,\"\\xa0\",\"\\\\space\");a(i,s,v,\",\",\",\");a(i,s,v,\";\",\";\");a(i,s,v,\":\",\"\\\\colon\");a(i,l,u,\"\\u22bc\",\"\\\\barwedge\");a(i,l,u,\"\\u22bb\",\"\\\\veebar\");a(i,s,u,\"\\u2299\",\"\\\\odot\");a(i,s,u,\"\\u2295\",\"\\\\oplus\");a(i,s,u,\"\\u2297\",\"\\\\otimes\");a(i,s,y,\"\\u2202\",\"\\\\partial\");a(i,s,u,\"\\u2298\",\"\\\\oslash\");a(i,l,u,\"\\u229a\",\"\\\\circledcirc\");a(i,l,u,\"\\u22a1\",\"\\\\boxdot\");a(i,s,u,\"\\u25b3\",\"\\\\bigtriangleup\");a(i,s,u,\"\\u25bd\",\"\\\\bigtriangledown\");a(i,s,u,\"\\u2020\",\"\\\\dagger\");a(i,s,u,\"\\u22c4\",\"\\\\diamond\");a(i,s,u,\"\\u22c6\",\"\\\\star\");a(i,s,u,\"\\u25c3\",\"\\\\triangleleft\");a(i,s,u,\"\\u25b9\",\"\\\\triangleright\");a(i,s,f,\"{\",\"\\\\{\");a(n,s,y,\"{\",\"\\\\{\");a(i,s,p,\"}\",\"\\\\}\");a(n,s,y,\"}\",\"\\\\}\");a(i,s,f,\"{\",\"\\\\lbrace\");a(i,s,p,\"}\",\"\\\\rbrace\");a(i,s,f,\"[\",\"\\\\lbrack\");a(i,s,p,\"]\",\"\\\\rbrack\");a(i,s,f,\"\\u230a\",\"\\\\lfloor\");a(i,s,p,\"\\u230b\",\"\\\\rfloor\");a(i,s,f,\"\\u2308\",\"\\\\lceil\");a(i,s,p,\"\\u2309\",\"\\\\rceil\");a(i,s,y,\"\\\\\",\"\\\\backslash\");a(i,s,y,\"\\u2223\",\"|\");a(i,s,y,\"\\u2223\",\"\\\\vert\");a(i,s,y,\"\\u2225\",\"\\\\|\");a(i,s,y,\"\\u2225\",\"\\\\Vert\");a(i,s,d,\"\\u2191\",\"\\\\uparrow\");a(i,s,d,\"\\u21d1\",\"\\\\Uparrow\");a(i,s,d,\"\\u2193\",\"\\\\downarrow\");a(i,s,d,\"\\u21d3\",\"\\\\Downarrow\");a(i,s,d,\"\\u2195\",\"\\\\updownarrow\");a(i,s,d,\"\\u21d5\",\"\\\\Updownarrow\");a(i,i,m,\"\\u2210\",\"\\\\coprod\");a(i,i,m,\"\\u22c1\",\"\\\\bigvee\");a(i,i,m,\"\\u22c0\",\"\\\\bigwedge\");a(i,i,m,\"\\u2a04\",\"\\\\biguplus\");a(i,i,m,\"\\u22c2\",\"\\\\bigcap\");a(i,i,m,\"\\u22c3\",\"\\\\bigcup\");a(i,i,m,\"\\u222b\",\"\\\\int\");a(i,i,m,\"\\u222b\",\"\\\\intop\");a(i,i,m,\"\\u222c\",\"\\\\iint\");a(i,i,m,\"\\u222d\",\"\\\\iiint\");a(i,i,m,\"\\u220f\",\"\\\\prod\");a(i,i,m,\"\\u2211\",\"\\\\sum\");a(i,i,m,\"\\u2a02\",\"\\\\bigotimes\");a(i,i,m,\"\\u2a01\",\"\\\\bigoplus\");a(i,i,m,\"\\u2a00\",\"\\\\bigodot\");a(i,i,m,\"\\u222e\",\"\\\\oint\");a(i,i,m,\"\\u2a06\",\"\\\\bigsqcup\");a(i,i,m,\"\\u222b\",\"\\\\smallint\");a(n,s,h,\"\\u2026\",\"\\\\textellipsis\");a(i,s,h,\"\\u2026\",\"\\\\mathellipsis\");a(n,s,h,\"\\u2026\",\"\\\\ldots\");a(i,s,h,\"\\u2026\",\"\\\\ldots\");a(i,s,h,\"\\u22ef\",\"\\\\cdots\");a(i,s,h,\"\\u22f1\",\"\\\\ddots\");a(i,s,y,\"\\u22ee\",\"\\\\vdots\");a(i,s,o,\"\\xb4\",\"\\\\acute\");a(i,s,o,\"`\",\"\\\\grave\");a(i,s,o,\"\\xa8\",\"\\\\ddot\");a(i,s,o,\"~\",\"\\\\tilde\");a(i,s,o,\"\\xaf\",\"\\\\bar\");a(i,s,o,\"\\u02d8\",\"\\\\breve\");a(i,s,o,\"\\u02c7\",\"\\\\check\");a(i,s,o,\"^\",\"\\\\hat\");a(i,s,o,\"\\u20d7\",\"\\\\vec\");a(i,s,o,\"\\u02d9\",\"\\\\dot\");a(i,s,c,\"\\u0131\",\"\\\\imath\");a(i,s,c,\"\\u0237\",\"\\\\jmath\");a(n,s,y,\"\\u2013\",\"--\");a(n,s,y,\"\\u2014\",\"---\");a(n,s,y,\"\\u2018\",\"`\");a(n,s,y,\"\\u2019\",\"'\");a(n,s,y,\"\\u201c\",\"``\");a(n,s,y,\"\\u201d\",\"''\");a(i,s,y,\"\\xb0\",\"\\\\degree\");a(n,s,y,\"\\xb0\",\"\\\\degree\");a(i,s,c,\"\\xa3\",\"\\\\pounds\");a(i,l,y,\"\\u2720\",\"\\\\maltese\");a(n,l,y,\"\\u2720\",\"\\\\maltese\");a(n,s,g,\"\\xa0\",\"\\\\ \");a(n,s,g,\"\\xa0\",\" \");a(n,s,g,\"\\xa0\",\"~\");var x;var b;var w='0123456789/@.\"';for(x=0;x<w.length;x++){b=w.charAt(x);a(i,s,y,b,b)}var k='0123456789!@*()-=+[]\";:?/.,';for(x=0;x<k.length;x++){b=k.charAt(x);a(n,s,y,b,b)}var z=\"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\";for(x=0;x<z.length;x++){b=z.charAt(x);a(i,s,c,b,b);a(n,s,y,b,b)}for(x=192;x<=214;x++){b=String.fromCharCode(x);a(n,s,y,b,b)}for(x=216;x<=246;x++){b=String.fromCharCode(x);a(n,s,y,b,b)}for(x=248;x<=255;x++){b=String.fromCharCode(x);a(n,s,y,b,b)}for(x=1040;x<=1103;x++){b=String.fromCharCode(x);a(n,s,y,b,b)}a(n,s,y,\"\\u2013\",\"\\u2013\");a(n,s,y,\"\\u2014\",\"\\u2014\");a(n,s,y,\"\\u2018\",\"\\u2018\");a(n,s,y,\"\\u2019\",\"\\u2019\");a(n,s,y,\"\\u201c\",\"\\u201c\");a(n,s,y,\"\\u201d\",\"\\u201d\")},{}],24:[function(e,t,r){var a=/[\\uAC00-\\uD7AF]/;var i=/[\\u3040-\\u309F]|[\\u30A0-\\u30FF]|[\\u4E00-\\u9FAF]|[\\uAC00-\\uD7AF]/;t.exports={cjkRegex:i,hangulRegex:a}},{}],25:[function(e,t,r){var a=Array.prototype.indexOf;var i=function(e,t){if(e==null){return-1}if(a&&e.indexOf===a){return e.indexOf(t)}var r=0;var i=e.length;for(;r<i;r++){if(e[r]===t){return r}}return-1};var n=function(e,t){return i(e,t)!==-1};var s=function(e,t){return e===undefined?t:e};var l=/([A-Z])/g;var o=function(e){return e.replace(l,\"-$1\").toLowerCase()};var u={\"&\":\"&amp;\",\">\":\"&gt;\",\"<\":\"&lt;\",'\"':\"&quot;\",\"'\":\"&#x27;\"};var p=/[&><\"']/g;function h(e){return u[e]}function c(e){return(\"\"+e).replace(p,h)}var m;if(typeof document!==\"undefined\"){var f=document.createElement(\"span\");if(\"textContent\"in f){m=function(e,t){e.textContent=t}}else{m=function(e,t){e.innerText=t}}}function v(e){m(e,\"\")}t.exports={contains:n,deflt:s,escape:c,hyphenate:o,indexOf:i,setTextContent:m,clearNode:v}},{}]},{},[1])(1)});\n\n})($tw.node ? $tw.fakeDocument : window.document)\n",
            "type": "application/javascript",
            "title": "$:/plugins/tiddlywiki/katex/katex.min.js",
            "module-type": "library"
        },
        "$:/plugins/tiddlywiki/katex/fonts/KaTeX_AMS-Regular.woff": {
            "text": "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",
            "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_AMS-Regular.woff",
            "type": "application/font-woff"
        },
        "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Caligraphic-Bold.woff": {
            "text": "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",
            "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Caligraphic-Bold.woff",
            "type": "application/font-woff"
        },
        "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Caligraphic-Regular.woff": {
            "text": "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",
            "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Caligraphic-Regular.woff",
            "type": "application/font-woff"
        },
        "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Fraktur-Bold.woff": {
            "text": "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",
            "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Fraktur-Bold.woff",
            "type": "application/font-woff"
        },
        "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Fraktur-Regular.woff": {
            "text": "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",
            "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Fraktur-Regular.woff",
            "type": "application/font-woff"
        },
        "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Bold.woff": {
            "text": "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",
            "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Bold.woff",
            "type": "application/font-woff"
        },
        "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Italic.woff": {
            "text": "d09GRgABAAAAAGEwAA8AAAAAq4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAABhFAAAABwAAAAcZO5Rt09TLzIAAAHMAAAAUwAAAGBFqVk4Y21hcAAAA3wAAAFEAAACEpGMmJVjdnQgAAAK6AAAACsAAAA6AkoPZmZwZ20AAATAAAAFpwAAC5fYFNvwZ2FzcAAAYQwAAAAIAAAACAAAABBnbHlmAAAMFAAAUIoAAI7Mz5ynsWhlYWQAAAFYAAAAMwAAADYF7jwhaGhlYQAAAYwAAAAgAAAAJAaVAvRobXR4AAACIAAAAVoAAAH49b8gaWxvY2EAAAsUAAAA/gAAAP6Vm3F4bWF4cAAAAawAAAAgAAAAIAGoAiRuYW1lAABcoAAAAxsAAAduSit+nHBvc3QAAF+8AAABTwAAAdvFzWhfcHJlcAAACmgAAAB+AAAAipKM/Mp42mNgZGBgAOJK80fn4/ltvjLIM78AijBc3F6zBEb/e/afjSWF6R0DEwMHEAMBAJNIDqoAeNpjYGRgYHr3n40hivnfv2f/C1lSGIAiKKAOALJ3B40AAQAAAH4AjgAEAAAAAAACACgAOAB3AAAAhgFcAAAAAHjaY2BiXMo4gYGVgYGpi2kPAwNDD4RmfMBgyMjEgAQaGBjeCzC8eQvjB6S5pjAwMii8/8+s8N+CIYrpHcMvBQaG/jhmoO6dTKuBShQYGAE5wxJwAHjaLZExSEJRFIb/e19JS0PkEjQ1RgQ94ZXuBqWFUGDgEqQFGS0WtEVNQQQ1GDq1ubQ0NDZEUdOLWhzanJTWHAoHX997KXz+9/73vHPuuUc9ueJnVvjroQmVrdWd46oCVzbQMV7T1HUJYybQM945Xtpsaz2Mx4vD/oAsbMIs7MIRnMEWlKP4hBbJcTDIVbMdpeyjktbXte1qwTbk2Qt5Tox9R5451Zwd1apj8Cv4J8Tj822V2PlIP1FXy+S45ewJ3hxAXXi1JeWou2QSwbcJzBC1C1AyvvZgZ7DmbsEXGt49TXyGfYt92kh53iNDjQxnYXwMv2Qa7Ov0nFXeTrD2iamhH0qZdnTmEfsTvi3334hyZoOWFEzBGgxL/V9osx6Hwr8XJGEE4lHPbvRmVXtP7zX6DPv3lcNrojfoO1oM+3L6OqTOSzg3ZtkN52knNW0fmO8Mcy5Kf8vgiLcAAHjaY2BgYGaAYBkGRiDJwMgD5DGC+SwMH4C0BYMCkCXBoMxgzWDLEM0Qz1DFUMewgGExoyGTOTMLMwczD/MU5hnMs5nnMS9gXsy8jHmlgoiCpIKsIv/7////A01QYFAF6rRniGVIRNLJwMzGzMU8GUnnUuYVCsIKEgoyQJ1/gVof/3/0/+H/B//v/7/3//b/Xf93/Nf+p/Y37m/s35g/1/5c/nPxz/k/5/6c+XP6z6kHiQ/iHsTczxaog/iCPMDIxgDXzsgEJJjQFQCDioWVjYGdg5OLm4eXj19AUEhYRFRMXEJSSlpGlkGOQV5BUUlZRVVNXUNTS1tHV0/fwNDI2MTUzNzC0sqawcbWjsHewdHJ2cXVzd3D08vbx9fPPyAwKDgkNCw8AmhBJDHOjMYpU4zMiQKTJaUVlWXlBEyMQTABRBhcBXjarVb5c9NGFJZ8JE5CjpKDFvVYsXGa2iuTUggGTAiSZRfcw7laCUorxU56H9Ayw9/gv+bJtDP0N/60fm9lm0CSdoZpJqP37e6nffeTyVCCjL3AD4VoPTNmtlo0tnMvoMsWrYbRoejtBZQpxn8XjILR6ch9y7bJCMnwZL1vmIYXuQ6ZikR06FBGia6g523Krdzrr5qTnt/xt+8HtrStXiCo3Q5s2gwtQVVG1TAUSUqKu7SKrcFK0BqfrzHzeTsQMKIXC5psBxF2BJ9NMlpntB5ZURiGFpnlMJRktIODMHQoqwTuyRVjGJT32gHlpUtj0oX5IZmRQzklYZfoJvl9V/BJqpyfOPc7lC3Z2PdET/Rwd7KWL8KtrSBqW/F2GMgQp5s7AY4sdmqg2aG8onGv3DcyaWjGsJSuRIilG1Nm/5DMDu6nfMmhcSXYyCmv8yxn7Au+gTajkClRXRtZUP3xKcPz3ZI9CvaEejn4k+ktZhkmePA4En5PxpwIHSnD4miSsGDk0ErKFmVcT1VMnfI6LeMtw3rh2tGXzijtUH9qMusHtiXtsGQ7NK2STManblx3aEaBKASd8e7y6wDSDWmaV9tYTWPl0CyumdMhEYhAB3ppxotELxI0g6A5NKdau0GS69bDZZo+kE8cekO1toLWTrpp2dif1/tnVWLMentBMjuL/MUuzZa5SFG6bnKGH9N4kLmETGSL7SDh4MFbt4f0stqSLfHaEFvpOb+C2uedEJ40YX8Tuy+n6pQEJoYxLxEtj4yNvmmaOlfzykiMjL8b0Kx0hU9TKMpJKI5cEUH9X3NzpjFjuG4vSs6Olelx2bqAMC3At/myQ4sqMVkuIc4sz6kky/JNleRYvqWSPMvzKhljaalknOXbKimwfEclEyw/UKJC5gOHSho8dKiswSOH3lUGTZdfw8b3YOO7uFvARpY2bGR5ATaylLCR5TJsZFmEjSxXYCPL92Ejy1XYyFIpUdOl5iionYuExyZ4Oh1oH8X1VlHklMlBJ11EETfFKZmQcVXyGPtXBkrJobVReswlulhK8uaiH2AMsYMfHo3M8eNLSlzR9n4EnukfV4IOO1E57xtLfxr8V9+Q1eSSuQiPLsN/GHyyvSjsuOrQFVU5V3No/b+oKMIO6FeREmOpKCqiyc2LUN7p9ZqyiW4PMNYxFtHR66a5uAD9VUyZJTQI/jWFJrzyQa8ihaj1cNe1F8eikt5BOdwJlqCI+31zK3iaEVlhPc2sZM+HLs/AAqap1GzZQPd5r7ZSxHMoHfYZL+pKynpxF8cZL7aAI55Br74TwyQMZtlADiU0NOAXhNaC+05QItNpl0ODI/Z5FFT+2K24kT0qaiPwbKdT7oUupPw6x0BgJ78yiIGsITQ39DYV0DxCNGSTlXG2ajpk7MAgosZuUBE1fBvZ4sGmYFuGIR8rYnXn6Nc3TdRJFTzIjOQyvjmwwBumJuLP86suDlO5oaSocNQaGMy1sJJUzAU04K3Rdvvo9ubL7BM5txVVyyde6iq6Vu5BMRcLrD3OQVoqVAHVG1XYMLpcXBKlXkGTpNfVMTQww1+jFJv/V/Wx+TxfahIj5Ei+7XBgo8/BGPrfYP9tOQjAwI+Ry024vJg2J77u6MP5Cl1GL358yv4dzFxzYZ6uAN9VdBWixVHzEVfRwKdsGKdPFJcjtQA/VX3MGYDPAEwGn6u+qXfaAHpnizk+wDZzGOwwh8EucxjsMec2wBfMYfAlcxgEzGEQMscDuMccBveZw+Ar5jB4wJwGwNfMYfANcxhEzGEQM8cF2GcOgw5zGHSZw+BA0fVRmA95QRtA32p0C+g7XU9YbGLxvaIbI/YPvNDsHzVi9k8aMfVnRbUR9RdeaOqvGjH1N42Y+lDRzRH1ES809XeNmPqHRkx9rJ5O5DLDH09umQoHlF1uPxl+U5x/ACtxTWMAeNpj8N7BcCIoYiMjY1/kBsadHAwcDMkFGxnYnDZJMDJogRibuTkYOSAsUTYwi91pFzMDAyMDJ5DN4bSLwQHCZmZw2ajC2BEYscGhI2Ijc4rLRjUQbxdHAwMji0NHckgESEkkEGzm5WDk0drB+L91A0vvRiagPtYUFwB3WSTLAAB42mNgwAAhQKjKoMq0moGBaRvjrv/f/tsxiQLZB/+/AvO//jcG8QHyBg24AAAAABYAFgAWABYAegDkAagCjAPqBCwEZgSsBT4FuAYIBjYGZgaYByYHqgjyCh4K6AvMDLYNog5oD1gPthAsEGoRLhJCEvITxBR8FRYV+hbcF9YY9hmIGjQbShvmHModnB4mHu4f/CEwIggiqCN8JColNiZIJxwnxCgEKEIofiiuKWIp8ipuK1IrxCy6La4uZi7yL5YwdDDsMbwyXjKqM1oz7jR6NRY1qDZgNs43jDhkOUY56jpCOkI7NjuuPDo8XjySPMw9Nj1qPaw94j4sPoI+zD8CP2I/mEAiQJZBVkHsQlhC3kOkRGBE5kUWRURFgEXCRiRGjkcwR0RHWEdmAAB42py9CZgc2VUmepeIG2tGREZGRu57ZWblUmtm7VJVai2pSvsuldRSd0m9utVyL8Zbe2l327jbBjM2XlgMYzDY+H1j80ANNnw8bOYxAw9mWAx4YMwAn3kG25g3xgazdOmdeyMzK0sqdbdxt6urIs6N5Z7tP+eeewIRNIkQ+q8kiihSkHqTSRiR8UYr3ApXW+HS5AevTk6S6Etfn8Q/jwh6BCH8ZvI7yEN5dE9HlzBGcUwoWVn9TOnYuU4SYbgMpjfgIii6iiglazImxCKHUp0YHMTocTiNH++f8cih852IH8UonYzm/byuIg97jHkNPOlnsMIUViq23ZnpmUXSmqbFytQibk36UY/hlWjm0AolXvQg1VNUZUT9RDRNa+lYZpT8Ttw3/uqvKHPxrykJC1NCXmqn4playk+OIniPz+A3kSR5EWXQAip3ijKRKLzZGsUY2+hQLotRuZRdyC0oMsrgjHgcuHV7usUfyuNPxZ+r0obnmp6C31svexarsVQzF8uQ6K5EnBHJCe3LmBI1b25/mOxM+NlmKan5xoUDmbAU1vXZ1QzDhN3tOOLv9MStRboD3ulR9BRa7uxlEiGOpVBgJ75qqwSFDKLpSLtXxpTaqybWdVc/9Nj1J157/anHnnrNw+v3nj2zenBpx+5ItZSMTE26YZZpzLRnWvAOpWIV3m9megEvYf6WiqdYxMat4K+op3g2jrV8TykpLApHYvCrhRtYsWQb86mAwW3g4BIubTkEf1crZTFoZvoJ59OVyrX7qWnS1944cpxpqol3O8UY1n4G/lLhgqsrR45Ygup4QmZMTl147Kjm2rahUiIIAvKPbz0Iow7b+Msfr1Tg34/o+uFDmMghk5Gf+BizNfpsfv8oceF3PoB+8Iex7nESLDEXdOEn3HI24zuyHJzuEm89+MEPYuVzMOTwIeCDhH7o1n+lR8k30Tw6jq6hN6CrnXspZigFdyUrkkkQYjJi60hGRJHJOmgdVRW6HsIq0g1VX0cGxsZZZBh4TYPf8NGTJzB66okHH1g7f+LayWurKzt3tCfHRkqFRCxkoHk8bwXaAjoRZSpWupM7reIp/vsYjnqBQFZHMRxfxDPTgkWtSS6fM9Nyu1QMZBaEN+bPTHKKmengimIcl20xLgakrGQJtYx6wQXoghLCZOPnN24SiakhQnEK+/rEeGvBHh7bp9gOKw5j5eh0LBGPO9P3xJX13SGJbbyhyWgm7nmupYV0W9V2uwRb9fquyXxhPq21q3IYNw40iIy9Ssi0nJIhVYaGyTcNDcwH23jzxjuIFFIJk/Ey3o2lcEp1jx657BOi7207bPW5pGVH92ProI3Jm85gvZo/vi+rDlkaZoq29GZn45+Xp1feU00spwudp6qygzNPn8Nys5Cb6xR2EHvvEdCnt976Gi2CrXsTeh4vdqLLcYtKchoz6QTW2GVGFF3qmr0FJMlMltgNxEys6UzjTNWVs6BxOkKqjtYR2JVVJMt0DSwfGEZVJWuIEB/s4upnmnCJuf4lKJIlKq+/wqW6F0iIC4zBBaZf/QVURFRymV8Hg1ne2R+oMZNp5sAFkKkz8+XHnz9/vpN/+s3PvO3Nzz/9/Btf//iNB67dc/Hs6ZWDiztmp8ulWLRosWgDLHoJhI+L2yKYkHapay5jIJk25gbEwnAsMDJLuLIppiCCATE3PlOjuMgF1YI7T3dPCwEtcnHsCvRUG+Q8kOgWJylPwiH+dwZncdQnjw+lClVpKDHXnPEYMcPFWInSzBFpjPif/dDKa3NZy29qCrFu7NW1ibl8LhxLuQy0vDg97oTDFMxtkabjqXwxV6wOSX7o4pHd029s2o7sEmV8TAHTUgj7G1+Op7xs1sfEwc14kdRKI5VEJTtTNbBvxQpFw1jfR5f3pdz3/PTM2Mhstr5n2izF4sbZdxtk12RlPBr2sjJRUqXRbGmfkdI0G+uVVL2SSZ2cyB9Yjoy8b2KkOWRkhkpFPxFxJnJe1gd3KpEimCDwsn+E34TfIPzbUKeQBL+LV1yMlgnmXg4JJ4dR4NzoKzo33Oz6KXcun5WoZJl3+Kmjy8MRKvxRUgv8EUbvu8XA4n0TniHW8fiBxwm414fgXAal5yiIRUwYJC4Vrcls10wJTsaAsaX/PdpyJ995cK8J1tF/avmoS9J5yfuX0Y9cOHz+Hz55dhRLsuQ9/Ilf/Xy8eOSRSVlW4RbhWwy/E+5ZRNlOyhXvDUfx4/zFHyIoEUNFYB+8cazYvzeIRwVEpjoF7mhyAfcfpBTc91gY7osJlmVJNsUj7T34L717fyFegHtjCd6ZYvFk3/7Z0xMBD34Dd8gBeJYTaKIzenh5d0KTCdrFscgKwJ0DAJ0Ielzi6InDoYf2713aMTGez7oyzExEcKPl53BgeGcmp1t+zANl2VQMrjMMpgomi2tPFdQnqnDbLNg5w3k4FehbhZ/7+5QDzynXG0zRZUUFdwPmJ2Ga2ewSZUx3fOVpgs3hliTjlKVSabgeAjozLGuhyaeZkiRE9uf2xzNtSSYP2imMa/VCbaevqPAKnnx4qOx5NUwdwzfoAtbiWUkO2TFChmt0ZcFXTEv7yAmaNiQtlMzb4bykiDl64dZ/If+bjKAa+r7Vz+hgxrKAVsjjDMtIfgLQGNCc5aAMXRTg8RgYOx+o/D4BHJYxugqmMMIx5isMB2NlwX1rqNae9toVhSUaMhf9JTF/AuDM9AwLU8DBcSAD86l4BNTgdapRKDz3HA2F6PPPF4sUHJCxRJ99TjJN6fl3471YnjNV9sw7CAM09+7vlzVTIbc0Iv6UyMZ3JF28875bi+hvABfk0c7AfYSpEAV4B2sVJNblVnnzmNc9dr4TwiDAAJDzOC+BCM9MCkEVlrMvykWlZy8np3+xTbwlu8Ik23CTtYhEqG3GUkMJrL9hj2ves+yWPAr8yI3vMAGbxP30MOOzdAr9Ij6N/hU5KNdJEzGJp7nmojX+9EfhHRzkTHP9LYtpCoRPPAE+opiEpC69VpIYU/5VodI4BbgJ3iSeUPhoiB/QV+HdTTQRvLuJ+IW5eloIXnvzTw/BGxsYqeCFsMlVthW8ZsCcH4um7WQhmhlJxdxYNuVnGmJuPbA5D4HORbjN4c8OoQZoPvw/giJ1/swc1ihelKEA2cxMo5lpcgpeAr/0RYlpIPIgQU1JIt80VbgA/bddACJlk9L/i6lI4Ozrt75OJslHkI/G0DtXP5Pm8ggKjNZ40BNaBZYJE+tj7pr5O3r8BCWIrm89N7HtuQRnf2LgMMbkbPckwUe5w7UxGi6nEoaGfOzLAv1F+3YbdL0rDDPU64M8buMqJeE9uUX/6AfStb3tg/FExjtPzdRwfba99Cf1nBVu5DLtWjYue5m2k23lAd5+5NOd1/z06V0RxvJvnVl459kLIw31pd8qjzJ7rPmHH2/m6goeitX+21umYjD/14EJXyQ/glrosY4+DtNfEfYumKUE4m+AyA14y9AqmA0i4JBFexPlo4BhgV3cPLvtCY8C+Pil8lPDGUcGPY4UezoAIgJCEvUoiQKchbAkAAn87YsCSIg5ibQV9l1PxZFCYh9AZUmyDq4oxgTMkGy4F4qFM0UFk+ScqyivU5v464blgCAbmYM6UY2Nv9j4kqSA7dEgwpIJMQCHARLV8O9jOSnk8NCtr5EqzMOj+OLNewCGYZiCOLxhG+IDgiSYAg1kW9IATREIBwiEA6oq2A8CpOsRHjrLawo4HV/ms8Onbwbpqqbq2o1Xc42tw/nkTt0xHJRLx+r6nZfZOrj57xucgMGd+VceR5lMz94+mspc0M93Mhjdf3Xt/PGjncXZ6fGxWrWQyyQh6nkUP2qC3EeKlZ24y/YuGgz+sbEw3sDpRe4xuVfnhxuBKwzQYZT/2UWaXRWBE9yBciwZIMnKTDfdwI9/KZE3UnOFXKW67ywz2mOvaXjjZZUVppdzETk9akiyEQMhibeaE7TabsRMLaTahkSiDpOi1w6cHG+YrDZkmM1jvqMY0/BIMsGubJjEXhzFx4pJNVY4OVewIpdX4qn5mbGlhFWY1LFpYXWyYELwEDo9XqPFrEzVUNEkjFHJOPB0Y3zH7OFcfLhFtTNLjaRt0AclzbY0idoV11Znjkow51dAHidBHi/jw53QLCIaWj2wG8JO0pdLRVM1Rb0B0qspSONRhrwGAYsQJRBHMIg83nB45MEuIsZ8timXFNSaAm/vfo27DA/k8vbhMsLgNdb7l7nL4Oa/b3ACBncmX3GcipjKrvSHS4eEPFqX16rlpepQtVwp6yzTwO1pnpDqyk8gVyB5gegMxi9dCY0FoiRingBlc8/JAyGmxLJ401qDmEKkXQQ4js1MVboUJwdT6T0gG25SVUKGrNlTpWSemHt27Z9atlTd2tWwlt57TrGm9xh4Z0nOxbE8Wgkn8/G8F6qxAnOJhTs0jSXwJ7H3qdGDRryTbqfdUMgwtIpVnBnKOmzX1Ph4Pe7HCo0Vn9VOrL1VwzNjzDsDt6JSqa6YscLRVnLCEqiA27nRW4v4z0GuDqDf6FhxCM3HOJ7FED92bX65P9EEgf6L8FXIg3wRJMNfBYa4fVEodnODhD7eJ7+Tsv7ylIkeZSe/HRGSmSRfDUg4R/VyLV6rj5QVlmrEpmfagXUQqRJuGCJdJkaFURE2ZSA2VQRInJkO+AohgzAfpeJLRTm+MDwXjSjUcVPyH1wIlewIVlJnfi5mNRZdGg2rqhUJRXwfaxmIC1TdGS6GHUtTLC/z8R+ViRazHUp8qjph+bP4NQ3XwjKuHPr2zwGOko/uTaiWY6pr5zHRKNVNWZFtvHcmqVqcJw+Drs8ATw6jv79ZwKrCfQ8HzaMa/CEBXucKignCvdmACF/pKQkYFe5c/b5Pbt45iiBFJcrm6C1jmt/TmAT37hOvgpxSdrY7iFEBgsJAfBgdrnteabjWTOos3YiALrmcNTF/cjNICkBRKcga8HNc9YqBWgbMbeDooO4FbqD0n5XTHLrq7Wc7pkSYnrnU9MxUSpFgymV/Zr5dbr73HhqV5/bvifilGJVGysyaKGZ9N5VangbMiMfBZuNT4OCSSZmRiJ4ZVSAiNo2md6ZWGj1y/8fC5MDiFT+cKCulJjGa1Qv7hnLD+1QicObrgY9TgDOn0SH0DzcJBju+EgRJFcRtuvQgkIlZDPHUkvD8goMDqSWugtWAGt94ZfKS0NgeOQWdoaAzdyFuvjpinqICfb2djiHCyOU+uRzYV73uVRu1WpVrIzj2SQjLe946sKCxQZ72ER8cD8J2YKrSc+MWjm7iX/z7k2DfiZ0YH10qh9VCw3cOVqLMmpvYuXu+1CC6O/r48kEjLRcLETfuRmvZjGKWdnpmtJAdzhRjLkQDuXoYYt9QdfKxlqwO2fL+Zj2R3rM2PFEZvTftHez85OV5FavloeGI6/9GtkjY8kLx4UR+OJE+tDQ/JOzl9wNP3wi6uQe7NyGEpj2OFrnEI6JwP4SILMwkXWMQsnFuKYqvHOqGvkN9ykEKhISnjWzSpl/1VTnT8z1KfhIB/sLr/TE9uuYr0iWADoSzd1NFee1WMvksPCMPI2Uk4B0EeLWqPzPjl8IqqC9mxc0gpVSc4mh9CUNMDhHbdN+BBqhOmlwQeUNGg6CnzU01/vtQ3rfdyNyDGQDvYVeeTadI2GE2lWptZqRcJhtUH91NJAroSXGY/jNrasiNV4nc+lmDmLLtpc7NQjCMVemp2TnMaJnQvIrTQ0MKuYcqEIQB5rK+vfGTxZA7pLu/jRVuhUCm1yEmrAFfK2geHUE/0tEP7prMKDK4wq4fjPHFrn6ISOltIWJU5DFgrsj61pMT258UQWJy8Dhw9mz3LA2ixMhwFaOlndX54XnPRRVcZr11ApF0BU1iXU3qJ15F7CgS/UUmgqcszmG/axUx16ZegnUMC63EP7nz0INJE1fVCib2xaXC0OxhSzEr10OhcSI7Dy7JodZpRR7VfED5rFXwhjf+13Rtfs3EKnMr41JyJamRH+nM3rM3IuGCNrwnqey65huTjWh8KHNpVjFqC8n4jis6rh0cC7mhquqCwZCy7Xqm2tyQG9OHWsyJhQ03X3MnV1NBfP4I6BjnxRxaxfhmFENk1tWyssIXwzB6kFsfxMh6LyMf4jkW6SJACF/is84hcUUQgze68UrUnIFDm9QUfFaQPg9GbaFtviraBNB2ai9DJkn4bJcYS8eEKkUxWt63c6E10aimk6aO5vCcKrJE3MPZfGWnawt5RnAzV9AzojzB2F8o4lHVNE/T98MhMfST4WgiLNlOyjKnRstZEDRAeuVJJVzwKjHPiC4cXCEue0t+5HWH9q3GlQI+tjBRAWvqFzKV3GKePh91vJxMZFWj1s6JB5ghUUmuG0S3JyrNdPPMjmUNK584/chPrS+MQwRTqOGPrtSjO/ZfzOQKubmfd7v8BUPaxp9GBoqjR4PZ50vLqOd3Bhedgwnf9rTH/VIU8QwixTwOHViRBuUJmRh5rhkPxRUZGdhgQbgZpMlhRulgNupvo+mRTDQz+nAvK4Wn016mmYpmmhu/vZmhImg/4OXg2evo0ZtFHBgIkfsYfMYtmZHmXc56HDt54gUIf4HBvAhPEdWGHSt4dvn2Z2+LBAlPHpJ+dDJVYcHCbO9lfrSRHWXeDrWoEslyxlMRMDWKIvmpgZf751xjh58+dUAvSa4k2+OzlRDm/0vAuz6JnqMqfgyZwKdiJwfer/ucMNM8oUXPc2h+uF2aKkos3kCeUsgH4ljDUnumkBfJ1xqmqr3x5Y0/l0yT4hIuvfQmm/9HMgwJDn8Z3+9rwXLuX/JfkjLhMvIb8KNKfgcdRKfRD3fM5b2UInYYA6jsTveYhhGTGALMKVEm0etcx1ShYwyv8XSnWKVT1nSsKBb3ayO3j+CWhCHMkxbdoT16Tzl0vpNZXcHo+NGV06unl3aONMpDuYxjmQY6iA8aPX50cw881T+YvegtrS5sLo1xWiLIp9pdH2njGF8SCA/URHw9HJOc5WYm6keJRqYWmTuinVlUXNv3bZ3nIXRnRymVreNY1V3MaCnizKVLsdGsLCeloV7xBP501JGcnQ9mXabhfbPx+NKwtmtciaVjfigDEFx3c8O13I4mdjPWeNyqlh2z7biV3SZh6WRp4/hgncWHb32HRsnn0b3o9ehPOtq992gABLWezM8gTUe6hsDAMcJ4kKjCn6q+bmCkgKtF7GovhxDlYi+tdW1j4Be/h+H2luGdqTtGQviv8vD/zitsjgO1cm9cv7Z+6cLQcG21NjTcKJos0yiz27OsAfQMDO4SFqhlMzvbB62Tt8PZdqnNeul7fipHuJbamG7mpXrX5HciD2FJNUOFZELGpw844Ynpqx/et5CpZnKXLukJX8fUoOSR11dH37szg917S9H7HiG2/Lo9U0SuRRs7Wp4M1ntubmn1R8+PFj1N9tRIsTARzWg0u9MvD+vhWKbYiMUin7U0NXr25IwSufh9Jo01v/zM8RtRXTKqEpE0GeOWw97SPl7Qf/B1FfeUiU8vX074rWeKe6o6+CY6trb3+qfzfkLHmvzsO/FsFCs7mysrR2OK481duig7VS4n8/Djl4W+nkKPdUwfq2TfHhmgY09fMzwhA6DhXuBHdBWQFV/dWZM00l04yPA16cd7RFvOi5WEhIROHd/dmZ+batWHsuloxNDQQWlZB02c5rFgkBjmbGkjzh2Y/ogba/kLQaamxFWOU80syq3JqfYY5kUrnCFAKDQUV0hV5B0X8IujM3qIA9ClLMP4OCEyLTLiAsJRR8OKTkO5E94R1yE8MSIpcofKf5wvSnUTrCFleggO28TzmqcuXSJEp0nMpIYOjukCT6UzsvGrGy8SplA1Ac5DpSbVKDAhJi8enNtJFDUJ8gx2H2Ye50mheOyDfCEBsBAi/5N8Cs0COr0XvXDT7qIiPrU5EH5GZLYuYbCS5xFHqPD0wWqEhXsplzvJ7E0yDwseABqhMl+06JIOnufac+HMiaMH93UWptuNaiZRVPlKJ0RvObyZGAsCORG+KaAU41NdaDqPW9z6uWD+pioNPIrlwA4WSwLFeq0lzM8rXFc8rn+xSQ51QE/+TGIvvmg+5BFmX1kwjPZ+5j60Jzb8U/dfxpjIsixZSikmkxcwm3EZwR9dYCtuOYYNiewghw7rEwd18rR04SwulU7vSTtTB6vkwyGGSeSM6qWdiSMOJdqBqWh0x2UHuA3/UqaGQfqYJpEmX61gsnJ1hbtFVfoOTAcJHWlpvw63/oH38HVjOXz/Um2Wx4YfvPV12gRbeRD9yM0DmKEef8pd2HeDu0+Cr/MiI0AqkhRdFfFcP/Uy8XLEdp9Y5FyGb6MDEgTujYeIoDpnu7SYp1o6ejU1Wh2qF4OgvNKrFgqs0bTIkAsl6NYYbY3LuRnsL8nAIF4WVpmanpomn19YeuDSRKGu45HJlWNvTVBmRwlWUs+cTBRT7MhDnkbCV0rpB55wiuryECVhr0ywbOWHgJEOIxL+u9W1862V9QdU/8LE5HMnQxKT4yefizJs3Hd4uBKNP/9kzT9jYmuWhaNVrEjPvQCRKDy46QscCZMOId2n0Ag6gNa7OJLXxvEAFQXrUwMq0Nxy2t48LUQ/CjEtFut10laR1x4p11YWiowlhaT38hRBgcG24j1VFeIdAUMyOb3pVuq4Egg7I38qsU//gnLygcUdazv2a794+YKQY0neIsfDi/mpieK18Zwh7VvEfi6di3KR/gEhvOpz1564/uDcsHk3gX3p52Q1PPnOK4eHQvtOqEJ2X/ovIKPTMHFfJZ+ACOqjwYwtgsGl4CnBk8IEyNeRriqqzoN/pCroOhgCVZdVmBV4Rp4NCq0CjELGeRMbhmXAzO14hQsAnzFo5XrvSpvDPQPsOmflg+j+ey+fPTWciA3Xy5XhcgiccitA5zzWmXZFNp0n5Dm09L1gIYif7/lrJjw2THhvKQnEtseiCicbBanly4mT/SXGSRE/s8JOgMTZoZhcKu2XtEoeYK0sEXQL3VIyMMIGXFgad9enZYuSnTlvKZVxKKVuGN6qkAf9chzKZDWUX2juO3Qhd6ySrepUskCU1xnd+BdFciwZGPP8u3HcFNPkhAkY+S8RhQHczhfHawrAUIV+i+JQeJfJJPjz2We4hZa8vBu21Y1/DIEXNltDVxIEOCttMIIEHzH5M+Djw+ijN4kok+khMoVIROEYFzSMXUeqhjVVhMCayrR1HiBx3A4xsC5KAozeyv3U3UYCW4lCyXrvEpvjhGPOYHT50rkzRw8v71uYazWL+VQSnLOCHsbX+ArfTHFAP3q8LI1y2FzY5CTYecHLYqVUhxgmyNWLyplFOhnAaBKQCvjcAFMljNfA0vByeFOHBC+raRBMquB/CBipAJJsTJN5zy74OERpPj8+78SSBnhrXmZqK0uEUxkxZ3Y8nw8VivASxImsFfLHsd5TsD4fZcdUBBtlhci6PByfqvI6FUV+29shNq80qA7TJsv0FpIURS4UUoy99c0WBE7MiMpi8YX7i68Jf3EP+vuOVQEocQnL7DxGMu0ys4YAXkhUuaFiRYN7KowvkvSjG56K0+FSPurZt5cbYG8OSKCet6lsM0AGEhld3hzIAXezR8iDJoAm0vrgiH5mUAwVyasURqdPHjl8aHl3Z2aqWS/mE/GQge7B9/DYSS6+OhczNeisguTVTFcAesE7wOmWWBsuFUX0C9LF8POPvPvlXQ/3XDsKKV2+dGzkaJgZpuk3fWCUEb0SPRHVQHAkFmqwaVBD2w2t+h943ct5oxT4sZ2XDh0sxU9eaw6FRkYUFUtC9bktdkLM+n3Zdrm35/aXXgSf9V70+ZuTWO7rbQPmzUKyta5BZMpNraqAsIC1deyQDp7dWIu4YVMKbG6A5+4yxL5jiMfNdE2cFaRyYI3F2G1ogXk81/1e9N73vOvtb3n6TU+99tFH7r929fL506sr4dOV2XL4dK3sDZroQbfHOepzQ9zjSgAFBa6e7mO/TaoAnXPsAeY5S+cDLMK6Wg24ffAeDRFDZcmkP7mVrGfEe85TAvbt3TUxp+qCle60ybS44kjSM8/svJ1C0WhmKCbRFygvB7fknHABVPPOJC4l9O6F8Z5nnikUqazoWmgrRc/Eb/peO8S6fFdo9t5kx7bJ3zgDpxRJjQMXVPmlL8qUL+eCV3DBCpHepQiGf9/1nEoGTwbrtRPw499Afnai6zfLPEboyk+8XxkaWuVmL8CMltQTls3z9sB5Twpqc0iQQttyQiythu+vVe+fCHBjA3ddcEvEsLHuCrjQThJgScGSYp91PPsfsA4367FY4Frt2tqBXAoUB5Ni3WSMvGBYwz54PAluTL1LyctpQwFXlKkkgJ3ktSb3mXwNmk8Qr9PBEtHoS18ET0kVKeRSfhyiJhrwAOboyK2vk+swR/PokzfdAd+Y5auRSJJvDMwVTwlf7APw+rZUdp8q0Yfp6R6VmDwJi4WzPk2nsM1pSoWR5EQy5SnfjlYbmql8X4FjS1FSvTm9whJyQyjwYi/LH+T/RBUp69XGwNz+6klPwwTmj4RHLsf3WTYjmjvM6JtI5N4lxZtfrhS8JC7FZer4FVtOty36RvKEDlGtLSZWo1Fw8NhkGzF5+piO5yYro34kVePoxifaXEXBf426tmsN5vU96FOd8Bzc8bXXT4wKuAwxR3eO8xqTKU9kqnyZFVBGyNRFJG9Y3Ug/mOXb6OytdB4HJFlxStABMl+/nQDmr4TRM28F43T5wrmVg3v37N45O1OrFgv5lO8BAHkPfpd9OwB5OUvFJ9nGk70cXa/UTAi7wBmBJyryEJdE/Vh3WJBY6BYa8cQCJ/OsnqXqVi4Jsv3OnTC/a4fmVeF0ZGGJKhX8U2+ekojvKJiGnAOxlmdrCvXY4jST8JXLtLSYCjUivDCTmZkD7qFIiHD+G6OTE3RhETNT9mVTi8ppYf3soQuxo5sY5k5DBUYHrNGHPvL8Q2PguSzKy+HAdfHErQWxRp2R48e0ez95APuAVMMwCIxSyFGS9Pl3t9sSjo175xk4FyxsnlAbEWc8CbKyiJ7tLVDKICYyukE3IwmeE2fnFcyY1S8MuZPOHqDzmKgR7pIgwhcwwJttIeDJc7CVi2iHHy8/VSuroF53d1U9XRuwZF3F6vomOF7axr1YpSuJi9Eww6S6YKgSfk9nb2zv3rykFNg5TJKZz23vFwA3pCBkYxKYsP9OJDly/oKlaYS+hMUCAc+j0W/BvD2EPtgxjmVIoF39JJqA72s8PAD8rjKhEJpi0J5qNbcS2bcRCb1K8RyPqOlZv+Ps+S6eP33y8ME9OwC4NcqlRMx1VIYewld7eL6bads6kxzGRTxXZHG6Xr3Ydw13KEtfISPdOl5SFeWeA3QHLHARkU5YerY/6VeuUIpbHzsBiBx/TtGpm9AKjL4gacNpHtkrVumcf9g1uaPppYVe2PgwZm6EkDbZvWvBEWSh3MHILqxLCQBwJYW48iZ/KHnpzyiOvPA8YLPAT1Od+2ke44LsmwqXfTtQJFJ/6SfhaSVyWL6FNv4JA/MDigGcdxV9/4uHE2TTCWUY5a5sDTwhVwEVuK6sGbpGg1WKQAm2ENlbiDy+lJHiJzgNAuG/7Syw0APxv4qurl+q1f0fio5OtcqmgGt8uYIzLtKLwERmO4e9RSmofhMOqKsTvOgyYKPQC8oxXLf+khZJP3HqWaTYB2EQI9jAsHfRsYKwPOcO+IScv0AkxQybU7s0Cf7HjNq0PqTqaZuoAL2cIc9j0sFwWdOJH1baWf9h/PQ88Iv7dY5HqHPAOxRVVNMCZqkkC9GaBDYI9P6f/hlLVnJ898QfGDkqR0JMRGCCaabuqBt/vv8DlbKivO/MDlzaUGlOAiQBjk4iAk4R9MMQf3nk1yF+mkBv7C7jI77Ij7p7XweW8ZuDJ+3VwWX8ABC4Yt8svtyn4auTcZ6nusvy/osL9Uaer5vhLUml3m696Vi/mrW7o6bVz12QtJmxzj2ULJ85cmFs7NLSgefuOfq3B/c4/uy14rhD5tvM9dXO7PJwTsXk10novQ8eWHns7OGMs3TgzU9/eWf794+uy9bl/etv8zOrVyAAtmaXn7p0ROU5tRn48T+E3T6HfrBX1KfBu2l0Xd203DxFgtiarpBB230npb2F0guK+gic1ngM0qW+jSQQ4COre5fgKRbPTFQa5VrZAAi61YgPRhIxv78OI3awbhciYF6QGSSbRXFxdzIhmFy807r//M8bZ4phL7G+M3H5TDa7He7Hf8F22QUP6zIuue6ufUqnnAmbGBvbGn5M7N35oXK9dcRm+Pu+T+VFln1oT97El1xV8t79+8G8lDPLI3GXNUVdyg/fWhQyOo3OoHsx7YTuXZqhqgKKADC4a1ImkaRiVdRmcSSG+GKYosrKeq+CS6yEBsLMK43cvqt4xZF2f2RicyQX9/G7jlThTxUPXiEY1xm9Y0ivZvz2oWIAB8julXvWzh86uDA3PlqvDQ87Gos1ZFErNDWoKt0cQreGk4k1iJ6+BHsUFVbtLsnhrQt9/TT4DFe3YOGWJFcpR+u14ctCtU6Dtl2ZcpUI1lYPXTew5EWp3ij6qqRqRB89K/3tzmbO9xSinx1P61JnlpknD1+smKO2hH88mUuUi4X2F85mRj3wM2ZXBVViHU/HRvdGlTdff7Ils3pVxsVY2tCU7H8w8f83vDcSHTGU3e88erzirq5r+OiVF9vT946F1VKxliwE+e+ZW18jfwi6ehm9EUc6eglwXxuCjZ5YtJHE+IrADWTCf0y2bmzqr6qAymlrIZ1omhVsNkC97QL1lx1rbxnr9ccm5AGh6o4lMMrkit69yN1HdsbuOogvzlP58paxmpCOLEJPPv7gOrz/5XvOnzzGM5A75lqTo02wFxZIysvai67FFUKzWSAz2V/N7aaXebLybgaFi1BgU2wAzdHuWsrM9Db25Cc+YRNtacVpPCOx2ZAV9S1HA/NgTWRkc+mQ7UwqS4v5woCZkWSJRc7G15IkNTzMZs2UC4YG/HvESqZ3tHPZYkjd3s6A27SOThby5xpUGtpt/jBJxqJe2dBVbXiK4ZkZb8dSaCFM8DvefpsNGh0qqMIMZdKHjkyDI7XDrfESx6QrIGdvEHnKn+voKfDrBzBSelLWzyAiBUk83z+QoORFjWzLNpS7Utub1EIearcR9tOOiOcZz/aIEd9m0nHPnzt5fHlfe7JeLRWScbEsOSMKgnv1FlW+QbRX9x1bJGLtnsfRpToO9pFy+MPlQCxl8l203eUwxSLcohTF2nG3oIN9ki4vuUptWSc1efFgJJkLJx7e4einalYiBBachOYodVTAvlh6dPZCMvquGVtm4XPzhaFrYxrRTCkCHCbmPK/ooPL7dywS/XjLiO2M0rBvursOjSxdUMhOO2MRbP01RFaSpMiJzDP37UyNKLXMYjhsFWN7HoqHlnSiW1IUmEb/hu8mceKcX58Cx1EhH0dH0dpNg9ef9deJRW0/vcFwF6SAIxcpHxSkijqZHgX4Y7HTa71/nmeEOvpw5alao17hCaFIsE2tMBmLxjyx2xIi5GDv2oBx3Qb9B70IBPYHtSz1Mrz/p0z2yAr+NPjCMvi2PCVE0iJxd2pElil5D1X2D4uA162/LvsQ+EewEvmZlLlvP2Uj95X8vC7hmxBc/z+OIoOpwuxLfLUdJEbzFjLZuMr45uqX/kAiVOkFsTwUkwiWQziGIwolzeQ9SV7l/AXAhRy7n0Wf+oXdmBwIZi+ldtOsQMlNqMh3a/30e/0OEnuTJNH3uAl+St3Mwg4QdLK3netn1bV+Vj0B2nhw187Z6bGRQi6ZiEcsE53FZ/XNnPorZWLJQDmguwXz96K2IAzulTLhNx5/QMLX7ppWDTVCKQvL0xP7F+dT+EoP48+3Tuh9eC9fJtFG3plqx/1Hj8U9BX9gm0zp+CcnH91BC157od06JeE3WlmB6XvpUkD0+sa7lM50yaybwd7j3wU+XQU+LaMXbnJA0ZPzqMKLlhFeA3TR3Uu3md7belIg+US/Si/CDwqCbkWhSOalwQXRJ/gpvh1ZjENrggoHXDHK4bXpUvVaShRB+27U6+WQNie3ny8FxyGQCyXcIQX1RHyRa7I1uJaB34br7343pcMG5fNpZva2Ii5hCqZap7Tx40rUk3A6TYYtT0RKMJ0g+6NTjzkBZ8wOeYBuZCX81a/LKovBJfhU9lOoky/9DER0eAdewhYDXphUIzIvXuGs6M2txOf29egLHfPJB68uFDJJxehPcQqYSwmnxWsak8GKwzzzNV2/vzyxDYktSBJGXxmC4z1CA+a8R9AZgt+Q8URAwee9ew201iPvTn4Bo8dvrN978cLpoysH52dbkxNjoyPD5VjUUtHr8eutfqnedpnrqOdGg7rpLjM2dSFw9Aov0VukgU0bZGd35RGocK8OV5RjRkU5dptUK1/zNMK3GxRXF7NJke+OjRrYfSo3HQY+FG2b8q4dRnX2eljTZAh0zRlD0/Dk/v0tgNsJUzA+lF9uuza8sT6fkaSNX2PRMCOqbsfXcnuKiueoEIJK5GmqiuzeQJLcwmp845zzxfmr+eIQDVHJg/iYao4tkfDXv47xhWfecQ/PDZp92RDZvhFVeun/AOj+d38aizU/OfemRazIqkReR7Rg/WESfMucyAH/aMddmAPhOwdgjbzjMteGXhI4q8qEp6AUFuSADU2ojKmTwTzVVip7C5VIVKXFGVVkIsn6baeB8/H3vOuZtz1y9Z6LJ48fPLC8e3bmh6L1MghwotEq9kszgbejpL/kPJjbCDw8i3n+5PQmfxdxe5FM9tK+m6IiSps4cOxiwOpA3nemd4FekV9Qm1viItWx+CwfapGH1iU6OkK10aTQUKM+b9R1sxQhOjCfGbpSIh3yTqp4IYOK5AdABGofTEylXQj2QPHD81Wn9TZpdkbSRjM8hyfRdPhQ6ogtkr/MpBbJHsXNxjkiFflNzcWZSt2QTAtoW/SNT5rK97+NalhkT3imRHNNcIqaQn7lJyRDMeDRQUx4LRqHAIT7Wp4fSxpzH5I/9h8lnZ/mO/IxHHRsnkDUGP5rAFkPUUWJE102Q7w0AWTkN0FGHgEZuQ99qGNemJfBlra4ieplwHQtyDqqIuvIMUgvXxnUS1fuJLIHiETZdEocF0R8v9mWszyJKaHzZ8WawOLcTLNeHiplEzFDQ/dJ9/IkJtqS9LWJJWBKP1UPbBtYeGzzugUBIQOp6vvKvgnpFqoF5YW0NUm+1ZwOCgh3VJ2n35BUQopm1nr+cwn8p8ZDhHJMVi2WaE8RdbQI2m6Nzr42rCuKHEnq+hnyWxI28iHghcRYiHyCikpCWnZ+/EMPJKazWCO0v54oAgEDp2diD/yn/wSs0okZhgg2WIKWeM3hX/6bTFzm6YquAgAKdPkYBJG/DnxaQB+52RpYSyxzpE15oC6WBa+LQI0jc7FPSUSBQWl+/eWI7T6xKNQv3UbHwTtEOXR9gKrb3WMBzQ43YjNV3t1D4G3PwLHe1gcANLGgGiTfjf5dtIRLrIdXApw+025Nt8ivyMp3v7vrSmF3MZtTZIM5hB2X6MYhwIAEfwUjrB04rBwYrsQVKlkxvChJ5IvkUzI1LbLxRxt/jFWnUb0SU/kMb/wzV0jKYmCMIngKQ5Cq1ytHorzAk3wJBsJrHbzF8K+Rb6K0qJYngBoIvRfxhhg8XuFZFISPRqeHyiLrB6/AC5b8bpHSVNtdwt164hK+9BVczZngFNjcHJX+QabwH9k8Rb5A/u21oLO8Wl6CO/93iYLfD5uCn7e+Bfd/oH9/XjYqQAw892mxOQIeh/TvH2u7M3xJt9JNn8CU2r0+IK2T29/+vxH6g5t3/7eJ/t0x+CCbOORFlEV2x1QxOsC7dhRxt3UUXHYsqALgG3P5FiUikp4xnzgp7tYrpZ1WXlPB8dhg638URJuSM2D4G3JMwuMjY0aCKUAW5Unvt8FrvF6VAhleu/UFUr/1VRTh/YI25/q8aB1yWLQNCZ8UrYoqQQuqSQhW/Ilgn8x9ikLIn7/uUQwaorq/tSibEBhD9CBxUIRFjuXare+QHP4cmkXH0Rs7OsTFch4z3Nt2P4SwzED3bnCdcjjgF8FSd/Mkt+Ji92QVTkNEj/h6cEC/PaXYBHRg/4751kS1nElFHDSLZ9Vg15dHglRVkL/qqkE/Y1zqV2/2W2+BrwLv3UsiZ/obiAJsin/XjC4DjgqZkQi4WU0Ow7TGc7HMeMLiBXugV25tUg+fnB5Ol+OaQxMLTjWX8zPhSMwIR7xMKqT4Cfwzjr/xVVv1M0QKease5uvQ2DqTixXCGoQxLWYdm8s29jyWjLhKVHd2Ngux3XuPpdQxVzPDQ27k/FUW4vP8mlvfwX8I8lNCc+jJm0kI1jatkYDpkgSYO9h8180sOv1+bAKl30Znb08HM0wQn91cJhoxdYmiEinxGY5MLuFJmE9voBFFkAWK9CvWIt7g/n4O/mzCPoqX95uFITbaWNg/UZ6bGG3vIw8zIxMFNy+nZ0NKLe3FXGJUNbtWZeEUGBjmPvuCxEpre06dWCxnT+9NOvgzgMO4a4689IUTxJ4srR2s+kpTdua1Pa/hcv7ArX/Ef4Q/i6bQmRdHENncSpy+bSuxw8uExXuHiYjob9s7vOX8+V8qzzfrLm+/wtPjg2XBIhvm9/Jdm3LVFbzu3OCPxhNRZ08xbuOW4g7lZmq66hFqTZ9L5OLa7C7ZXt9bjOtrLikkw7EifmuEMv/k/AU1cjBMQt6E6UmyvRSRiXFmdyq++oaEBUMylUi47KC+/s2AXHTQOfR/d4w2JkoOlJX0wMQoIoqqEPVGwH3Ggnha7I4V2UXRNyKABptx3l1G2Xcb1Wn2BnCyoPujGLkteRCnHzuyd/eO+cnxylA66YVB0Dq4owtV5oJGb9fll9NkrsgzfSmkt6u06JACGv3jeP+y+QE8qNKydKdKezf2qJFMwSUt3BPTcE+1lVAuFPKmdDrJxdR56TMskqM9zZbc2/X6xJst4kXl32U96d34tZ6CZ+wsU9ue/FtyKNjT+Y/4j8GONsG7tzrjCMIhCTGJZ0AC6+esdn0kDuNDCM1NT4wBcWMy0Wyr4K5mthfL/hYsXiTa7c7BSjPtfmqfL3f+rjMl2VHtxFQgmzvv1xKL1UnVutDJZ7FJaXVGo974L/9mPu66e7Jm4mJ57H91ikddTKzdQkCXbVydPFvOd+7n6b2hHMxSbv87/AyLHUnpmEZigf/921tt/AXyeXQK/UvHAHiMamVgAJdUU6yYaKCJ2oO8NyPgHq6Q6hqITXSViYpzBYu9gZIk1DTZ798wEYwDDf4eBjZfbqB914GdkTvGqAhpKlpXeKE5GGWyPkAvGqqcPF4vzw8PJcrtUtBQZSawjLzgLytKakqb2Ky/hZHXyAjZJaIzcLtfRTDVb+fTb76CL1cishOSrFS7xTG0PD2VGrLi+VxVdkqj+XTYx2ralS1b0S3qYZpONJtAR5WRUZ70i8UyMxBdjRdSYZ9cycaUmLbrBQzYGQKjFz43e9/EmEkq+VQl6ipS0iFyzKmu2Guq8QPPEiAyFSIzX3vzcJtTZcrRwC6N3mrhb4I8L6CT6J9uVjETXTos3jtD7e1RFt5dUXpmt+uORIs40egkKfe2Ko+o/Z3Cr25QKViCo3zF/cbm4FcY96qGeINDOIdjGK2uLO2cnW42hoqif90CXtB4C8aAkS2IiYUNIoO2a7PpoWiwk8WiJErstOKo3evvZe5uhwwQ/MNOnOc3ytlwomlgG8wWJbVx1xhr00udfIJY8lgOS2nTiMzP88X/K/PPle+fMrVaWcd4QnEa4Boy6XzKPerBlRRKGI+V56Z5RrhAzZOd0z+YtymWqxirAEe9b/wFtWPDk7sTpS8cpqEpC9P/TLVoC6u56iP7gl5/3yF58D/H0PM3lzFRcd/vSIxvIr3R6+ba9zubqKPXSCssB6uf2w2w7zIAXAhBh1b27p6ZbtSKuWQ8ZIALOUaO6T2sIiqlt3TN6u467cZIAwhmALB0N2aJJNUmsBEYpjSkTnTaO00nEwZw4EaSEQoxUxgUqbiqOpWmM6ISbKRVec+EoadSumiAg9/f8yHcYWjGu95HWGNmIj26cHw0bEquk95lQgiqao/HSbMSrb9lWku4cgFrp738w9fzihUOkdM97wF6tQp+4hR5HzLQMlrtHLDhUfEKUpjElM2dvr0mM3zmVNyfOiRmLmQu7ZyZqg8XIOI3l0PLQ0WN+d1+nIE9USZ7nRPuOmPd/Qi9sLJbbg7/fK0UC8fKftj3hhqg5ecxcyJ3zBTF55liRNxEGF7MdZgUb0N4dTY65AMG8t87CuaMfod6jhcemJ3RUsii38FRx9Swm97h8M0iknG6bFGwN7f+AnzLa8S87EXv6OgJePhRHDiXrtHpzxFEFvdvmaI+Br7YN/OD5EySr78s/fmOY5rmXnNPzR8aqfH55OXAm/NJ++2x+MoZX2LYUq8K4tlbb9jsscXnFOuFWCRW9dzoZ5kzeVhXF31lwkiHsHNqUo2WGkMw1Rkmp2I5R1rHNFYpeDYjPGN1zhvy3VjB3/g9RpX8VYtMha3kb9Yfa5PxZZ0UcslSxClESDQ1YeIX9JCVH01WLR4Rcn3G3wJ9fhi9r2PcCwp9hhGZbqJJnoeVpTu1OoifiXCXbI1XGoo2ZHcZYN9lgNDq+6/ec3H1YGdhYjwasUOg1Q+Th/ta7VH/Nu8nchzVSn9reRfkZEQNC89MCwDZmu/3vQ3GiCYf1S5S3Ebbr9FEeHgiWSqkc/mME0t5GpN930+MZNKKzG5IiqdKhmspjMkiBavIMvYyw7ZTaymLckiWcDyqbWMCnI1HqB9qToVjlVyxEXFieRkrKpXs8EQhIVGCk0dtOxdT04RGiololONKGp7Y5bLZhlZTR6MAMtZPpW4zDCLWPwu8mwXejaD7bg4NRIhZiIeoRHqmlUeAco9rAr3fhaC3+HO+EyaoVu3C9BEywja5sT1M7+7m3zqjHyDWHci71sJydkdhywS99BkzdBuonqzbzHvDt96x9X1Xb32HngSM8Tp0vHMkEQlRg107JqTVxAaor9G3iLpKeAzDXTrqGkPQEmEO4UqvQ088+sjV9VoyW201K7EK314XqUwFYuYHNTE8WxCocNebeKxbCHubaRSAbYs7YXzdt+3e9WBP4UvF0nFGzExbtsoJW5aM2felsdY86OgPa6aTDRPsTGWobApDGp9IFcqjoOxS3+tMGnoyT60dZD8msuWn4iNDuhYcOYpJNKSFuTCFJIJ9JuvVCyFMfSesm7OTOLFgk/tYenTnsXGPKDhyPbC6JyreaEk3WcJ4e6vrls5E8o+8VU1lVJxkRjRpRkP+LqfwUHBoTrWMghU9SYjc5Q/h/LmA9nf2mFiVl7EEgakGv1FZ5RsiObOuc4+O1nCQIOLNCBiWpLDEOXMBnY0nU9WpRqXaa3/W37747/PtwbzPiL1TDcwGZt4Jx2LZpRghoZkDrVfj5fvzXR2mPrUtw+lPLzVGWrHEFJOl0Myrcfa9WZU/+jFqmQWaji+JOSToAZhDGebQQVXerRh1t+c6qwPddOPDlQJPWfZa+fVfPTbQMr6y+WGD/3Hg8N6Tz9zj+MvHZX+uPJTNzabScS9LdVJajMRtjN8+d2nl4s950sWVVPw1v1FvRYfOX5ocjXtYWWjOX1B5YdqtRcLguVbQZa59OwyisBTm/TbHsLSsw31UpvB0ANe7Lm+7Lf3Dm0UVLufy+bNHDsF1loerpw9Uh6qGqJ3oMjqLY1vyTSJPKlaQRPAkOocEW2k2u5xuVanY4La4IPCysOB2vJgbUVSwWzwtNV111axPotGiIiX48zHdOeDujagQDjCvKEtzO2jUMHoq9CZzKj0dNr1+3kod6rOdFBJqO8hdZYielE6ekgBOSA5ESoSX6UoYG+rf/K1u611d+dnTrWr6UD+hVXy3yOss4u/C/M6go2hPpzNlEgH0er1bRAyE1nhpc2LLdPIeSQtzE2P1YjruOoaGZvCMiEWKm98ciAU61G0g3NuB0d0m2t+qwZcGFRa5SzLlK3P7pdC5heH0TF7TtZKh71vuzpwkSYq1L5nYE9IpX3cLjxnM97Tmk3fmUIyLuxPRlbdmIuOazmKqtvGNja8EcyV6R8jUcWRFOnNMKeAnt82bCBuDvyLizNd0dB0TWsMS66UUCohQRsmDgC64H7ge7G7vSmO3U0oxoOEZ6rsRBfslFtBsPF4dKsf5fom+e+hN5kAf1Kle5nPA1Nxh4yVtX8RMFdxYbaGYBBCg2DlNGq+pxaIUWBRPlWOJTXttVs6H8LyZ0ZVGOVWNOMMWJTbWjtkvfL/WtxuSvS7MhujP/B38MZiXfehGxyC8f12126jagIkp8W+zIPlBUXxNgx4KQWQ92H5tKKDiLRTuTna+Y+3bs7RT7GCNlRlf0Gj3mox2O6zFNr+zUu1jXhsXu/LUrT/rdurqTSVeLYWczGRMs9RiOREuVuLTB2qlgqXm0uFYQZe1+GQhHstZdr2spS0tN3JiZDEby+D9uYishxqRsG/yffZOcaRyINqwnYwVy1Wj4SFH0lKmOZ7wbVvT5FA2nBofWxyppUqbGOop8jjag67eDHf3xgV9AUWDbsCyVJJvKIxwISG9RQ1RkpfdQgLnOJWE6NWAIGjouQd1uHp6e8tVnraLdL88s9D77IEoxvWCMrqSYknRAGAJreuVV266tnbpHkUBGamORRwONvMk4uGRUSV07xAzNEXGIdOJj4ZlZodBHA0rV8tlh1vlEh7Bb1fE+jU+tjulWhn1EEAERfJDP+SPD2XDmMGlJEWZbxgSkZ1EYiIRbg+H3v9eHgQJvz6PP4uOo3d1jAwY/YV6t9r6tt6oEqgyvh6gfG6uhOPiS+sDhYxjvW6KdwzbfkQwjcfRseFqvFqN1W4DBqJnQQ8OiGapMKXBylDXE3ZX88Q0ikXrAaSwqafHmRSp5Ur1URweUtnESCG8wl39KqauodihMAuH+e6kolepxkIUG432/FLIicbsaCSIark7kIx91Vyj5o/cN5KO72vGGMVVBYDSxh8rtssjwWrTwYy3zwkfz8Vo3NaN4cXZoZGp+Z3NiAhxuzj3H/E38K+gnajeqXLQRKh8A/W6LTr9ZqdhfCgxU6nW3GDD5PQmOuqFSQPBZfeNeVZ4YMrE2hfMCn5HaTQeyTYSyVx1aU8k5/ffC6L13GHFUYs1HM7q2oJq1qd8BUNU+oxXbmQqx57aO+T5uxYK+04t1SP9OP1GgoyV/ZHjtUr6EDFvnE4nKrlQV5Z+Gd7tHvRUx5wBoz/Cd9KTnjCVEeE9ZKQbwSICb9qiYJ6N4xgx8H9hJLq9yJTv2rrRp78L6fmOWcskm7WZSqWgid5WXea/4tSAO+x9JYqradcn+gs4QBeBaRuccm7R8FvKC7v3T2w/fWWV7tJYLiYTTOdpKJclkYIB6IFmY4W8DlMKPIimk6Up1x8vRhhtTC0ttt65zaxeG3OdE8SY1h0ak8NfZakMO/zMhOWbmTLNNJ6u8rm2OHfKZx+dOhhmMcuU+V46mHsMPuIy+kQntDhKVMkN8d51Pfc5hVRJltQHkcw7v19HBpEMcl20t7tfw72w3VnVuce8iPmHv0Sd5kwwDmT09oEQY16/+8jznRxGZ04dXt3dmZtpTfCWckEjK5miy/hySBRxVrdmyW3s98uYuxgfGNjj0lbXvIQH4oBeC7q+QQiqOQ8vlKvtcqsgkuZxXUsNx+g0IfVqMRkiUjisylo9XqvtTyvG0PDQZCHlxIaYqocNJeXSaUqbutrKhlgYQldXyzVyxuxso5Sp8tx52pTsPdqXTC08UcuOaES18ovh3KxuFjlFxKlbVFGoNar9oWPbE8TeVZCByVhWR+wJ3xG60iI62N0T6E87dprbXcxws0KCZuR8sbPNjShWeFcSicmy9OBtthe0gq0BiAxvSXd1O81vGcskYWJeeXBndtCAbx3/8kO7La5PoOPDtXql7L+MKecN4YQlp/3PaPWjAmBmP8phr8aW5+pepcxR1sOpp/cOz6pYMBtE1ZNi2UaxGjUkqVR6RXNeyn/4A0YqQzbOHXmgWpC17DBnshOiBomVa7uSIV5sdZs1x2ga8MUfgM6dQyudZZWn3Pj3m3iXxRt8ewfgTyQhcIRqUPfTXfmTZWVN14hoQAzHz6Ez5eGhYnrU9+sGGLFYL9AdaC7c3Svf3fgTfDRkgfTNU1Cs1+tulR38hF6vNF0p7WBK/Zknxwp+vAwmmdoRiUjOWCqnqn4yAYBDj3PkbDhMiViN6wtDquFWhvzCnE6ZrStyODOTyZiaYae8cMj2PN4/g0E0vfLWx7WQEXF4nZ9ktfMRImfSfCmiaoE3lEK5yNxr5qs6xmaomdEo2ItIZjHjUCmU9jQrb/J5/Cf0e2QBL0JUPN1p8ZpyQF6ywLk3+A/RfxP8I+P7GI9iVB7KJCNhO6SpgIOrCliSclEUvASZHSFAfYkTha69z2hgXbJZdDKnmmo4HndiLRXCG+zno3FPMgFXeRoAyob1e/DCkQmVECkeG1FBZPx8KEyUcEQmwyF4hnNga3+F/DZ6AD2GfpHnpwk9ipnZS6zu4RCbEnh4RdZlReffFzWwrCB5HenIZLrZ74wc5Ssi6hpom5pYRaFQ91cVVHHX7VfhtWTgXNa3udr21zjf8R979JGH7r92ae3UiXJlrL23WhouWjwhBnZyCU8PJF95U2rhFLnMBe2lgk68HLfCgVa/l3UAXrudPnlr5cHFaVHoBF50CZcqvBqHea3pl8xSMRqRI6naYsGf3dGpkJzPDtYXLTrabDIN00uerEuM94jCqt7MZcO2lGjqkmzHiXvPzsREKhMb3aVFxmyZaKuTrs87hZBUtMPUohPNR8fwIdfDJ45aE/lp3zi046FSvEiwcm3vuHKT70+hOUxPhoftqGOqhsxSJhi28YIhqUSdO+XYbmg0RDKmSvWhlgzg9OHTbENL5WkXq50CG72AdnUWwXhLoN+yxOucBTThDes4GmG4axbF4mKYQtzemmjUwN25IYOvHyoixfrvX4f54+91+QV/9ntfdkFYrLssgz2bR4++2AwRWeot8w4x3H9vDhjEa6Nu+hVfhFdP8hizPEjG4cG2dEHd4zyaq7fLzRle9xjppzOyeHBNZcA1xAYWVSqb6O44y8VbZTk8PCbWUsJHxrXIaCzMF1PSID/RhEOvUqyFkplsVKymcNNvtct1DZPxuitWUSb2gZEPx/kySi6Ko4kxDf8gOH03nMpNiXWUW0X87Vsvks8iB4U6/KtoNjrU4NV+lGORoIXgtJD8lbRM1KuEZt2ILu8mFo1Jb5OZ6qbD2vvgOifxt1EVruOjZCcmds4/EXyXEiNT51/H4h8OC1o1T3WLYYK2xwr7gOxh8h+oZTgRTTrk1uJEw9+OKrwE/sNEi2R1Zd7Ku0TsFbklExuFt61PjLxsfWJ4szxR1b6n8kS88V0yinaQHwMbfn71MwXehGfThAeW+zIP/UJcTvKvZOPPdyLbmXn6Ks38d16VlSejL2vm4Z3+X5JH0+Qwit6t3jKKIjPiM22bUUZsPOoH8LO08XcKpTL56Kmjop4kFH6O5CFQN23K+xiyOA7qLvGtCFj6RfH9y+FOOaYRwj8ESXin7GDShIT4nmOpCv8GptyXkm7nHK/v+6O8maiF39Re1Knh0mZ5/LAtMT2CsfMwocszdZV/DUSpjO5tGrLOC0Z2XA3qedbI0K0/IT+ODLTzJh3oI2Ru9g/i4UAYif0pvQ/f8W0p/Lt3Qefunvj2Gjw/2f/C9dBmm2VEQD7raATupaMY2vdiiO816t3O4g0L4No8Whay4omHQWepeAxJdAiBe4ZMIxI2YmasVJSZ36DB91m5IY1xT9YLFf61nqnLtYyX/qu6nI/rkpcaIecTjWamnkyOJIcYSURzFfFMcyQL7vV3UATl0MHgWSKDXQ7EN8JJ72N32/c54H3MM6lYVFdQBEcEmwaz3UJGJqf9dpBO4zw7OjSqpZaYsyNCcrk6MWr1MdNqpBIa+Z1yPuK2bTyq2OVcRsWnx2NePmk4/FlV/E9ol7AjI0i9mY9p/BvotHenwVKx1maf/K2H31CQpNl5QLWy7jSGwpqKyU/3DklG7xD5rJTRFHX3XsoURV7ZkQCXcOcRIT8e/keUIW+B0C/acWMYLXPZfointHGCdP2f2GfaTxzmMP9ewyI25BDB75ckwsbacSYx5ut17QZ5OiGDi70CiGdsgklJ8CxhtUA7vX47nyefQB3EfiGG8Phd+2cu3Nk/s1rc7ODV76eobNsX8xvf6DZTpHIi7x7aGafkPaFCMaPQkL+evC/5Mv0uZSa7Y/5wWeXtJKWX/kACS6DHFZmIfu/74cc3QdZ8lAb+peIm518NB7tzUQ/qR1zFK7EqLSIvjz+y8d10BgzHXzLC5HBUpnv2gel97TW88WP4t3m1PvkFvkmPsY2f2fgp8L1n8K0NTERPhV7fjzq6gvRf2t0eSoQQHX/5Thxb23AoEG2LdnRKt6n0Eummfb2FoJCNs1a2eXv+7dp1fOPA3svnD+fN9kQkeuLQxWHrWUIeeohvFYrZVDRTAgRtW9pdjm7T1ONLxx95+L4fm5tYvuSwQxd/Ycf7iW5gy2Ia3W36IYN3jKFU2e5gt+8QeSfM/zGQn7CQn17/K/iRxD0GuFG/KyWDnV8GFlVAmqZ6XRUmex3h+B7f5ZAKvBiqRvHHfpJ3u3VcifpYtdKxfqOX0P5UctW2xG6m0IyhKoS87rpBC0QHvyr2yi3WFw0WJzSVI3gEN0AZQChf+mDcwpKOTaLyDrRYdKcKs/DXv07x//xdH4w7D8Q8vjuJohV4z2+Rj6NhdAY9C7y/fHaiZhPgPeB/vpXZD9qu9boU7QTQXmLdtEsgDzLAgr79muZ7KJR+9j9oaOlzl2NjEU7gboeKAAyJz43xedn8lEevnlpc8R8U/M4bGKdBdhXVoYw3kfztz8GvMjMlh7AafhzLOOISEvEIUfGzz2HwWBHejBYOYJpX+LLSc89CPL1hKTnwk5INcSWWOCqiCtV/+TctmEmLMZ1vhhkBY003yI8RvmWaKu9QCP8EdaxkKjzZ2Hb5gh5+91+Ca1aWV2Sm0CIv1ihi/onVw4eBRqFEViUXexFlY0WR6If4B30JVd26xhtGAMw061G+fwZ/mMI79XvIfQLixFewU7Vgp31JgLJXag0JAir4ALaUbEO5rSnDc3hu8/jL9X4ky/vxM89gt+wsb0d2F5vXP7rxN2zbLo8yTuM4L2M58P7dG19hd/Z6PAZzZYn9zT2d5G/cDpKxbbHHCWYp5vXzIf9/YVfWGzcVhX3v9XgdexaP7fEknjWzZGaSJuNMFkKajaZJmorShVQt6QItS1E3sailFarEKhZBeegLD7z1BR4qqooXhFQJXqkEVEII8SeKRBFS4Nxrz9ImJSMlSmzr2vc7x+fcc8+c7/iZJggtrbjfmN0OCKj93IoZfEEgtyqia9ey5Z0iK39HIcKnEU85snDISe0Nnz2JXwdl+vTq6bOL7rbecoYIEdCWeLwflr1k/R+RFrlf/QTtXvuSdzAzsb/hkECMUqLpwFoAo/U/YJksvvchKJ7mlldVMDOi13hFF1h+5S7MawbfhjBIuFml88r58gy+AUyf2OjuAi8K+W2oWWq2I/OgiXbwv++xOlHQg1yUOGW/lD6d1ljRpT2rKyS000RiuRSXxgxeohNAODmXryw8RhPPlCp26WRIHRgO83oEVLfkNirT1SXNGnR8jsoWp6uAwZP1PTWXE0slHPM01ssaIWXvgHNof8xS4P0k/bk3VLT9WVjhykqoJ1eZvr7+O2HcsJS3kvL7fAH26FeQ8RnuMvc+2KO3rlw+N61QX9SuNx7dQFJHNyP8na+Or2IHN3JwdmEKTmqkOcZK/jsc79MYXFle6DRuL1IGQ+wnk9DPqf6y/7ZEa8+n1syYGNDd4ThRs8fyuqgVZs8MAEzIBIRSJGDxtF9wX25BPqcp4Oipjaecc1raW4YT0YOLz6mqkiGiOFWOa73eEFJXVbQbCdbTuV58TuJRQPvp9+alhHn8Co+k1HxP2jIrhSd6ZUwO4DaWHaGQKpEFCaImekdJmyzFrZiwZ3xExfXam/AIWjHhjE/Uq8pPKwZe/xFCwIVx/327AwIZB1m8A3p5NIOYT2gl0xi2I/4W5KMFQ8baLxyrNKNvoSm0tDiCha1ERJPrQaIY1LlJ5XRHLQ/JSVWfE9FoExRMmNxcJKfoxs75ulMMm32ZMMspSo4R1Y3C4hVdVbvFY734sHhUTGL2KVVG8KeGpYgqqHV3aKS+lkL8L3epym+Ux/pBQLN646hDK0oxDEuibrKx0DyTwAN1splkalXQAblyoTxUSRAJ6yrrTc5BuIX/Yvwyws1xC3Afs2zRL8ilxO3BKsxrt19ta2ub7z1gqhOCKoLRri0R0OlgG70W+GLvM2q/yFTByoTU2xcEiYTXLsLU5KXotu3JZDxfk2RTITgaERcw2b9PQLy9a9iszj8eCU/Uz0uAKzbn99HEtPkV4ZNOFotyz/7jRr104eswQvtWIqmosOe4NbFU7AuhcGTAYvT+n8NvKbLy9urg4eWpJawWn/nefSs3onkRMCpi+CMk0npG7j6uInfresaxresZ72+oZ0Tca9x9Xofxow+Of5iN77eG17zO+FkA3Ic2d5kOTt6F1YQITmDKH5x+4Q2LUcQ46X9Al9ApiNkdrjCTlRBa3BAYI840aPRDGClDOxHCnt5udfwU/h5ZLmRCmNel6QK4Q16L2b2D6NKOA0eqFjEkcXi5Djd1THfQf2/vwn0vsr2CvplcigXqcYi2Ovy93AoLx13k0hujVn6Nsvy00sd+foFmyOp2Tz1juzg+kU3zhNfDO9wwT8J4yrHS9UJKttQnd1YMElOU8V0pGaBm9SD30CV8hM29wdVmKoRp9iphVPkwFUYV0gPPNlhPNXoaPgqsnV+AQqumqYOC1z7zEDyozPARIERUugC6To/yki5vAlokFJI7qPnH4pL0AJCYuwFzSDEcJ7niTJ49NiDItlu4lUwaccVCejIz6UMpbAml9/9ASwHQ5qyTFDAf1Xygb21+uAv/Q4tujGf4u7CgEB51nOlG9d97uIG/4V4F27JaoLZlxCjkW1k0r92fg3YeyHfW6v4aA4+NtrKwCSHR1QC6nTGf9OswunowNltN99geJTtRPY34KSIbSELEq0NMCp7AFqLU6O5e0OOapuFMzdiT0BT+3FlXCHnbB2ZVsWHrpmFEZMsIq+XlsJpuKnzMq/RmjQFVyEoxGSlCzIolwap/F0+AvdIFPRLSoqYk85gXhX6eJ6KKRz0eybpox1RdJMU8Og++o9iXtg3v4xlDTxo1S1JSxyySdSQn4X3gDUflQVu84s4XiU6iJtULqhzfgpUmtKXHLbq7AbH5cNMzc/BzAv15gn7861B9s+s8ep3/oTLhfHpSuE64iej6b9g/z/0HXi+CZwAAeNqlVNFOE0EUvVvKRjeANiEkmhhHnsC0227hhYLECmnStECghKAvZGgHdqDdbXaHFp79CeMP+OAX+Cl+gd/gg4lnZ4dAFUWwk+6cuXPvuXfunTtENGNNkUXpr0kfDbbIoR8GZ8i2ZgweoxcWNzhLOeuTweP03PpusE25zCuDJ61C9rPBU/TUfmTwY3Ls1wbnyLbfgtnKPsTqg/aSYIum6ZvBGZqwHhg8Rm+sZwZnadZ6b/A4rVpfDLZpNvPE4MnMu8yWwVO0OP7V4Mc0bb80OEcTdoPWKKQ+XVBEko7JJ0WM5qhN85jLVMJYooJGHv6M1klQrHUDrFrQlJAEmAXlIalr7CKXtzF7tAjUwA7XXFXsceqApwcrWgv7F5E89hWba8+zcqm0VCiXvBJbF7E8DlirLUXQFnlWD9qu86uyt8gaPg9Ytc07oge2Bqh3Qb1PB7QBLOGSGnxX7B9scAlcR3ycuthoY6F4V2Ku4QgBNpI5wiGEDt3Viajo4H9nLYxS1cJA1cLoWLCyW2IVduWzcOnlH1husNqDRaRLEer0eYjLo2UghXEE2zPMIdIr9RmS5A+01gJKQHsiimUYMM/1lplSR/xMhb4MkMCB5y7M3zequ12n/B0uVMKzQkM9XFwRDm6fTjCfY53WZxV+/vfijfo5NVp8ROe6vzw8DuEpiYbRjj5NUpkBvh1ILu8Qo00w9PQduim3Scs4kCb1ikfsWkBHQENoRto+1UirkOQqNr7OgDvaO9PxCG1dxyPHaAs5Efq8V8zNEYYk2zffKnckslG/DFEN9Bm6+B7im8iuMsK1xypta6zQN46uiUI8FSpixGBLatWHLIavWHNd5riIyGuI9E8PQv7GF4HNrQyHQ7fHlX/Cz1004Or8ba+EsTmFiKeS1C7vDKXy2Y6IRTQQHZa0NNvkPXGtmV3H2fVlnO61wiM15JFgEKArRBDD6izoiIgpX7BWvcm2+iJIlZupQp5d60g3JTO2jA+47PLDrmA6EM5q1W3GVcXxlepXisW4Hcm+it1YdpOIi1s1pOteOf4b4b2e0J8RwXGkAHjabc3ZLgNxFMfx75ma1thbVK0R+260pfYoOnZq3y/+SpjElFAu3YjncOva+igex9LMhQu/5ORzck5ODhrZfN0T5r/c/ZSg4SEHHS+5GOSRTwGFFFFMCX4ClFJGOUEqCFFJFdXUUEsd9TTQSBPNtNBKG+100EkX3fTQi0nfz9cIUfoZIMYgQwwzwihjjDNBnEmmSWAxwyxzzLPAIksss0KSVdZYZ4NNtthmh1322OeAQ5RoPPApHskRXbzik1wxJE/ypUAKpUiKeZIS8UtASqVMyiUoFTzyzAvvfPDKm4SkUqqk2neTtk0zbmYNR2LG6ZW6PUldOEeGSt1ksl12FzHDRsY+P/47iboOuMZcB13jrpOuU/qMchylb5ydZJR3UTlHx0rbsbWkra/bp47ybV5e2+cXaU/yzPYkr+3fs3Cfaf2asKxp14Sr9Q0pclQVAAABAAH//wAPAAAAAQAAAADMPaLPAAAAAMb5Mk8AAAAA0bd8mA==",
            "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Italic.woff",
            "type": "application/font-woff"
        },
        "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Regular.woff": {
            "text": "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",
            "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Regular.woff",
            "type": "application/font-woff"
        },
        "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Math-BoldItalic.woff": {
            "text": "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",
            "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Math-BoldItalic.woff",
            "type": "application/font-woff"
        },
        "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Math-Italic.woff": {
            "text": "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",
            "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Math-Italic.woff",
            "type": "application/font-woff"
        },
        "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Math-Regular.woff": {
            "text": "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",
            "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Math-Regular.woff",
            "type": "application/font-woff"
        },
        "$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Bold.woff": {
            "text": "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",
            "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Bold.woff",
            "type": "application/font-woff"
        },
        "$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Italic.woff": {
            "text": "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",
            "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Italic.woff",
            "type": "application/font-woff"
        },
        "$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Regular.woff": {
            "text": "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",
            "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Regular.woff",
            "type": "application/font-woff"
        },
        "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Script-Regular.woff": {
            "text": "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",
            "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Script-Regular.woff",
            "type": "application/font-woff"
        },
        "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size1-Regular.woff": {
            "text": "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",
            "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size1-Regular.woff",
            "type": "application/font-woff"
        },
        "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size2-Regular.woff": {
            "text": "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",
            "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size2-Regular.woff",
            "type": "application/font-woff"
        },
        "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size3-Regular.woff": {
            "text": "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",
            "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size3-Regular.woff",
            "type": "application/font-woff"
        },
        "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size4-Regular.woff": {
            "text": "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",
            "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size4-Regular.woff",
            "type": "application/font-woff"
        },
        "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Typewriter-Regular.woff": {
            "text": "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",
            "title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Typewriter-Regular.woff",
            "type": "application/font-woff"
        },
        "$:/plugins/tiddlywiki/katex/latex-parser.js": {
            "text": "/*\\\ntitle: $:/plugins/tiddlywiki/katex/latex-parser.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for LaTeX. For example:\n\n```\n\t$$latex-goes-here$$\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except latex-parser \n\\rules only latex-parser \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"latex-parser\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\$\\$(?!\\$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar reEnd = /\\$\\$/mg;\n\t// Look for the end marker\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext,\n\t\tdisplayMode;\n\t// Process the text\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tdisplayMode = text.indexOf('\\n') != -1;\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tdisplayMode = false;\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\treturn [{\n\t\ttype: \"latex\",\n\t\tattributes: {\n\t\t\ttext: {\n\t\t\t\ttype: \"text\",\n\t\t\t\tvalue: text\n\t\t\t},\n\t\t\tdisplayMode: {\n\t\t\t\ttype: \"text\",\n\t\t\t\tvalue: displayMode ? \"true\" : \"false\"\n\t\t\t}\n\t\t}\n\t}];\n};\n\n})();\n",
            "title": "$:/plugins/tiddlywiki/katex/latex-parser.js",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/plugins/tiddlywiki/katex/readme": {
            "title": "$:/plugins/tiddlywiki/katex/readme",
            "text": "This is a TiddlyWiki plugin for mathematical typesetting based on [[KaTeX from Khan Academy|http://khan.github.io/KaTeX/]].\n\nIt is completely self-contained, and doesn't need an Internet connection in order to work. It works both in the browser and under Node.js.\n\nIt is currently based on KaTeX version 0.6.0. See https://github.com/Khan/KaTeX/releases for details of releases.\n\n[[Source code|https://github.com/Jermolene/TiddlyWiki5/blob/master/plugins/tiddlywiki/katex]]\n"
        },
        "$:/plugins/tiddlywiki/katex/styles": {
            "title": "$:/plugins/tiddlywiki/katex/styles",
            "tags": "[[$:/tags/Stylesheet]]",
            "text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n/* KaTeX styles */\n\n{{$:/plugins/tiddlywiki/katex/katex.min.css}}\n\n/* Force text-rendering  (see https://github.com/Jermolene/TiddlyWiki5/issues/2500) */\n\n.katex {\n    text-rendering: auto;\n}\n\n/* Override font URLs */\n\n@font-face {\n\tfont-family: KaTeX_AMS;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_AMS-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Caligraphic;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Caligraphic-Bold.woff'>>) format('woff');\n\tfont-weight: 700;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Caligraphic;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Caligraphic-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Fraktur;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Fraktur-Bold.woff'>>) format('woff');\n\tfont-weight: 700;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Fraktur;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Fraktur-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Main;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Bold.woff'>>) format('woff');\n\tfont-weight: 700;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Main;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Italic.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: italic;\n}\n\n@font-face {\n\tfont-family: KaTeX_Main;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Math;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Math-Italic.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: italic;\n}\n\n@font-face {\n\tfont-family: KaTeX_SansSerif;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Script;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Script-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Size1;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size1-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Size2;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size2-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Size3;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size3-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Size4;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size4-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Typewriter;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Typewriter-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n"
        },
        "$:/plugins/tiddlywiki/katex/usage": {
            "title": "$:/plugins/tiddlywiki/katex/usage",
            "text": "The usual way to include ~LaTeX is to use `$$`. For example:\n\n```\n$$\\displaystyle f(x) = \\int_{-\\infty}^\\infty\\hat f(\\xi)\\,e^{2 \\pi i \\xi x}\\,d\\xi$$\n```\n\nSingle line equations will render in inline mode. If there are newlines between the `$$` delimiters, the equations will be rendered in display mode.\n\nThe underlying widget can also be used directly, giving more flexibility:\n\n```\n<$latex text=\"f(x) = \\int_{-\\infty}^\\infty\\hat f(\\xi)\\,e^{2 \\pi i \\xi x}\\,d\\xi\" displayMode=\"true\"></$latex>\n```\n\nThe KaTeX widget is provided under the name `<$latex>` and is also available under the alias `<$katex>`. It's better to use the generic `<$latex>` name unless you are running multiple ~LaTeX plugins and wish to specifically target KaTeX.\n"
        },
        "$:/plugins/tiddlywiki/katex/wrapper.js": {
            "text": "/*\\\ntitle: $:/plugins/tiddlywiki/katex/wrapper.js\ntype: application/javascript\nmodule-type: widget\n\nWrapper for `katex.min.js` that provides a `<$latex>` widget. It is also available under the alias `<$katex>`\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar katex = require(\"$:/plugins/tiddlywiki/katex/katex.min.js\"),\n\tWidget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar KaTeXWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nKaTeXWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nKaTeXWidget.prototype.render = function(parent,nextSibling) {\n\t// Housekeeping\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Get the source text\n\tvar text = this.getAttribute(\"text\",this.parseTreeNode.text || \"\");\n\tvar displayMode = this.getAttribute(\"displayMode\",this.parseTreeNode.displayMode || \"false\") === \"true\";\n\t// Render it into a span\n\tvar span = this.document.createElement(\"span\"),\n\t\toptions = {throwOnError: false, displayMode: displayMode};\n\ttry {\n\t\tif(!this.document.isTiddlyWikiFakeDom) {\n\t\t\tkatex.render(text,span,options);\n\t\t} else {\n\t\t\tspan.innerHTML = katex.renderToString(text,options);\n\t\t}\n\t} catch(ex) {\n\t\tspan.className = \"tc-error\";\n\t\tspan.textContent = ex;\n\t}\n\t// Insert it into the DOM\n\tparent.insertBefore(span,nextSibling);\n\tthis.domNodes.push(span);\n};\n\n/*\nCompute the internal state of the widget\n*/\nKaTeXWidget.prototype.execute = function() {\n\t// Nothing to do for a katex widget\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nKaTeXWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.text) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.latex = KaTeXWidget;\nexports.katex = KaTeXWidget;\n\n})();\n\n",
            "title": "$:/plugins/tiddlywiki/katex/wrapper.js",
            "type": "application/javascript",
            "module-type": "widget"
        }
    }
}
{
    "tiddlers": {
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/bold": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/bold",
            "list-after": "$:/core/ui/EditorToolbar/bold",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/bold",
            "caption": "{{$:/language/Buttons/Bold/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/Bold/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((bold))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"**\"\n\tsuffix=\"**\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-1": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-1",
            "list-after": "$:/core/ui/EditorToolbar/heading-1",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-1",
            "caption": "{{$:/language/Buttons/Heading1/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/Heading1/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((heading-1))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"#\"\n\tcount=\"1\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-2": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-2",
            "list-after": "$:/core/ui/EditorToolbar/heading-2",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-2",
            "caption": "{{$:/language/Buttons/Heading2/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/Heading2/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((heading-2))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"#\"\n\tcount=\"2\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-3": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-3",
            "list-after": "$:/core/ui/EditorToolbar/heading-3",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-3",
            "caption": "{{$:/language/Buttons/Heading3/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/Heading3/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((heading-3))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"#\"\n\tcount=\"3\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-4": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-4",
            "list-after": "$:/core/ui/EditorToolbar/heading-4",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-4",
            "caption": "{{$:/language/Buttons/Heading4/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/Heading4/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((heading-4))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"#\"\n\tcount=\"4\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-5": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-5",
            "list-after": "$:/core/ui/EditorToolbar/heading-5",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-5",
            "caption": "{{$:/language/Buttons/Heading5/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/Heading5/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((heading-5))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"#\"\n\tcount=\"5\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-6": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-6",
            "list-after": "$:/core/ui/EditorToolbar/heading-6",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-6",
            "caption": "{{$:/language/Buttons/Heading6/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/Heading6/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((heading-6))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"#\"\n\tcount=\"6\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/italic": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/italic",
            "list-after": "$:/core/ui/EditorToolbar/italic",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/italic",
            "caption": "{{$:/language/Buttons/Italic/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/Italic/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((italic))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"*\"\n\tsuffix=\"*\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/list-bullet": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/list-bullet",
            "list-after": "$:/core/ui/EditorToolbar/list-bullet",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/list-bullet",
            "caption": "{{$:/language/Buttons/ListBullet/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/ListBullet/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((list-bullet))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"*\"\n\tcount=\"1\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/list-number": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/list-number",
            "list-after": "$:/core/ui/EditorToolbar/list-number",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/list-number",
            "caption": "{{$:/language/Buttons/ListNumber/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/ListNumber/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((list-number))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"1.\"\n\tcount=\"1\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/mono-line": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/mono-line",
            "list-after": "$:/core/ui/EditorToolbar/mono-line",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/mono-line",
            "caption": "{{$:/language/Buttons/MonoLine/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/MonoLine/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((mono-line))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"`\"\n\tsuffix=\"`\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/quote": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/quote",
            "list-after": "$:/core/ui/EditorToolbar/quote",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/quote",
            "caption": "{{$:/language/Buttons/Quote/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/Quote/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((quote))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\">\"\n\tcount=\"1\"\n/>\n"
        },
        "$:/config/markdown/dialect": {
            "title": "$:/config/markdown/dialect",
            "text": "Gruber"
        },
        "$:/language/Docs/Types/text/x-markdown": {
            "title": "$:/language/Docs/Types/text/x-markdown",
            "description": "Markdown",
            "name": "text/x-markdown",
            "group": "Text"
        },
        "$:/plugins/tiddlywiki/markdown/markdown.js": {
            "text": "// Released under MIT license\n// Copyright (c) 2009-2010 Dominic Baggott\n// Copyright (c) 2009-2010 Ash Berlin\n// Copyright (c) 2011 Christoph Dorn <christoph@christophdorn.com> (http://www.christophdorn.com)\n\n/*jshint browser:true, devel:true */\n\n(function( expose ) {\n\n/**\n *  class Markdown\n *\n *  Markdown processing in Javascript done right. We have very particular views\n *  on what constitutes 'right' which include:\n *\n *  - produces well-formed HTML (this means that em and strong nesting is\n *    important)\n *\n *  - has an intermediate representation to allow processing of parsed data (We\n *    in fact have two, both as [JsonML]: a markdown tree and an HTML tree).\n *\n *  - is easily extensible to add new dialects without having to rewrite the\n *    entire parsing mechanics\n *\n *  - has a good test suite\n *\n *  This implementation fulfills all of these (except that the test suite could\n *  do with expanding to automatically run all the fixtures from other Markdown\n *  implementations.)\n *\n *  ##### Intermediate Representation\n *\n *  *TODO* Talk about this :) Its JsonML, but document the node names we use.\n *\n *  [JsonML]: http://jsonml.org/ \"JSON Markup Language\"\n **/\nvar Markdown = expose.Markdown = function(dialect) {\n  switch (typeof dialect) {\n    case \"undefined\":\n      this.dialect = Markdown.dialects.Gruber;\n      break;\n    case \"object\":\n      this.dialect = dialect;\n      break;\n    default:\n      if ( dialect in Markdown.dialects ) {\n        this.dialect = Markdown.dialects[dialect];\n      }\n      else {\n        throw new Error(\"Unknown Markdown dialect '\" + String(dialect) + \"'\");\n      }\n      break;\n  }\n  this.em_state = [];\n  this.strong_state = [];\n  this.debug_indent = \"\";\n};\n\n/**\n *  parse( markdown, [dialect] ) -> JsonML\n *  - markdown (String): markdown string to parse\n *  - dialect (String | Dialect): the dialect to use, defaults to gruber\n *\n *  Parse `markdown` and return a markdown document as a Markdown.JsonML tree.\n **/\nexpose.parse = function( source, dialect ) {\n  // dialect will default if undefined\n  var md = new Markdown( dialect );\n  return md.toTree( source );\n};\n\n/**\n *  toHTML( markdown, [dialect]  ) -> String\n *  toHTML( md_tree ) -> String\n *  - markdown (String): markdown string to parse\n *  - md_tree (Markdown.JsonML): parsed markdown tree\n *\n *  Take markdown (either as a string or as a JsonML tree) and run it through\n *  [[toHTMLTree]] then turn it into a well-formated HTML fragment.\n **/\nexpose.toHTML = function toHTML( source , dialect , options ) {\n  var input = expose.toHTMLTree( source , dialect , options );\n\n  return expose.renderJsonML( input );\n};\n\n/**\n *  toHTMLTree( markdown, [dialect] ) -> JsonML\n *  toHTMLTree( md_tree ) -> JsonML\n *  - markdown (String): markdown string to parse\n *  - dialect (String | Dialect): the dialect to use, defaults to gruber\n *  - md_tree (Markdown.JsonML): parsed markdown tree\n *\n *  Turn markdown into HTML, represented as a JsonML tree. If a string is given\n *  to this function, it is first parsed into a markdown tree by calling\n *  [[parse]].\n **/\nexpose.toHTMLTree = function toHTMLTree( input, dialect , options ) {\n  // convert string input to an MD tree\n  if ( typeof input ===\"string\" ) input = this.parse( input, dialect );\n\n  // Now convert the MD tree to an HTML tree\n\n  // remove references from the tree\n  var attrs = extract_attr( input ),\n      refs = {};\n\n  if ( attrs && attrs.references ) {\n    refs = attrs.references;\n  }\n\n  var html = convert_tree_to_html( input, refs , options );\n  merge_text_nodes( html );\n  return html;\n};\n\n// For Spidermonkey based engines\nfunction mk_block_toSource() {\n  return \"Markdown.mk_block( \" +\n          uneval(this.toString()) +\n          \", \" +\n          uneval(this.trailing) +\n          \", \" +\n          uneval(this.lineNumber) +\n          \" )\";\n}\n\n// node\nfunction mk_block_inspect() {\n  var util = require(\"util\");\n  return \"Markdown.mk_block( \" +\n          util.inspect(this.toString()) +\n          \", \" +\n          util.inspect(this.trailing) +\n          \", \" +\n          util.inspect(this.lineNumber) +\n          \" )\";\n\n}\n\nvar mk_block = Markdown.mk_block = function(block, trail, line) {\n  // Be helpful for default case in tests.\n  if ( arguments.length == 1 ) trail = \"\\n\\n\";\n\n  var s = new String(block);\n  s.trailing = trail;\n  // To make it clear its not just a string\n  s.inspect = mk_block_inspect;\n  s.toSource = mk_block_toSource;\n\n  if ( line != undefined )\n    s.lineNumber = line;\n\n  return s;\n};\n\nfunction count_lines( str ) {\n  var n = 0, i = -1;\n  while ( ( i = str.indexOf(\"\\n\", i + 1) ) !== -1 ) n++;\n  return n;\n}\n\n// Internal - split source into rough blocks\nMarkdown.prototype.split_blocks = function splitBlocks( input, startLine ) {\n  input = input.replace(/(\\r\\n|\\n|\\r)/g, \"\\n\");\n  // [\\s\\S] matches _anything_ (newline or space)\n  // [^] is equivalent but doesn't work in IEs.\n  var re = /([\\s\\S]+?)($|\\n#|\\n(?:\\s*\\n|$)+)/g,\n      blocks = [],\n      m;\n\n  var line_no = 1;\n\n  if ( ( m = /^(\\s*\\n)/.exec(input) ) != null ) {\n    // skip (but count) leading blank lines\n    line_no += count_lines( m[0] );\n    re.lastIndex = m[0].length;\n  }\n\n  while ( ( m = re.exec(input) ) !== null ) {\n    if (m[2] == \"\\n#\") {\n      m[2] = \"\\n\";\n      re.lastIndex--;\n    }\n    blocks.push( mk_block( m[1], m[2], line_no ) );\n    line_no += count_lines( m[0] );\n  }\n\n  return blocks;\n};\n\n/**\n *  Markdown#processBlock( block, next ) -> undefined | [ JsonML, ... ]\n *  - block (String): the block to process\n *  - next (Array): the following blocks\n *\n * Process `block` and return an array of JsonML nodes representing `block`.\n *\n * It does this by asking each block level function in the dialect to process\n * the block until one can. Succesful handling is indicated by returning an\n * array (with zero or more JsonML nodes), failure by a false value.\n *\n * Blocks handlers are responsible for calling [[Markdown#processInline]]\n * themselves as appropriate.\n *\n * If the blocks were split incorrectly or adjacent blocks need collapsing you\n * can adjust `next` in place using shift/splice etc.\n *\n * If any of this default behaviour is not right for the dialect, you can\n * define a `__call__` method on the dialect that will get invoked to handle\n * the block processing.\n */\nMarkdown.prototype.processBlock = function processBlock( block, next ) {\n  var cbs = this.dialect.block,\n      ord = cbs.__order__;\n\n  if ( \"__call__\" in cbs ) {\n    return cbs.__call__.call(this, block, next);\n  }\n\n  for ( var i = 0; i < ord.length; i++ ) {\n    //D:this.debug( \"Testing\", ord[i] );\n    var res = cbs[ ord[i] ].call( this, block, next );\n    if ( res ) {\n      //D:this.debug(\"  matched\");\n      if ( !isArray(res) || ( res.length > 0 && !( isArray(res[0]) ) ) )\n        this.debug(ord[i], \"didn't return a proper array\");\n      //D:this.debug( \"\" );\n      return res;\n    }\n  }\n\n  // Uhoh! no match! Should we throw an error?\n  return [];\n};\n\nMarkdown.prototype.processInline = function processInline( block ) {\n  return this.dialect.inline.__call__.call( this, String( block ) );\n};\n\n/**\n *  Markdown#toTree( source ) -> JsonML\n *  - source (String): markdown source to parse\n *\n *  Parse `source` into a JsonML tree representing the markdown document.\n **/\n// custom_tree means set this.tree to `custom_tree` and restore old value on return\nMarkdown.prototype.toTree = function toTree( source, custom_root ) {\n  var blocks = source instanceof Array ? source : this.split_blocks( source );\n\n  // Make tree a member variable so its easier to mess with in extensions\n  var old_tree = this.tree;\n  try {\n    this.tree = custom_root || this.tree || [ \"markdown\" ];\n\n    blocks:\n    while ( blocks.length ) {\n      var b = this.processBlock( blocks.shift(), blocks );\n\n      // Reference blocks and the like won't return any content\n      if ( !b.length ) continue blocks;\n\n      this.tree.push.apply( this.tree, b );\n    }\n    return this.tree;\n  }\n  finally {\n    if ( custom_root ) {\n      this.tree = old_tree;\n    }\n  }\n};\n\n// Noop by default\nMarkdown.prototype.debug = function () {\n  var args = Array.prototype.slice.call( arguments);\n  args.unshift(this.debug_indent);\n  if ( typeof print !== \"undefined\" )\n      print.apply( print, args );\n  if ( typeof console !== \"undefined\" && typeof console.log !== \"undefined\" )\n      console.log.apply( null, args );\n}\n\nMarkdown.prototype.loop_re_over_block = function( re, block, cb ) {\n  // Dont use /g regexps with this\n  var m,\n      b = block.valueOf();\n\n  while ( b.length && (m = re.exec(b) ) != null ) {\n    b = b.substr( m[0].length );\n    cb.call(this, m);\n  }\n  return b;\n};\n\n/**\n * Markdown.dialects\n *\n * Namespace of built-in dialects.\n **/\nMarkdown.dialects = {};\n\n/**\n * Markdown.dialects.Gruber\n *\n * The default dialect that follows the rules set out by John Gruber's\n * markdown.pl as closely as possible. Well actually we follow the behaviour of\n * that script which in some places is not exactly what the syntax web page\n * says.\n **/\nMarkdown.dialects.Gruber = {\n  block: {\n    atxHeader: function atxHeader( block, next ) {\n      var m = block.match( /^(#{1,6})\\s*(.*?)\\s*#*\\s*(?:\\n|$)/ );\n\n      if ( !m ) return undefined;\n\n      var header = [ \"header\", { level: m[ 1 ].length } ];\n      Array.prototype.push.apply(header, this.processInline(m[ 2 ]));\n\n      if ( m[0].length < block.length )\n        next.unshift( mk_block( block.substr( m[0].length ), block.trailing, block.lineNumber + 2 ) );\n\n      return [ header ];\n    },\n\n    setextHeader: function setextHeader( block, next ) {\n      var m = block.match( /^(.*)\\n([-=])\\2\\2+(?:\\n|$)/ );\n\n      if ( !m ) return undefined;\n\n      var level = ( m[ 2 ] === \"=\" ) ? 1 : 2;\n      var header = [ \"header\", { level : level }, m[ 1 ] ];\n\n      if ( m[0].length < block.length )\n        next.unshift( mk_block( block.substr( m[0].length ), block.trailing, block.lineNumber + 2 ) );\n\n      return [ header ];\n    },\n\n    code: function code( block, next ) {\n      // |    Foo\n      // |bar\n      // should be a code block followed by a paragraph. Fun\n      //\n      // There might also be adjacent code block to merge.\n\n      var ret = [],\n          re = /^(?: {0,3}\\t| {4})(.*)\\n?/,\n          lines;\n\n      // 4 spaces + content\n      if ( !block.match( re ) ) return undefined;\n\n      block_search:\n      do {\n        // Now pull out the rest of the lines\n        var b = this.loop_re_over_block(\n                  re, block.valueOf(), function( m ) { ret.push( m[1] ); } );\n\n        if ( b.length ) {\n          // Case alluded to in first comment. push it back on as a new block\n          next.unshift( mk_block(b, block.trailing) );\n          break block_search;\n        }\n        else if ( next.length ) {\n          // Check the next block - it might be code too\n          if ( !next[0].match( re ) ) break block_search;\n\n          // Pull how how many blanks lines follow - minus two to account for .join\n          ret.push ( block.trailing.replace(/[^\\n]/g, \"\").substring(2) );\n\n          block = next.shift();\n        }\n        else {\n          break block_search;\n        }\n      } while ( true );\n\n      return [ [ \"code_block\", ret.join(\"\\n\") ] ];\n    },\n\n    horizRule: function horizRule( block, next ) {\n      // this needs to find any hr in the block to handle abutting blocks\n      var m = block.match( /^(?:([\\s\\S]*?)\\n)?[ \\t]*([-_*])(?:[ \\t]*\\2){2,}[ \\t]*(?:\\n([\\s\\S]*))?$/ );\n\n      if ( !m ) {\n        return undefined;\n      }\n\n      var jsonml = [ [ \"hr\" ] ];\n\n      // if there's a leading abutting block, process it\n      if ( m[ 1 ] ) {\n        jsonml.unshift.apply( jsonml, this.processBlock( m[ 1 ], [] ) );\n      }\n\n      // if there's a trailing abutting block, stick it into next\n      if ( m[ 3 ] ) {\n        next.unshift( mk_block( m[ 3 ] ) );\n      }\n\n      return jsonml;\n    },\n\n    // There are two types of lists. Tight and loose. Tight lists have no whitespace\n    // between the items (and result in text just in the <li>) and loose lists,\n    // which have an empty line between list items, resulting in (one or more)\n    // paragraphs inside the <li>.\n    //\n    // There are all sorts weird edge cases about the original markdown.pl's\n    // handling of lists:\n    //\n    // * Nested lists are supposed to be indented by four chars per level. But\n    //   if they aren't, you can get a nested list by indenting by less than\n    //   four so long as the indent doesn't match an indent of an existing list\n    //   item in the 'nest stack'.\n    //\n    // * The type of the list (bullet or number) is controlled just by the\n    //    first item at the indent. Subsequent changes are ignored unless they\n    //    are for nested lists\n    //\n    lists: (function( ) {\n      // Use a closure to hide a few variables.\n      var any_list = \"[*+-]|\\\\d+\\\\.\",\n          bullet_list = /[*+-]/,\n          number_list = /\\d+\\./,\n          // Capture leading indent as it matters for determining nested lists.\n          is_list_re = new RegExp( \"^( {0,3})(\" + any_list + \")[ \\t]+\" ),\n          indent_re = \"(?: {0,3}\\\\t| {4})\";\n\n      // TODO: Cache this regexp for certain depths.\n      // Create a regexp suitable for matching an li for a given stack depth\n      function regex_for_depth( depth ) {\n\n        return new RegExp(\n          // m[1] = indent, m[2] = list_type\n          \"(?:^(\" + indent_re + \"{0,\" + depth + \"} {0,3})(\" + any_list + \")\\\\s+)|\" +\n          // m[3] = cont\n          \"(^\" + indent_re + \"{0,\" + (depth-1) + \"}[ ]{0,4})\"\n        );\n      }\n      function expand_tab( input ) {\n        return input.replace( / {0,3}\\t/g, \"    \" );\n      }\n\n      // Add inline content `inline` to `li`. inline comes from processInline\n      // so is an array of content\n      function add(li, loose, inline, nl) {\n        if ( loose ) {\n          li.push( [ \"para\" ].concat(inline) );\n          return;\n        }\n        // Hmmm, should this be any block level element or just paras?\n        var add_to = li[li.length -1] instanceof Array && li[li.length - 1][0] == \"para\"\n                   ? li[li.length -1]\n                   : li;\n\n        // If there is already some content in this list, add the new line in\n        if ( nl && li.length > 1 ) inline.unshift(nl);\n\n        for ( var i = 0; i < inline.length; i++ ) {\n          var what = inline[i],\n              is_str = typeof what == \"string\";\n          if ( is_str && add_to.length > 1 && typeof add_to[add_to.length-1] == \"string\" ) {\n            add_to[ add_to.length-1 ] += what;\n          }\n          else {\n            add_to.push( what );\n          }\n        }\n      }\n\n      // contained means have an indent greater than the current one. On\n      // *every* line in the block\n      function get_contained_blocks( depth, blocks ) {\n\n        var re = new RegExp( \"^(\" + indent_re + \"{\" + depth + \"}.*?\\\\n?)*$\" ),\n            replace = new RegExp(\"^\" + indent_re + \"{\" + depth + \"}\", \"gm\"),\n            ret = [];\n\n        while ( blocks.length > 0 ) {\n          if ( re.exec( blocks[0] ) ) {\n            var b = blocks.shift(),\n                // Now remove that indent\n                x = b.replace( replace, \"\");\n\n            ret.push( mk_block( x, b.trailing, b.lineNumber ) );\n          }\n          else {\n            break;\n          }\n        }\n        return ret;\n      }\n\n      // passed to stack.forEach to turn list items up the stack into paras\n      function paragraphify(s, i, stack) {\n        var list = s.list;\n        var last_li = list[list.length-1];\n\n        if ( last_li[1] instanceof Array && last_li[1][0] == \"para\" ) {\n          return;\n        }\n        if ( i + 1 == stack.length ) {\n          // Last stack frame\n          // Keep the same array, but replace the contents\n          last_li.push( [\"para\"].concat( last_li.splice(1, last_li.length - 1) ) );\n        }\n        else {\n          var sublist = last_li.pop();\n          last_li.push( [\"para\"].concat( last_li.splice(1, last_li.length - 1) ), sublist );\n        }\n      }\n\n      // The matcher function\n      return function( block, next ) {\n        var m = block.match( is_list_re );\n        if ( !m ) return undefined;\n\n        function make_list( m ) {\n          var list = bullet_list.exec( m[2] )\n                   ? [\"bulletlist\"]\n                   : [\"numberlist\"];\n\n          stack.push( { list: list, indent: m[1] } );\n          return list;\n        }\n\n\n        var stack = [], // Stack of lists for nesting.\n            list = make_list( m ),\n            last_li,\n            loose = false,\n            ret = [ stack[0].list ],\n            i;\n\n        // Loop to search over block looking for inner block elements and loose lists\n        loose_search:\n        while ( true ) {\n          // Split into lines preserving new lines at end of line\n          var lines = block.split( /(?=\\n)/ );\n\n          // We have to grab all lines for a li and call processInline on them\n          // once as there are some inline things that can span lines.\n          var li_accumulate = \"\";\n\n          // Loop over the lines in this block looking for tight lists.\n          tight_search:\n          for ( var line_no = 0; line_no < lines.length; line_no++ ) {\n            var nl = \"\",\n                l = lines[line_no].replace(/^\\n/, function(n) { nl = n; return \"\"; });\n\n            // TODO: really should cache this\n            var line_re = regex_for_depth( stack.length );\n\n            m = l.match( line_re );\n            //print( \"line:\", uneval(l), \"\\nline match:\", uneval(m) );\n\n            // We have a list item\n            if ( m[1] !== undefined ) {\n              // Process the previous list item, if any\n              if ( li_accumulate.length ) {\n                add( last_li, loose, this.processInline( li_accumulate ), nl );\n                // Loose mode will have been dealt with. Reset it\n                loose = false;\n                li_accumulate = \"\";\n              }\n\n              m[1] = expand_tab( m[1] );\n              var wanted_depth = Math.floor(m[1].length/4)+1;\n              //print( \"want:\", wanted_depth, \"stack:\", stack.length);\n              if ( wanted_depth > stack.length ) {\n                // Deep enough for a nested list outright\n                //print ( \"new nested list\" );\n                list = make_list( m );\n                last_li.push( list );\n                last_li = list[1] = [ \"listitem\" ];\n              }\n              else {\n                // We aren't deep enough to be strictly a new level. This is\n                // where Md.pl goes nuts. If the indent matches a level in the\n                // stack, put it there, else put it one deeper then the\n                // wanted_depth deserves.\n                var found = false;\n                for ( i = 0; i < stack.length; i++ ) {\n                  if ( stack[ i ].indent != m[1] ) continue;\n                  list = stack[ i ].list;\n                  stack.splice( i+1, stack.length - (i+1) );\n                  found = true;\n                  break;\n                }\n\n                if (!found) {\n                  //print(\"not found. l:\", uneval(l));\n                  wanted_depth++;\n                  if ( wanted_depth <= stack.length ) {\n                    stack.splice(wanted_depth, stack.length - wanted_depth);\n                    //print(\"Desired depth now\", wanted_depth, \"stack:\", stack.length);\n                    list = stack[wanted_depth-1].list;\n                    //print(\"list:\", uneval(list) );\n                  }\n                  else {\n                    //print (\"made new stack for messy indent\");\n                    list = make_list(m);\n                    last_li.push(list);\n                  }\n                }\n\n                //print( uneval(list), \"last\", list === stack[stack.length-1].list );\n                last_li = [ \"listitem\" ];\n                list.push(last_li);\n              } // end depth of shenegains\n              nl = \"\";\n            }\n\n            // Add content\n            if ( l.length > m[0].length ) {\n              li_accumulate += nl + l.substr( m[0].length );\n            }\n          } // tight_search\n\n          if ( li_accumulate.length ) {\n            add( last_li, loose, this.processInline( li_accumulate ), nl );\n            // Loose mode will have been dealt with. Reset it\n            loose = false;\n            li_accumulate = \"\";\n          }\n\n          // Look at the next block - we might have a loose list. Or an extra\n          // paragraph for the current li\n          var contained = get_contained_blocks( stack.length, next );\n\n          // Deal with code blocks or properly nested lists\n          if ( contained.length > 0 ) {\n            // Make sure all listitems up the stack are paragraphs\n            forEach( stack, paragraphify, this);\n\n            last_li.push.apply( last_li, this.toTree( contained, [] ) );\n          }\n\n          var next_block = next[0] && next[0].valueOf() || \"\";\n\n          if ( next_block.match(is_list_re) || next_block.match( /^ / ) ) {\n            block = next.shift();\n\n            // Check for an HR following a list: features/lists/hr_abutting\n            var hr = this.dialect.block.horizRule( block, next );\n\n            if ( hr ) {\n              ret.push.apply(ret, hr);\n              break;\n            }\n\n            // Make sure all listitems up the stack are paragraphs\n            forEach( stack, paragraphify, this);\n\n            loose = true;\n            continue loose_search;\n          }\n          break;\n        } // loose_search\n\n        return ret;\n      };\n    })(),\n\n    blockquote: function blockquote( block, next ) {\n      if ( !block.match( /^>/m ) )\n        return undefined;\n\n      var jsonml = [];\n\n      // separate out the leading abutting block, if any. I.e. in this case:\n      //\n      //  a\n      //  > b\n      //\n      if ( block[ 0 ] != \">\" ) {\n        var lines = block.split( /\\n/ ),\n            prev = [],\n            line_no = block.lineNumber;\n\n        // keep shifting lines until you find a crotchet\n        while ( lines.length && lines[ 0 ][ 0 ] != \">\" ) {\n            prev.push( lines.shift() );\n            line_no++;\n        }\n\n        var abutting = mk_block( prev.join( \"\\n\" ), \"\\n\", block.lineNumber );\n        jsonml.push.apply( jsonml, this.processBlock( abutting, [] ) );\n        // reassemble new block of just block quotes!\n        block = mk_block( lines.join( \"\\n\" ), block.trailing, line_no );\n      }\n\n\n      // if the next block is also a blockquote merge it in\n      while ( next.length && next[ 0 ][ 0 ] == \">\" ) {\n        var b = next.shift();\n        block = mk_block( block + block.trailing + b, b.trailing, block.lineNumber );\n      }\n\n      // Strip off the leading \"> \" and re-process as a block.\n      var input = block.replace( /^> ?/gm, \"\" ),\n          old_tree = this.tree,\n          processedBlock = this.toTree( input, [ \"blockquote\" ] ),\n          attr = extract_attr( processedBlock );\n\n      // If any link references were found get rid of them\n      if ( attr && attr.references ) {\n        delete attr.references;\n        // And then remove the attribute object if it's empty\n        if ( isEmpty( attr ) ) {\n          processedBlock.splice( 1, 1 );\n        }\n      }\n\n      jsonml.push( processedBlock );\n      return jsonml;\n    },\n\n    referenceDefn: function referenceDefn( block, next) {\n      var re = /^\\s*\\[(.*?)\\]:\\s*(\\S+)(?:\\s+(?:(['\"])(.*?)\\3|\\((.*?)\\)))?\\n?/;\n      // interesting matches are [ , ref_id, url, , title, title ]\n\n      if ( !block.match(re) )\n        return undefined;\n\n      // make an attribute node if it doesn't exist\n      if ( !extract_attr( this.tree ) ) {\n        this.tree.splice( 1, 0, {} );\n      }\n\n      var attrs = extract_attr( this.tree );\n\n      // make a references hash if it doesn't exist\n      if ( attrs.references === undefined ) {\n        attrs.references = {};\n      }\n\n      var b = this.loop_re_over_block(re, block, function( m ) {\n\n        if ( m[2] && m[2][0] == \"<\" && m[2][m[2].length-1] == \">\" )\n          m[2] = m[2].substring( 1, m[2].length - 1 );\n\n        var ref = attrs.references[ m[1].toLowerCase() ] = {\n          href: m[2]\n        };\n\n        if ( m[4] !== undefined )\n          ref.title = m[4];\n        else if ( m[5] !== undefined )\n          ref.title = m[5];\n\n      } );\n\n      if ( b.length )\n        next.unshift( mk_block( b, block.trailing ) );\n\n      return [];\n    },\n\n    para: function para( block, next ) {\n      // everything's a para!\n      return [ [\"para\"].concat( this.processInline( block ) ) ];\n    }\n  }\n};\n\nMarkdown.dialects.Gruber.inline = {\n\n    __oneElement__: function oneElement( text, patterns_or_re, previous_nodes ) {\n      var m,\n          res,\n          lastIndex = 0;\n\n      patterns_or_re = patterns_or_re || this.dialect.inline.__patterns__;\n      var re = new RegExp( \"([\\\\s\\\\S]*?)(\" + (patterns_or_re.source || patterns_or_re) + \")\" );\n\n      m = re.exec( text );\n      if (!m) {\n        // Just boring text\n        return [ text.length, text ];\n      }\n      else if ( m[1] ) {\n        // Some un-interesting text matched. Return that first\n        return [ m[1].length, m[1] ];\n      }\n\n      var res;\n      if ( m[2] in this.dialect.inline ) {\n        res = this.dialect.inline[ m[2] ].call(\n                  this,\n                  text.substr( m.index ), m, previous_nodes || [] );\n      }\n      // Default for now to make dev easier. just slurp special and output it.\n      res = res || [ m[2].length, m[2] ];\n      return res;\n    },\n\n    __call__: function inline( text, patterns ) {\n\n      var out = [],\n          res;\n\n      function add(x) {\n        //D:self.debug(\"  adding output\", uneval(x));\n        if ( typeof x == \"string\" && typeof out[out.length-1] == \"string\" )\n          out[ out.length-1 ] += x;\n        else\n          out.push(x);\n      }\n\n      while ( text.length > 0 ) {\n        res = this.dialect.inline.__oneElement__.call(this, text, patterns, out );\n        text = text.substr( res.shift() );\n        forEach(res, add )\n      }\n\n      return out;\n    },\n\n    // These characters are intersting elsewhere, so have rules for them so that\n    // chunks of plain text blocks don't include them\n    \"]\": function () {},\n    \"}\": function () {},\n\n    __escape__ : /^\\\\[\\\\`\\*_{}\\[\\]()#\\+.!\\-]/,\n\n    \"\\\\\": function escaped( text ) {\n      // [ length of input processed, node/children to add... ]\n      // Only esacape: \\ ` * _ { } [ ] ( ) # * + - . !\n      if ( this.dialect.inline.__escape__.exec( text ) )\n        return [ 2, text.charAt( 1 ) ];\n      else\n        // Not an esacpe\n        return [ 1, \"\\\\\" ];\n    },\n\n    \"![\": function image( text ) {\n\n      // Unlike images, alt text is plain text only. no other elements are\n      // allowed in there\n\n      // ![Alt text](/path/to/img.jpg \"Optional title\")\n      //      1          2            3       4         <--- captures\n      var m = text.match( /^!\\[(.*?)\\][ \\t]*\\([ \\t]*([^\")]*?)(?:[ \\t]+([\"'])(.*?)\\3)?[ \\t]*\\)/ );\n\n      if ( m ) {\n        if ( m[2] && m[2][0] == \"<\" && m[2][m[2].length-1] == \">\" )\n          m[2] = m[2].substring( 1, m[2].length - 1 );\n\n        m[2] = this.dialect.inline.__call__.call( this, m[2], /\\\\/ )[0];\n\n        var attrs = { alt: m[1], href: m[2] || \"\" };\n        if ( m[4] !== undefined)\n          attrs.title = m[4];\n\n        return [ m[0].length, [ \"img\", attrs ] ];\n      }\n\n      // ![Alt text][id]\n      m = text.match( /^!\\[(.*?)\\][ \\t]*\\[(.*?)\\]/ );\n\n      if ( m ) {\n        // We can't check if the reference is known here as it likely wont be\n        // found till after. Check it in md tree->hmtl tree conversion\n        return [ m[0].length, [ \"img_ref\", { alt: m[1], ref: m[2].toLowerCase(), original: m[0] } ] ];\n      }\n\n      // Just consume the '!['\n      return [ 2, \"![\" ];\n    },\n\n    \"[\": function link( text ) {\n\n      var orig = String(text);\n      // Inline content is possible inside `link text`\n      var res = Markdown.DialectHelpers.inline_until_char.call( this, text.substr(1), \"]\" );\n\n      // No closing ']' found. Just consume the [\n      if ( !res ) return [ 1, \"[\" ];\n\n      var consumed = 1 + res[ 0 ],\n          children = res[ 1 ],\n          link,\n          attrs;\n\n      // At this point the first [...] has been parsed. See what follows to find\n      // out which kind of link we are (reference or direct url)\n      text = text.substr( consumed );\n\n      // [link text](/path/to/img.jpg \"Optional title\")\n      //                 1            2       3         <--- captures\n      // This will capture up to the last paren in the block. We then pull\n      // back based on if there a matching ones in the url\n      //    ([here](/url/(test))\n      // The parens have to be balanced\n      var m = text.match( /^\\s*\\([ \\t]*([^\"']*)(?:[ \\t]+([\"'])(.*?)\\2)?[ \\t]*\\)/ );\n      if ( m ) {\n        var url = m[1];\n        consumed += m[0].length;\n\n        if ( url && url[0] == \"<\" && url[url.length-1] == \">\" )\n          url = url.substring( 1, url.length - 1 );\n\n        // If there is a title we don't have to worry about parens in the url\n        if ( !m[3] ) {\n          var open_parens = 1; // One open that isn't in the capture\n          for ( var len = 0; len < url.length; len++ ) {\n            switch ( url[len] ) {\n            case \"(\":\n              open_parens++;\n              break;\n            case \")\":\n              if ( --open_parens == 0) {\n                consumed -= url.length - len;\n                url = url.substring(0, len);\n              }\n              break;\n            }\n          }\n        }\n\n        // Process escapes only\n        url = this.dialect.inline.__call__.call( this, url, /\\\\/ )[0];\n\n        attrs = { href: url || \"\" };\n        if ( m[3] !== undefined)\n          attrs.title = m[3];\n\n        link = [ \"link\", attrs ].concat( children );\n        return [ consumed, link ];\n      }\n\n      // [Alt text][id]\n      // [Alt text] [id]\n      m = text.match( /^\\s*\\[(.*?)\\]/ );\n\n      if ( m ) {\n\n        consumed += m[ 0 ].length;\n\n        // [links][] uses links as its reference\n        attrs = { ref: ( m[ 1 ] || String(children) ).toLowerCase(),  original: orig.substr( 0, consumed ) };\n\n        link = [ \"link_ref\", attrs ].concat( children );\n\n        // We can't check if the reference is known here as it likely wont be\n        // found till after. Check it in md tree->hmtl tree conversion.\n        // Store the original so that conversion can revert if the ref isn't found.\n        return [ consumed, link ];\n      }\n\n      // [id]\n      // Only if id is plain (no formatting.)\n      if ( children.length == 1 && typeof children[0] == \"string\" ) {\n\n        attrs = { ref: children[0].toLowerCase(),  original: orig.substr( 0, consumed ) };\n        link = [ \"link_ref\", attrs, children[0] ];\n        return [ consumed, link ];\n      }\n\n      // Just consume the \"[\"\n      return [ 1, \"[\" ];\n    },\n\n\n    \"<\": function autoLink( text ) {\n      var m;\n\n      if ( ( m = text.match( /^<(?:((https?|ftp|mailto):[^>]+)|(.*?@.*?\\.[a-zA-Z]+))>/ ) ) != null ) {\n        if ( m[3] ) {\n          return [ m[0].length, [ \"link\", { href: \"mailto:\" + m[3] }, m[3] ] ];\n\n        }\n        else if ( m[2] == \"mailto\" ) {\n          return [ m[0].length, [ \"link\", { href: m[1] }, m[1].substr(\"mailto:\".length ) ] ];\n        }\n        else\n          return [ m[0].length, [ \"link\", { href: m[1] }, m[1] ] ];\n      }\n\n      return [ 1, \"<\" ];\n    },\n\n    \"`\": function inlineCode( text ) {\n      // Inline code block. as many backticks as you like to start it\n      // Always skip over the opening ticks.\n      var m = text.match( /(`+)(([\\s\\S]*?)\\1)/ );\n\n      if ( m && m[2] )\n        return [ m[1].length + m[2].length, [ \"inlinecode\", m[3] ] ];\n      else {\n        // TODO: No matching end code found - warn!\n        return [ 1, \"`\" ];\n      }\n    },\n\n    \"  \\n\": function lineBreak( text ) {\n      return [ 3, [ \"linebreak\" ] ];\n    }\n\n};\n\n// Meta Helper/generator method for em and strong handling\nfunction strong_em( tag, md ) {\n\n  var state_slot = tag + \"_state\",\n      other_slot = tag == \"strong\" ? \"em_state\" : \"strong_state\";\n\n  function CloseTag(len) {\n    this.len_after = len;\n    this.name = \"close_\" + md;\n  }\n\n  return function ( text, orig_match ) {\n\n    if ( this[state_slot][0] == md ) {\n      // Most recent em is of this type\n      //D:this.debug(\"closing\", md);\n      this[state_slot].shift();\n\n      // \"Consume\" everything to go back to the recrusion in the else-block below\n      return[ text.length, new CloseTag(text.length-md.length) ];\n    }\n    else {\n      // Store a clone of the em/strong states\n      var other = this[other_slot].slice(),\n          state = this[state_slot].slice();\n\n      this[state_slot].unshift(md);\n\n      //D:this.debug_indent += \"  \";\n\n      // Recurse\n      var res = this.processInline( text.substr( md.length ) );\n      //D:this.debug_indent = this.debug_indent.substr(2);\n\n      var last = res[res.length - 1];\n\n      //D:this.debug(\"processInline from\", tag + \": \", uneval( res ) );\n\n      var check = this[state_slot].shift();\n      if ( last instanceof CloseTag ) {\n        res.pop();\n        // We matched! Huzzah.\n        var consumed = text.length - last.len_after;\n        return [ consumed, [ tag ].concat(res) ];\n      }\n      else {\n        // Restore the state of the other kind. We might have mistakenly closed it.\n        this[other_slot] = other;\n        this[state_slot] = state;\n\n        // We can't reuse the processed result as it could have wrong parsing contexts in it.\n        return [ md.length, md ];\n      }\n    }\n  }; // End returned function\n}\n\nMarkdown.dialects.Gruber.inline[\"**\"] = strong_em(\"strong\", \"**\");\nMarkdown.dialects.Gruber.inline[\"__\"] = strong_em(\"strong\", \"__\");\nMarkdown.dialects.Gruber.inline[\"*\"]  = strong_em(\"em\", \"*\");\nMarkdown.dialects.Gruber.inline[\"_\"]  = strong_em(\"em\", \"_\");\n\n\n// Build default order from insertion order.\nMarkdown.buildBlockOrder = function(d) {\n  var ord = [];\n  for ( var i in d ) {\n    if ( i == \"__order__\" || i == \"__call__\" ) continue;\n    ord.push( i );\n  }\n  d.__order__ = ord;\n};\n\n// Build patterns for inline matcher\nMarkdown.buildInlinePatterns = function(d) {\n  var patterns = [];\n\n  for ( var i in d ) {\n    // __foo__ is reserved and not a pattern\n    if ( i.match( /^__.*__$/) ) continue;\n    var l = i.replace( /([\\\\.*+?|()\\[\\]{}])/g, \"\\\\$1\" )\n             .replace( /\\n/, \"\\\\n\" );\n    patterns.push( i.length == 1 ? l : \"(?:\" + l + \")\" );\n  }\n\n  patterns = patterns.join(\"|\");\n  d.__patterns__ = patterns;\n  //print(\"patterns:\", uneval( patterns ) );\n\n  var fn = d.__call__;\n  d.__call__ = function(text, pattern) {\n    if ( pattern != undefined ) {\n      return fn.call(this, text, pattern);\n    }\n    else\n    {\n      return fn.call(this, text, patterns);\n    }\n  };\n};\n\nMarkdown.DialectHelpers = {};\nMarkdown.DialectHelpers.inline_until_char = function( text, want ) {\n  var consumed = 0,\n      nodes = [];\n\n  while ( true ) {\n    if ( text.charAt( consumed ) == want ) {\n      // Found the character we were looking for\n      consumed++;\n      return [ consumed, nodes ];\n    }\n\n    if ( consumed >= text.length ) {\n      // No closing char found. Abort.\n      return null;\n    }\n\n    var res = this.dialect.inline.__oneElement__.call(this, text.substr( consumed ) );\n    consumed += res[ 0 ];\n    // Add any returned nodes.\n    nodes.push.apply( nodes, res.slice( 1 ) );\n  }\n}\n\n// Helper function to make sub-classing a dialect easier\nMarkdown.subclassDialect = function( d ) {\n  function Block() {}\n  Block.prototype = d.block;\n  function Inline() {}\n  Inline.prototype = d.inline;\n\n  return { block: new Block(), inline: new Inline() };\n};\n\nMarkdown.buildBlockOrder ( Markdown.dialects.Gruber.block );\nMarkdown.buildInlinePatterns( Markdown.dialects.Gruber.inline );\n\nMarkdown.dialects.Maruku = Markdown.subclassDialect( Markdown.dialects.Gruber );\n\nMarkdown.dialects.Maruku.processMetaHash = function processMetaHash( meta_string ) {\n  var meta = split_meta_hash( meta_string ),\n      attr = {};\n\n  for ( var i = 0; i < meta.length; ++i ) {\n    // id: #foo\n    if ( /^#/.test( meta[ i ] ) ) {\n      attr.id = meta[ i ].substring( 1 );\n    }\n    // class: .foo\n    else if ( /^\\./.test( meta[ i ] ) ) {\n      // if class already exists, append the new one\n      if ( attr[\"class\"] ) {\n        attr[\"class\"] = attr[\"class\"] + meta[ i ].replace( /./, \" \" );\n      }\n      else {\n        attr[\"class\"] = meta[ i ].substring( 1 );\n      }\n    }\n    // attribute: foo=bar\n    else if ( /\\=/.test( meta[ i ] ) ) {\n      var s = meta[ i ].split( /\\=/ );\n      attr[ s[ 0 ] ] = s[ 1 ];\n    }\n  }\n\n  return attr;\n}\n\nfunction split_meta_hash( meta_string ) {\n  var meta = meta_string.split( \"\" ),\n      parts = [ \"\" ],\n      in_quotes = false;\n\n  while ( meta.length ) {\n    var letter = meta.shift();\n    switch ( letter ) {\n      case \" \" :\n        // if we're in a quoted section, keep it\n        if ( in_quotes ) {\n          parts[ parts.length - 1 ] += letter;\n        }\n        // otherwise make a new part\n        else {\n          parts.push( \"\" );\n        }\n        break;\n      case \"'\" :\n      case '\"' :\n        // reverse the quotes and move straight on\n        in_quotes = !in_quotes;\n        break;\n      case \"\\\\\" :\n        // shift off the next letter to be used straight away.\n        // it was escaped so we'll keep it whatever it is\n        letter = meta.shift();\n      default :\n        parts[ parts.length - 1 ] += letter;\n        break;\n    }\n  }\n\n  return parts;\n}\n\nMarkdown.dialects.Maruku.block.document_meta = function document_meta( block, next ) {\n  // we're only interested in the first block\n  if ( block.lineNumber > 1 ) return undefined;\n\n  // document_meta blocks consist of one or more lines of `Key: Value\\n`\n  if ( ! block.match( /^(?:\\w+:.*\\n)*\\w+:.*$/ ) ) return undefined;\n\n  // make an attribute node if it doesn't exist\n  if ( !extract_attr( this.tree ) ) {\n    this.tree.splice( 1, 0, {} );\n  }\n\n  var pairs = block.split( /\\n/ );\n  for ( p in pairs ) {\n    var m = pairs[ p ].match( /(\\w+):\\s*(.*)$/ ),\n        key = m[ 1 ].toLowerCase(),\n        value = m[ 2 ];\n\n    this.tree[ 1 ][ key ] = value;\n  }\n\n  // document_meta produces no content!\n  return [];\n};\n\nMarkdown.dialects.Maruku.block.block_meta = function block_meta( block, next ) {\n  // check if the last line of the block is an meta hash\n  var m = block.match( /(^|\\n) {0,3}\\{:\\s*((?:\\\\\\}|[^\\}])*)\\s*\\}$/ );\n  if ( !m ) return undefined;\n\n  // process the meta hash\n  var attr = this.dialect.processMetaHash( m[ 2 ] );\n\n  var hash;\n\n  // if we matched ^ then we need to apply meta to the previous block\n  if ( m[ 1 ] === \"\" ) {\n    var node = this.tree[ this.tree.length - 1 ];\n    hash = extract_attr( node );\n\n    // if the node is a string (rather than JsonML), bail\n    if ( typeof node === \"string\" ) return undefined;\n\n    // create the attribute hash if it doesn't exist\n    if ( !hash ) {\n      hash = {};\n      node.splice( 1, 0, hash );\n    }\n\n    // add the attributes in\n    for ( a in attr ) {\n      hash[ a ] = attr[ a ];\n    }\n\n    // return nothing so the meta hash is removed\n    return [];\n  }\n\n  // pull the meta hash off the block and process what's left\n  var b = block.replace( /\\n.*$/, \"\" ),\n      result = this.processBlock( b, [] );\n\n  // get or make the attributes hash\n  hash = extract_attr( result[ 0 ] );\n  if ( !hash ) {\n    hash = {};\n    result[ 0 ].splice( 1, 0, hash );\n  }\n\n  // attach the attributes to the block\n  for ( a in attr ) {\n    hash[ a ] = attr[ a ];\n  }\n\n  return result;\n};\n\nMarkdown.dialects.Maruku.block.definition_list = function definition_list( block, next ) {\n  // one or more terms followed by one or more definitions, in a single block\n  var tight = /^((?:[^\\s:].*\\n)+):\\s+([\\s\\S]+)$/,\n      list = [ \"dl\" ],\n      i, m;\n\n  // see if we're dealing with a tight or loose block\n  if ( ( m = block.match( tight ) ) ) {\n    // pull subsequent tight DL blocks out of `next`\n    var blocks = [ block ];\n    while ( next.length && tight.exec( next[ 0 ] ) ) {\n      blocks.push( next.shift() );\n    }\n\n    for ( var b = 0; b < blocks.length; ++b ) {\n      var m = blocks[ b ].match( tight ),\n          terms = m[ 1 ].replace( /\\n$/, \"\" ).split( /\\n/ ),\n          defns = m[ 2 ].split( /\\n:\\s+/ );\n\n      // print( uneval( m ) );\n\n      for ( i = 0; i < terms.length; ++i ) {\n        list.push( [ \"dt\", terms[ i ] ] );\n      }\n\n      for ( i = 0; i < defns.length; ++i ) {\n        // run inline processing over the definition\n        list.push( [ \"dd\" ].concat( this.processInline( defns[ i ].replace( /(\\n)\\s+/, \"$1\" ) ) ) );\n      }\n    }\n  }\n  else {\n    return undefined;\n  }\n\n  return [ list ];\n};\n\n// splits on unescaped instances of @ch. If @ch is not a character the result\n// can be unpredictable\n\nMarkdown.dialects.Maruku.block.table = function table (block, next) {\n\n    var _split_on_unescaped = function(s, ch) {\n        ch = ch || '\\\\s';\n        if (ch.match(/^[\\\\|\\[\\]{}?*.+^$]$/)) { ch = '\\\\' + ch; }\n        var res = [ ],\n            r = new RegExp('^((?:\\\\\\\\.|[^\\\\\\\\' + ch + '])*)' + ch + '(.*)'),\n            m;\n        while(m = s.match(r)) {\n            res.push(m[1]);\n            s = m[2];\n        }\n        res.push(s);\n        return res;\n    }\n\n    var leading_pipe = /^ {0,3}\\|(.+)\\n {0,3}\\|\\s*([\\-:]+[\\-| :]*)\\n((?:\\s*\\|.*(?:\\n|$))*)(?=\\n|$)/,\n        // find at least an unescaped pipe in each line\n        no_leading_pipe = /^ {0,3}(\\S(?:\\\\.|[^\\\\|])*\\|.*)\\n {0,3}([\\-:]+\\s*\\|[\\-| :]*)\\n((?:(?:\\\\.|[^\\\\|])*\\|.*(?:\\n|$))*)(?=\\n|$)/,\n        i, m;\n    if (m = block.match(leading_pipe)) {\n        // remove leading pipes in contents\n        // (header and horizontal rule already have the leading pipe left out)\n        m[3] = m[3].replace(/^\\s*\\|/gm, '');\n    } else if (! ( m = block.match(no_leading_pipe))) {\n        return undefined;\n    }\n\n    var table = [ \"table\", [ \"thead\", [ \"tr\" ] ], [ \"tbody\" ] ];\n\n    // remove trailing pipes, then split on pipes\n    // (no escaped pipes are allowed in horizontal rule)\n    m[2] = m[2].replace(/\\|\\s*$/, '').split('|');\n\n    // process alignment\n    var html_attrs = [ ];\n    forEach (m[2], function (s) {\n        if (s.match(/^\\s*-+:\\s*$/))       html_attrs.push({align: \"right\"});\n        else if (s.match(/^\\s*:-+\\s*$/))  html_attrs.push({align: \"left\"});\n        else if (s.match(/^\\s*:-+:\\s*$/)) html_attrs.push({align: \"center\"});\n        else                              html_attrs.push({});\n    });\n\n    // now for the header, avoid escaped pipes\n    m[1] = _split_on_unescaped(m[1].replace(/\\|\\s*$/, ''), '|');\n    for (i = 0; i < m[1].length; i++) {\n        table[1][1].push(['th', html_attrs[i] || {}].concat(\n            this.processInline(m[1][i].trim())));\n    }\n\n    // now for body contents\n    forEach (m[3].replace(/\\|\\s*$/mg, '').split('\\n'), function (row) {\n        var html_row = ['tr'];\n        row = _split_on_unescaped(row, '|');\n        for (i = 0; i < row.length; i++) {\n            html_row.push(['td', html_attrs[i] || {}].concat(this.processInline(row[i].trim())));\n        }\n        table[2].push(html_row);\n    }, this);\n\n    return [table];\n}\n\nMarkdown.dialects.Maruku.inline[ \"{:\" ] = function inline_meta( text, matches, out ) {\n  if ( !out.length ) {\n    return [ 2, \"{:\" ];\n  }\n\n  // get the preceeding element\n  var before = out[ out.length - 1 ];\n\n  if ( typeof before === \"string\" ) {\n    return [ 2, \"{:\" ];\n  }\n\n  // match a meta hash\n  var m = text.match( /^\\{:\\s*((?:\\\\\\}|[^\\}])*)\\s*\\}/ );\n\n  // no match, false alarm\n  if ( !m ) {\n    return [ 2, \"{:\" ];\n  }\n\n  // attach the attributes to the preceeding element\n  var meta = this.dialect.processMetaHash( m[ 1 ] ),\n      attr = extract_attr( before );\n\n  if ( !attr ) {\n    attr = {};\n    before.splice( 1, 0, attr );\n  }\n\n  for ( var k in meta ) {\n    attr[ k ] = meta[ k ];\n  }\n\n  // cut out the string and replace it with nothing\n  return [ m[ 0 ].length, \"\" ];\n};\n\nMarkdown.dialects.Maruku.inline.__escape__ = /^\\\\[\\\\`\\*_{}\\[\\]()#\\+.!\\-|:]/;\n\nMarkdown.buildBlockOrder ( Markdown.dialects.Maruku.block );\nMarkdown.buildInlinePatterns( Markdown.dialects.Maruku.inline );\n\nvar isArray = Array.isArray || function(obj) {\n  return Object.prototype.toString.call(obj) == \"[object Array]\";\n};\n\nvar forEach;\n// Don't mess with Array.prototype. Its not friendly\nif ( Array.prototype.forEach ) {\n  forEach = function( arr, cb, thisp ) {\n    return arr.forEach( cb, thisp );\n  };\n}\nelse {\n  forEach = function(arr, cb, thisp) {\n    for (var i = 0; i < arr.length; i++) {\n      cb.call(thisp || arr, arr[i], i, arr);\n    }\n  }\n}\n\nvar isEmpty = function( obj ) {\n  for ( var key in obj ) {\n    if ( hasOwnProperty.call( obj, key ) ) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction extract_attr( jsonml ) {\n  return isArray(jsonml)\n      && jsonml.length > 1\n      && typeof jsonml[ 1 ] === \"object\"\n      && !( isArray(jsonml[ 1 ]) )\n      ? jsonml[ 1 ]\n      : undefined;\n}\n\n\n\n/**\n *  renderJsonML( jsonml[, options] ) -> String\n *  - jsonml (Array): JsonML array to render to XML\n *  - options (Object): options\n *\n *  Converts the given JsonML into well-formed XML.\n *\n *  The options currently understood are:\n *\n *  - root (Boolean): wether or not the root node should be included in the\n *    output, or just its children. The default `false` is to not include the\n *    root itself.\n */\nexpose.renderJsonML = function( jsonml, options ) {\n  options = options || {};\n  // include the root element in the rendered output?\n  options.root = options.root || false;\n\n  var content = [];\n\n  if ( options.root ) {\n    content.push( render_tree( jsonml ) );\n  }\n  else {\n    jsonml.shift(); // get rid of the tag\n    if ( jsonml.length && typeof jsonml[ 0 ] === \"object\" && !( jsonml[ 0 ] instanceof Array ) ) {\n      jsonml.shift(); // get rid of the attributes\n    }\n\n    while ( jsonml.length ) {\n      content.push( render_tree( jsonml.shift() ) );\n    }\n  }\n\n  return content.join( \"\\n\\n\" );\n};\n\nfunction escapeHTML( text ) {\n  return text.replace( /&/g, \"&amp;\" )\n             .replace( /</g, \"&lt;\" )\n             .replace( />/g, \"&gt;\" )\n             .replace( /\"/g, \"&quot;\" )\n             .replace( /'/g, \"&#39;\" );\n}\n\nfunction render_tree( jsonml ) {\n  // basic case\n  if ( typeof jsonml === \"string\" ) {\n    return escapeHTML( jsonml );\n  }\n\n  var tag = jsonml.shift(),\n      attributes = {},\n      content = [];\n\n  if ( jsonml.length && typeof jsonml[ 0 ] === \"object\" && !( jsonml[ 0 ] instanceof Array ) ) {\n    attributes = jsonml.shift();\n  }\n\n  while ( jsonml.length ) {\n    content.push( render_tree( jsonml.shift() ) );\n  }\n\n  var tag_attrs = \"\";\n  for ( var a in attributes ) {\n    tag_attrs += \" \" + a + '=\"' + escapeHTML( attributes[ a ] ) + '\"';\n  }\n\n  // be careful about adding whitespace here for inline elements\n  if ( tag == \"img\" || tag == \"br\" || tag == \"hr\" ) {\n    return \"<\"+ tag + tag_attrs + \"/>\";\n  }\n  else {\n    return \"<\"+ tag + tag_attrs + \">\" + content.join( \"\" ) + \"</\" + tag + \">\";\n  }\n}\n\nfunction convert_tree_to_html( tree, references, options ) {\n  var i;\n  options = options || {};\n\n  // shallow clone\n  var jsonml = tree.slice( 0 );\n\n  if ( typeof options.preprocessTreeNode === \"function\" ) {\n      jsonml = options.preprocessTreeNode(jsonml, references);\n  }\n\n  // Clone attributes if they exist\n  var attrs = extract_attr( jsonml );\n  if ( attrs ) {\n    jsonml[ 1 ] = {};\n    for ( i in attrs ) {\n      jsonml[ 1 ][ i ] = attrs[ i ];\n    }\n    attrs = jsonml[ 1 ];\n  }\n\n  // basic case\n  if ( typeof jsonml === \"string\" ) {\n    return jsonml;\n  }\n\n  // convert this node\n  switch ( jsonml[ 0 ] ) {\n    case \"header\":\n      jsonml[ 0 ] = \"h\" + jsonml[ 1 ].level;\n      delete jsonml[ 1 ].level;\n      break;\n    case \"bulletlist\":\n      jsonml[ 0 ] = \"ul\";\n      break;\n    case \"numberlist\":\n      jsonml[ 0 ] = \"ol\";\n      break;\n    case \"listitem\":\n      jsonml[ 0 ] = \"li\";\n      break;\n    case \"para\":\n      jsonml[ 0 ] = \"p\";\n      break;\n    case \"markdown\":\n      jsonml[ 0 ] = \"html\";\n      if ( attrs ) delete attrs.references;\n      break;\n    case \"code_block\":\n      jsonml[ 0 ] = \"pre\";\n      i = attrs ? 2 : 1;\n      var code = [ \"code\" ];\n      code.push.apply( code, jsonml.splice( i, jsonml.length - i ) );\n      jsonml[ i ] = code;\n      break;\n    case \"inlinecode\":\n      jsonml[ 0 ] = \"code\";\n      break;\n    case \"img\":\n      jsonml[ 1 ].src = jsonml[ 1 ].href;\n      delete jsonml[ 1 ].href;\n      break;\n    case \"linebreak\":\n      jsonml[ 0 ] = \"br\";\n    break;\n    case \"link\":\n      jsonml[ 0 ] = \"a\";\n      break;\n    case \"link_ref\":\n      jsonml[ 0 ] = \"a\";\n\n      // grab this ref and clean up the attribute node\n      var ref = references[ attrs.ref ];\n\n      // if the reference exists, make the link\n      if ( ref ) {\n        delete attrs.ref;\n\n        // add in the href and title, if present\n        attrs.href = ref.href;\n        if ( ref.title ) {\n          attrs.title = ref.title;\n        }\n\n        // get rid of the unneeded original text\n        delete attrs.original;\n      }\n      // the reference doesn't exist, so revert to plain text\n      else {\n        return attrs.original;\n      }\n      break;\n    case \"img_ref\":\n      jsonml[ 0 ] = \"img\";\n\n      // grab this ref and clean up the attribute node\n      var ref = references[ attrs.ref ];\n\n      // if the reference exists, make the link\n      if ( ref ) {\n        delete attrs.ref;\n\n        // add in the href and title, if present\n        attrs.src = ref.href;\n        if ( ref.title ) {\n          attrs.title = ref.title;\n        }\n\n        // get rid of the unneeded original text\n        delete attrs.original;\n      }\n      // the reference doesn't exist, so revert to plain text\n      else {\n        return attrs.original;\n      }\n      break;\n  }\n\n  // convert all the children\n  i = 1;\n\n  // deal with the attribute node, if it exists\n  if ( attrs ) {\n    // if there are keys, skip over it\n    for ( var key in jsonml[ 1 ] ) {\n        i = 2;\n        break;\n    }\n    // if there aren't, remove it\n    if ( i === 1 ) {\n      jsonml.splice( i, 1 );\n    }\n  }\n\n  for ( ; i < jsonml.length; ++i ) {\n    jsonml[ i ] = convert_tree_to_html( jsonml[ i ], references, options );\n  }\n\n  return jsonml;\n}\n\n\n// merges adjacent text nodes into a single node\nfunction merge_text_nodes( jsonml ) {\n  // skip the tag name and attribute hash\n  var i = extract_attr( jsonml ) ? 2 : 1;\n\n  while ( i < jsonml.length ) {\n    // if it's a string check the next item too\n    if ( typeof jsonml[ i ] === \"string\" ) {\n      if ( i + 1 < jsonml.length && typeof jsonml[ i + 1 ] === \"string\" ) {\n        // merge the second string into the first and remove it\n        jsonml[ i ] += jsonml.splice( i + 1, 1 )[ 0 ];\n      }\n      else {\n        ++i;\n      }\n    }\n    // if it's not a string recurse\n    else {\n      merge_text_nodes( jsonml[ i ] );\n      ++i;\n    }\n  }\n}\n\n} )( (function() {\n  if ( typeof exports === \"undefined\" ) {\n    window.markdown = {};\n    return window.markdown;\n  }\n  else {\n    return exports;\n  }\n} )() );\n",
            "type": "application/javascript",
            "title": "$:/plugins/tiddlywiki/markdown/markdown.js",
            "module-type": "library"
        },
        "$:/plugins/tiddlywiki/markdown/images/new-markdown-button": {
            "title": "$:/plugins/tiddlywiki/markdown/images/new-markdown-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-new-markdown-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n    <g fill-rule=\"evenodd\">\n        <rect x=\"80\" y=\"96\" width=\"48\" height=\"16\" rx=\"8\"></rect>\n        <rect x=\"96\" y=\"80\" width=\"16\" height=\"48\" rx=\"8\"></rect>\n        <path d=\"M3.23876972,39.5396716 C3.23876972,35.9653274 6.13586353,33.0691646 9.7141757,33.0691646 L98.1283744,33.0691646 C101.706101,33.0691646 104.60378,35.9646626 104.60378,39.5396716 L104.60378,84.8296213 C104.60378,88.4039654 101.706687,91.3001282 98.1283744,91.3001282 L9.7141757,91.3001282 C6.13644944,91.3001282 3.23876972,88.4046302 3.23876972,84.8296213 L3.23876972,39.5396716 L3.23876972,39.5396716 Z M-2.15298617,39.5396716 L-2.15298617,84.8296213 C-2.15298617,91.3833243 3.15957363,96.6918841 9.7141757,96.6918841 L98.1283744,96.6918841 C104.684083,96.6918841 109.995536,91.382138 109.995536,84.8296213 L109.995536,39.5396716 C109.995536,32.9859686 104.682977,27.6774087 98.1283744,27.6774087 L9.7141757,27.6774087 C3.15846686,27.6774087 -2.15298617,32.9871549 -2.15298617,39.5396716 Z M14.0222815,80.5166164 L14.0222815,43.8526764 L24.8057933,43.8526764 L35.589305,57.3320661 L46.3728168,43.8526764 L57.1563286,43.8526764 L57.1563286,80.5166164 L46.3728168,80.5166164 L46.3728168,59.4887685 L35.589305,72.9681582 L24.8057933,59.4887685 L24.8057933,80.5166164 L14.0222815,80.5166164 Z M81.4192301,80.5166164 L65.2439624,62.723822 L76.0274742,62.723822 L76.0274742,43.8526764 L86.810986,43.8526764 L86.810986,62.723822 L97.5944978,62.723822 L81.4192301,80.5166164 Z\"transform=\"translate(53.921275, 62.184646) rotate(-60.000000) translate(-53.921275, -62.184646) \"></path>\n    </g>\n</svg>"
        },
        "$:/plugins/tiddlywiki/markdown/new-markdown-button": {
            "title": "$:/plugins/tiddlywiki/markdown/new-markdown-button",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/plugins/tiddlywiki/markdown/images/new-markdown-button}} {{$:/language/Buttons/NewMarkdown/Caption}}",
            "description": "{{$:/language/Buttons/NewMarkdown/Hint}}",
            "list-after": "$:/core/ui/Buttons/new-tiddler",
            "text": "<$button tooltip={{$:/language/Buttons/NewMarkdown/Hint}} aria-label={{$:/language/Buttons/NewMarkdown/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-new-tiddler\" type=\"text/x-markdown\"/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/plugins/tiddlywiki/markdown/images/new-markdown-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewMarkdown/Caption}}/></span>\n</$list>\n</$button>\n"
        },
        "$:/plugins/tiddlywiki/markdown/readme": {
            "title": "$:/plugins/tiddlywiki/markdown/readme",
            "text": "This is a TiddlyWiki plugin for parsing Markdown text, based on the [[markdown-js|https://github.com/evilstreak/markdown-js]] project from Dominic Baggott. \n\nIt is completely self-contained, and doesn't need an Internet connection in order to work. It works both in the browser and under Node.js.\n\n[[Source code|https://github.com/Jermolene/TiddlyWiki5/blob/master/plugins/tiddlywiki/markdown]]\n"
        },
        "$:/plugins/tiddlywiki/markdown/usage": {
            "title": "$:/plugins/tiddlywiki/markdown/usage",
            "text": "! Markdown Dialects\n\nBy default the markdown parser recognises the original dialect of Markdown [[as described by John Gruber|http://daringfireball.net/projects/markdown/]]. An extended dialect called \"Maruku\" is also included that provides table support and other advanced features. The syntax extensions are modelled on those of [[PHP Markdown Extra|https://michelf.ca/projects/php-markdown/extra/]].\n\nThe configuration tiddler [[$:/config/markdown/dialect]] determines which dialect is used:\n\n|!Dialect |!Description |\n|Gruber |Standard Markdown |\n|Maruku |Extended Maruku Markdown |\n\n\n! Creating ~WikiLinks\n\nCreate wiki links with the usual Markdown link syntax targeting `#` and the target tiddler title:\n\n```\n[link text](#TiddlerTitle)\n```\n\n! Images\n\nMarkdown image syntax can be used to reference images by tiddler title or an external URI. For example:\n\n```\n![alt text](/path/to/img.jpg \"Title\")\n\n![alt text](Motovun Jack.jpg \"Title\")\n```\n"
        },
        "$:/plugins/tiddlywiki/markdown/wrapper.js": {
            "text": "/*\\\ntitle: $:/plugins/tiddlywiki/markdown/wrapper.js\ntype: application/javascript\nmodule-type: parser\n\nWraps up the markdown-js parser for use in TiddlyWiki5\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar markdown = require(\"$:/plugins/tiddlywiki/markdown/markdown.js\");\n\nvar CONFIG_DIALECT_TIDDLER = \"$:/config/markdown/dialect\",\n\tDEFAULT_DIALECT = \"Gruber\";\n\nfunction transformNodes(nodes) {\n\tvar results = [];\n\tfor(var index=0; index<nodes.length; index++) {\n\t\tresults.push(transformNode(nodes[index]));\n\t}\n\treturn results;\n}\n\nfunction transformNode(node) {\n\tif($tw.utils.isArray(node)) {\n\t\tvar p = 0,\n\t\t\twidget = {type: \"element\", tag: node[p++]};\n\t\tif(!$tw.utils.isArray(node[p]) && typeof(node[p]) === \"object\") {\n\t\t\twidget.attributes = {};\n\t\t\t$tw.utils.each(node[p++],function(value,name) {\n\t\t\t\twidget.attributes[name] = {type: \"string\", value: value};\n\t\t\t});\n\t\t}\n\t\twidget.children = transformNodes(node.slice(p++));\n\t\t// Massage images into the image widget\n\t\tif(widget.tag === \"img\") {\n\t\t\twidget.type = \"image\";\n\t\t\tif(widget.attributes.alt) {\n\t\t\t\twidget.attributes.tooltip = widget.attributes.alt;\n\t\t\t\tdelete widget.attributes.alt;\n\t\t\t}\n\t\t\tif(widget.attributes.src) {\n\t\t\t\twidget.attributes.source = widget.attributes.src;\n\t\t\t\tdelete widget.attributes.src;\n\t\t\t}\n\t\t}\n\t\t// Convert internal links to proper wikilinks\n\t\tif (widget.tag === \"a\" && widget.attributes.href.value[0] === \"#\") {\n\t\t\twidget.type = \"link\";\n\t\t\twidget.attributes.to = widget.attributes.href;\n\t\t\tif (widget.attributes.to.type === \"string\") {\n\t\t\t\t//Remove '#' before conversion to wikilink\n\t\t\t\twidget.attributes.to.value = widget.attributes.to.value.substr(1);\n\t\t\t}\n\t\t\t//Children is fine\n\t\t\tdelete widget.tag;\n\t\t\tdelete widget.attributes.href;\n\t\t}\n\t\treturn widget;\n\t} else {\n\t\treturn {type: \"text\", text: node};\n\t}\n}\n\nvar MarkdownParser = function(type,text,options) {\n\tvar dialect = options.wiki.getTiddlerText(CONFIG_DIALECT_TIDDLER,DEFAULT_DIALECT),\n\t\tmarkdownTree = markdown.toHTMLTree(text,dialect),\n\t\tnode = $tw.utils.isArray(markdownTree[1]) ? markdownTree.slice(1) : markdownTree.slice(2);\n\tthis.tree = transformNodes(node);\n};\n\n/*\n\n[ 'html',\n  [ 'p', 'something' ],\n  [ 'h1',\n    'heading and ',\n    [ 'strong', 'other' ] ] ]\n\n*/\n\nexports[\"text/x-markdown\"] = MarkdownParser;\n\n})();\n\n",
            "title": "$:/plugins/tiddlywiki/markdown/wrapper.js",
            "type": "application/javascript",
            "module-type": "parser"
        }
    }
}
{
    "tiddlers": {
        "$:/plugins/tiddlywiki/mobiledragdrop/ios-drag-drop.js": {
            "text": "(function(doc) {\n\nfunction _exposeIosHtml5DragDropShim(config) {\n  log = noop; // noOp, remove this line to enable debugging\n\n  var coordinateSystemForElementFromPoint;\n\n  var DRAG_OVER_EMIT_FREQ = 50;\n\n  function main() {\n    config = config || {};\n    if (!config.hasOwnProperty(\"simulateAnchorClick\")) config.simulateAnchorClick = true;\n\n    coordinateSystemForElementFromPoint = navigator.userAgent.match(/OS [1-4](?:_\\d+)+ like Mac/) ? \"page\" : \"client\";\n\n    var div = doc.createElement('div');\n    var dragDiv = 'draggable' in div;\n    var evts = 'ondragstart' in div && 'ondrop' in div;\n\n    var needsPatch = !(dragDiv || evts) || /iPad|iPhone|iPod|Android/.test(navigator.userAgent);\n    log((needsPatch ? \"\" : \"not \") + \"patching html5 drag drop\");\n\n    if(!needsPatch) {\n      return;\n    }\n\n    if(!config.enableEnterLeave) {\n      DragDrop.prototype.synthesizeEnterLeave = noop;\n    }\n\n    if(config.holdToDrag){\n      doc.addEventListener(\"touchstart\", touchstartDelay(config.holdToDrag), {passive:false});\n    }\n    else {\n      doc.addEventListener(\"touchstart\", touchstart, {passive:false});\n    }\n  }\n\n  function DragDrop(event, el) {\n\n    this.dragData = {};\n    this.dragDataTypes = [];\n    this.dragImage = null;\n    this.dragImageTransform = null;\n    this.dragImageWebKitTransform = null;\n    this.customDragImage = null;\n    this.customDragImageX = null;\n    this.customDragImageY = null;\n    this.el = el || event.target;\n    this.dragOverTimer = null;\n    this.lastMoveEvent = null;\n\n    log(\"dragstart\");\n\n    if (this.dispatchDragStart()) {\n      this.createDragImage();\n      this.listen();\n    }\n  }\n\n  DragDrop.prototype = {\n    listen: function() {\n      var move = onEvt(doc, \"touchmove\", this.move, this);\n      var end = onEvt(doc, \"touchend\", ontouchend, this);\n      var cancel = onEvt(doc, \"touchcancel\", cleanup, this);\n\n      function ontouchend(event) {\n        this.dragend(event, event.target);\n        cleanup.call(this);\n      }\n      function cleanup() {\n        log(\"cleanup\");\n        this.dragDataTypes = [];\n        if (this.dragImage !== null) {\n          this.dragImage.parentNode.removeChild(this.dragImage);\n          this.dragImage = null;\n          this.dragImageTransform = null;\n          this.dragImageWebKitTransform = null;\n        }\n        this.customDragImage = null;\n        this.customDragImageX = null;\n        this.customDragImageY = null;\n        this.el = this.dragData = null;\n        return [move, end, cancel].forEach(function(handler) {\n          return handler.off();\n        });\n      }\n    },\n    move: function(event) {\n      event.preventDefault();\n      var pageXs = [], pageYs = [];\n      [].forEach.call(event.changedTouches, function(touch) {\n        pageXs.push(touch.pageX);\n        pageYs.push(touch.pageY);\n      });\n\n      var x = average(pageXs) - (this.customDragImageX || parseInt(this.dragImage.offsetWidth, 10) / 2);\n      var y = average(pageYs) - (this.customDragImageY || parseInt(this.dragImage.offsetHeight, 10) / 2);\n      this.translateDragImage(x, y);\n\n      this.synthesizeEnterLeave(event);\n      this.synthesizeOver(event);\n    },\n    // We use translate instead of top/left because of sub-pixel rendering and for the hope of better performance\n    // http://www.paulirish.com/2012/why-moving-elements-with-translate-is-better-than-posabs-topleft/\n    translateDragImage: function(x, y) {\n      var translate = \"translate(\" + x + \"px,\" + y + \"px) \";\n\n      if (this.dragImageWebKitTransform !== null) {\n        this.dragImage.style[\"-webkit-transform\"] = translate + this.dragImageWebKitTransform;\n      }\n      if (this.dragImageTransform !== null) {\n        this.dragImage.style.transform = translate + this.dragImageTransform;\n      }\n    },\n    synthesizeEnterLeave: function(event) {\n      var target = elementFromTouchEvent(this.el,event)\n      if (target != this.lastEnter) {\n        if (this.lastEnter) {\n          this.dispatchLeave(event);\n        }\n        this.lastEnter = target;\n        if (this.lastEnter) {\n          this.dispatchEnter(event);\n        }\n      }\n    },\n    synthesizeOver: function(event) {\n      this.lastMoveEvent = event;\n      if(this.lastEnter && !this.dragOverTimer) {\n        this.dragOverTimer = setInterval(this.dispatchOver.bind(this), DRAG_OVER_EMIT_FREQ);\n      }\n    },\n    clearDragOverTimer: function() {\n      if(this.dragOverTimer) {\n        clearInterval(this.dragOverTimer);\n        this.dragOverTimer = null;\n      }\n    },\n    dragend: function(event) {\n\n      // we'll dispatch drop if there's a target, then dragEnd.\n      // drop comes first http://www.whatwg.org/specs/web-apps/current-work/multipage/dnd.html#drag-and-drop-processing-model\n      log(\"dragend\");\n\n      if (this.lastEnter) {\n        this.dispatchLeave(event);\n      }\n\n      var target = elementFromTouchEvent(this.el,event)\n      if (target) {\n        log(\"found drop target \" + target.tagName);\n        this.dispatchDrop(target, event);\n      } else {\n        log(\"no drop target\");\n      }\n\n      var dragendEvt = doc.createEvent(\"Event\");\n      dragendEvt.initEvent(\"dragend\", true, true);\n      this.el.dispatchEvent(dragendEvt);\n      this.clearDragOverTimer();\n    },\n    dispatchDrop: function(target, event) {\n      var dropEvt = doc.createEvent(\"Event\");\n      dropEvt.initEvent(\"drop\", true, true);\n\n      var touch = event.changedTouches[0];\n      var x = touch[coordinateSystemForElementFromPoint + 'X'];\n      var y = touch[coordinateSystemForElementFromPoint + 'Y'];\n\n      var targetOffset = getOffset(target);\n\n      dropEvt.offsetX = x - targetOffset.x;\n      dropEvt.offsetY = y - targetOffset.y;\n\n      dropEvt.dataTransfer = {\n        types: this.dragDataTypes,\n        getData: function(type) {\n          return this.dragData[type];\n        }.bind(this),\n        dropEffect: \"move\"\n      };\n      dropEvt.preventDefault = function() {\n        // https://www.w3.org/Bugs/Public/show_bug.cgi?id=14638 - if we don't cancel it, we'll snap back\n      }.bind(this);\n\n      once(doc, \"drop\", function() {\n        log(\"drop event not canceled\");\n      },this);\n\n      target.dispatchEvent(dropEvt);\n    },\n    dispatchEnter: function(event) {\n\n      var enterEvt = doc.createEvent(\"Event\");\n      enterEvt.initEvent(\"dragenter\", true, true);\n      enterEvt.dataTransfer = {\n        types: this.dragDataTypes,\n        getData: function(type) {\n          return this.dragData[type];\n        }.bind(this)\n      };\n\n      var touch = event.changedTouches[0];\n      enterEvt.pageX = touch.pageX;\n      enterEvt.pageY = touch.pageY;\n      enterEvt.clientX = touch.clientX;\n      enterEvt.clientY = touch.clientY;\n\n      this.lastEnter.dispatchEvent(enterEvt);\n    },\n    dispatchOver: function() {\n\n      var overEvt = doc.createEvent(\"Event\");\n      overEvt.initEvent(\"dragover\", true, true);\n      overEvt.dataTransfer = {\n        types: this.dragDataTypes,\n        getData: function(type) {\n          return this.dragData[type];\n        }.bind(this)\n      };\n\n      var touch = this.lastMoveEvent.changedTouches[0];\n      overEvt.pageX = touch.pageX;\n      overEvt.pageY = touch.pageY;\n      overEvt.clientX = touch.clientX;\n      overEvt.clientY = touch.clientY;\n\n      this.lastEnter.dispatchEvent(overEvt);\n    },\n    dispatchLeave: function(event) {\n\n      var leaveEvt = doc.createEvent(\"Event\");\n      leaveEvt.initEvent(\"dragleave\", true, true);\n      leaveEvt.dataTransfer = {\n        types: this.dragDataTypes,\n        getData: function(type) {\n          return this.dragData[type];\n        }.bind(this)\n      };\n\n      var touch = event.changedTouches[0];\n      leaveEvt.pageX = touch.pageX;\n      leaveEvt.pageY = touch.pageY;\n      leaveEvt.clientX = touch.clientX;\n      leaveEvt.clientY = touch.clientY;\n\n      this.lastEnter.dispatchEvent(leaveEvt);\n      this.lastEnter = null;\n      this.clearDragOverTimer();\n    },\n    dispatchDragStart: function() {\n      var evt = doc.createEvent(\"Event\");\n      evt.initEvent(\"dragstart\", true, true);\n      evt.dataTransfer = {\n        setData: function(type, val) {\n          this.dragData[type] = val;\n          if (this.dragDataTypes.indexOf(type) == -1) {\n            this.dragDataTypes[this.dragDataTypes.length] = type;\n          }\n          return val;\n        }.bind(this),\n        setDragImage: function(el, x, y){\n          this.customDragImage = el;\n          this.customDragImageX = x\n          this.customDragImageY = y\n        }.bind(this),\n        dropEffect: \"move\"\n      };\n      return this.el.dispatchEvent(evt);\n    },\n    createDragImage: function() {\n      if (this.customDragImage) {\n        this.dragImage = this.customDragImage.cloneNode(true);\n        duplicateStyle(this.customDragImage, this.dragImage);\n      } else {\n        this.dragImage = this.el.cloneNode(true);\n        duplicateStyle(this.el, this.dragImage);\n      }\n      this.dragImage.style.opacity = \"0.5\";\n      this.dragImage.style.position = \"absolute\";\n      this.dragImage.style.left = \"0px\";\n      this.dragImage.style.top = \"0px\";\n      this.dragImage.style.zIndex = \"999999\";\n\n      var transform = this.dragImage.style.transform;\n      if (typeof transform !== \"undefined\") {\n        this.dragImageTransform = \"\";\n        if (transform != \"none\") {\n          this.dragImageTransform = transform.replace(/translate\\(\\D*\\d+[^,]*,\\D*\\d+[^,]*\\)\\s*/g, '');\n        }\n      }\n\n      var webkitTransform = this.dragImage.style[\"-webkit-transform\"];\n      if (typeof webkitTransform !== \"undefined\") {\n        this.dragImageWebKitTransform = \"\";\n        if (webkitTransform != \"none\") {\n          this.dragImageWebKitTransform = webkitTransform.replace(/translate\\(\\D*\\d+[^,]*,\\D*\\d+[^,]*\\)\\s*/g, '');\n        }\n      }\n\n      this.translateDragImage(-9999, -9999);\n\n      doc.body.appendChild(this.dragImage);\n    }\n  };\n\n  // delayed touch start event\n  function touchstartDelay(delay) {\n    return function(evt){\n      var el = evt.target;\n\n      do {\n        if (elementIsDraggable(el)) {\n          var heldItem = function() {\n            end.off();\n            cancel.off();\n            scroll.off();\n            touchstart(evt);\n          };\n\n          var onReleasedItem = function() {\n            end.off();\n            cancel.off();\n            scroll.off();\n            clearTimeout(timer);\n          };\n\n          var timer = setTimeout(heldItem, delay);\n\n          var end = onEvt(el, 'touchend', onReleasedItem, this);\n          var cancel = onEvt(el, 'touchcancel', onReleasedItem, this);\n          var scroll = onEvt(window, 'scroll', onReleasedItem, this);\n          break;\n        }\n      } while ((el = el.parentNode) && el !== doc.body);\n    };\n  };\n\n  // event listeners\n  function touchstart(evt) {\n    var el = evt.target;\n    do {\n      if (elementIsDraggable(el)) {\n        handleTouchStartOnAnchor(evt, el);\n\n        evt.preventDefault();\n        new DragDrop(evt,el);\n        break;\n      }\n    } while((el = el.parentNode) && el !== doc.body);\n  }\n\n  function elementIsDraggable(el){\n    // if an element is not draggable either explicitly or implicitly we can exit immediately\n    if(!el.draggable) return false;\n\n    // if an element has been explicitly set to be draggable we're good to go\n    if(el.hasAttribute(\"draggable\")) return true;\n\n    // otherwise we investigate the implicit option\n    return (!config.requireExplicitDraggable);\n  }\n\n  function elementIsAnchor(el){\n    return el.tagName.toLowerCase() == \"a\";\n  }\n\n  function handleTouchStartOnAnchor(evt, el){\n    // If draggable isn't explicitly set for anchors, then simulate a click event.\n    // Otherwise plain old vanilla links will stop working.\n    // https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Touch_events#Handling_clicks\n    if (!el.hasAttribute(\"draggable\") && elementIsAnchor(el) && config.simulateAnchorClick) {\n      var clickEvt = document.createEvent(\"MouseEvents\");\n      clickEvt.initMouseEvent(\"click\", true, true, el.ownerDocument.defaultView, 1,\n        evt.screenX, evt.screenY, evt.clientX, evt.clientY,\n        evt.ctrlKey, evt.altKey, evt.shiftKey, evt.metaKey, 0, null);\n      el.dispatchEvent(clickEvt);\n      log(\"Simulating click to anchor\");\n    }\n  }\n\n  // DOM helpers\n  function elementFromTouchEvent(el,event) {\n    var touch = event.changedTouches[0];\n    var target = doc.elementFromPoint(\n      touch[coordinateSystemForElementFromPoint + \"X\"],\n      touch[coordinateSystemForElementFromPoint + \"Y\"]\n    );\n    return target;\n  }\n\n  //calculate the offset position of an element (relative to the window, not the document)\n  function getOffset(el) {\n    var rect = el.getBoundingClientRect();\n    return {\n      \"x\": rect.left,\n      \"y\": rect.top\n    };\n  }\n\n  function onEvt(el, event, handler, context) {\n    if(context) {\n      handler = handler.bind(context);\n    }\n    el.addEventListener(event, handler, {passive:false});\n    return {\n      off: function() {\n        return el.removeEventListener(event, handler, {passive:false});\n      }\n    };\n  }\n\n  function once(el, event, handler, context) {\n    if(context) {\n      handler = handler.bind(context);\n    }\n    function listener(evt) {\n      handler(evt);\n      return el.removeEventListener(event,listener);\n    }\n    return el.addEventListener(event,listener);\n  }\n\n  // duplicateStyle expects dstNode to be a clone of srcNode\n  function duplicateStyle(srcNode, dstNode) {\n    // Is this node an element?\n    if (srcNode.nodeType == 1) {\n      // Remove any potential conflict attributes\n      dstNode.removeAttribute(\"id\");\n      dstNode.removeAttribute(\"class\");\n      dstNode.removeAttribute(\"style\");\n      dstNode.removeAttribute(\"draggable\");\n\n      // Clone the style\n      var cs = window.getComputedStyle(srcNode);\n      for (var i = 0; i < cs.length; i++) {\n        var csName = cs[i];\n        dstNode.style.setProperty(csName, cs.getPropertyValue(csName), cs.getPropertyPriority(csName));\n      }\n\n      // Pointer events as none makes the drag image transparent to document.elementFromPoint()\n      dstNode.style.pointerEvents = \"none\";\n    }\n\n    // Do the same for the children\n    if (srcNode.hasChildNodes()) {\n      for (var j = 0; j < srcNode.childNodes.length; j++) {\n        duplicateStyle(srcNode.childNodes[j], dstNode.childNodes[j]);\n      }\n    }\n  }\n\n  // general helpers\n  function log(msg) {\n    console.log(msg);\n  }\n\n  function average(arr) {\n    if (arr.length === 0) return 0;\n    return arr.reduce((function(s, v) {\n      return v + s;\n    }), 0) / arr.length;\n  }\n\n  function noop() {}\n\n  main();\n\n};\n\nif (typeof module === 'object' && typeof module.exports === 'object') {\n  module.exports = _exposeIosHtml5DragDropShim;\n} else if (typeof window !== 'undefined') {\n  _exposeIosHtml5DragDropShim(window.iosDragDropShim);\n}\n})(document);",
            "type": "application/javascript",
            "title": "$:/plugins/tiddlywiki/mobiledragdrop/ios-drag-drop.js"
        },
        "$:/plugins/tiddlywiki/mobiledragdrop/license": {
            "text": "Copyright (c) 2013 Tim Ruffles\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n",
            "type": "text/plain",
            "title": "$:/plugins/tiddlywiki/mobiledragdrop/license"
        },
        "$:/plugins/tiddlywiki/mobiledragdrop/rawmarkup": {
            "title": "$:/plugins/tiddlywiki/mobiledragdrop/rawmarkup",
            "tags": "$:/tags/RawMarkupWikified",
            "text": "`<script>\nvar iosDragDropShim = { enableEnterLeave: true, holdToDrag: 300 };`\n{{$:/plugins/tiddlywiki/mobiledragdrop/ios-drag-drop.js}}\n`</script>`\n"
        },
        "$:/plugins/tiddlywiki/mobiledragdrop/readme": {
            "title": "$:/plugins/tiddlywiki/mobiledragdrop/readme",
            "text": "This plugin provides a \"shim\" that enables HTML 5 compatible drag and drop operations on mobile browsers, including iOS and Android. The shim was created by Tim Ruffles and is published at https://github.com/timruffles/ios-html5-drag-drop-shim.\n\nAfter installing the plugin it is necessary to save the HTML file a second time before it will be fully enabled.\n"
        },
        "$:/plugins/tiddlywiki/mobiledragdrop/startup.js": {
            "text": "/*\\\ntitle: $:/plugins/tiddlywiki/mobiledragdrop/startup.js\ntype: application/javascript\nmodule-type: startup\n\nStartup initialisation\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"mobiledragdrop\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\twindow.addEventListener(\"touchmove\", function() {});\n};\n\n})();\n",
            "title": "$:/plugins/tiddlywiki/mobiledragdrop/startup.js",
            "type": "application/javascript",
            "module-type": "startup"
        }
    }
}
{
    "tiddlers": {
        "$:/config/AnimationDuration": {
            "text": "600",
            "type": "text/vnd.tiddlywiki",
            "title": "$:/config/AnimationDuration",
            "tags": "$:/irreverent-mudblood/ghostwriter",
            "revision": "0",
            "modifier": "venomspinner",
            "modified": "20161031174446166",
            "creator": "venomspinner",
            "created": "20161028170329291",
            "bag": "default"
        },
        "$:/core/ui/PageTemplate/sidebar": {
            "text": "<$scrollable fallthrough=\"no\" class=\"tc-sidebar-scrollable\">\n\n<div class=\"tc-sidebar-header\">\n\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"no\" retain=\"yes\" animate=\"yes\">\n\n{{||$:/core/ui/PageTemplate/pagecontrols}}\n\n<$transclude tiddler=\"$:/core/ui/SideBarLists\" mode=\"inline\"/>\n\n</$reveal>\n\n</div>\n\n</$scrollable>",
            "type": "text/vnd.tiddlywiki",
            "title": "$:/core/ui/PageTemplate/sidebar",
            "tags": "$:/tags/PageTemplate $:/irreverent-mudblood/ghostwriter",
            "revision": "0",
            "modified": "20161031174446017",
            "created": "20161030145349771",
            "bag": "default"
        },
        "$:/core/ui/TopBar/menu": {
            "text": "<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"no\" default=\"no\">\n<$button set=\"$:/state/sidebar\" setTo=\"no\" tooltip={{$:/language/Buttons/HideSideBar/Hint}} aria-label={{$:/language/Buttons/HideSideBar/Caption}} class=\"roundbtn\">\n<span>{{$:/core/images/right-arrow}}</span>\n{{$:/irreverent-mudblood/overlay-sidebar/backgroundstyle}}\n</$button>\n</$reveal>\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"no\" default=\"no\">\n<$button set=\"$:/state/sidebar\" setTo=\"yes\" tooltip={{$:/language/Buttons/ShowSideBar/Hint}} aria-label={{$:/language/Buttons/ShowSideBar/Caption}} class=\"roundbtn\"><span>{{$:/core/images/left-arrow}}</span>\n{{$:/irreverent-mudblood/overlay-sidebar/backgroundstyle2}}\n</$button>\n</$reveal>\n",
            "type": "text/vnd.tiddlywiki",
            "title": "$:/core/ui/TopBar/menu",
            "tags": "$:/tags/TopRightBar $:/irreverent-mudblood/ghostwriter",
            "revision": "0",
            "modifier": "Dr. Rizwan Ishak",
            "modified": "20161031174446206",
            "creator": "Dr. Rizwan Ishak",
            "created": "20161002082547234",
            "bag": "default"
        },
        "$:/DefaultTiddlers": {
            "text": "[!is[system]![TableOfContents]!sort[modified]limit[3]]\n",
            "type": "text/vnd.tiddlywiki",
            "title": "$:/DefaultTiddlers",
            "modified": "20161111182143694",
            "created": "20131127215321439"
        },
        "$:/irreverent-mudblood/overlay-sidebar/backgroundstyle": {
            "created": "20161030153934135",
            "text": "<style>\n@media only screen and (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n.tc-sidebar-scrollable { \nbackground-color: #FEFEFE; \nz-index: 1000 !important;\npadding: 42px 0 28px 42px;\nborder-left: 1px solid #e1e1e1;\n}\n}\n\n@media only screen and (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n.tc-sidebar-scrollable { \nposition:fixed !important;\nbackground-color:#FEFEFE; \npadding: 42px 0 28px 42px;\nz-index: 1000 !important; \nwidth:100% !important ; \nborder-left: 1px solid #e1e1e1;\nleft:0% !important;\ntop: 0px !important;\nbottom: 0 !important;\nright: 0 !important;\nmargin: 0 0 0 -20px !important;\n}\n}\n</style>",
            "type": "text/vnd.tiddlywiki",
            "title": "$:/irreverent-mudblood/overlay-sidebar/backgroundstyle",
            "tags": "$:/OverlaySidebar $:/irreverent-mudblood/ghostwriter",
            "revision": "0",
            "modified": "20161109105829329",
            "bag": "default"
        },
        "$:/irreverent-mudblood/overlay-sidebar/backgroundstyle2": {
            "text": "<style>.tc-sidebar-scrollable { background-color: rgba(0,0,0,0.0); z-index: -1; }</style>",
            "type": "text/vnd.tiddlywiki",
            "title": "$:/irreverent-mudblood/overlay-sidebar/backgroundstyle2",
            "tags": "$:/OverlaySidebar $:/irreverent-mudblood/ghostwriter",
            "revision": "0",
            "modifier": "Dr. Rizwan Ishak",
            "modified": "20161031174446321",
            "creator": "Dr. Rizwan Ishak",
            "created": "20160829073842702",
            "bag": "default"
        },
        "$:/irreverent-mudblood/overlay-sidebar/stylesheet": {
            "created": "20161030153009897",
            "text": ".roundbtn {\nbackground-color:{{!!roundbtnbg}};\nfont-size: 25px; \nposition: relative;\ndisplay: inline-block;\nwidth: 35px;\nheight: 35px;\ncursor: pointer; \nborder: none; \nborder-radius:100px; \nbox-shadow: 0 2px 5px 0 rgba(0, 0, 0, .26);\n\n}\n\n.roundbtn span svg{\nfont-size:15px;  \nposition: absolute;  \ntop: 0;  right: 0;    \nbottom: 0;    \nleft: 0;    \noverflow: auto;    \nwidth: 50%;    \nheight: 50%;    \nmargin: auto; \nopacity: 0.8;\nfill: {{!!roundbtnspan}};\n\n}\n.roundbtn:hover span svg{\nfont-size:15px;  \nposition: absolute;  \ntop: 0;  right: 0;    \nbottom: 0;    \nleft: 0;    \noverflow: auto;    \nmargin: auto; \nopacity:1;\nfill: {{!!roundbtnspan}} !important;\n}",
            "type": "text/vnd.tiddlywiki",
            "title": "$:/irreverent-mudblood/overlay-sidebar/stylesheet",
            "tags": "$:/tags/Stylesheet $:/OverlaySidebar $:/irreverent-mudblood/ghostwriter",
            "revision": "0",
            "modified": "20161111175422374",
            "bag": "default",
            "roundbtnbg": "#ee4056",
            "roundbtnspan": "#fff"
        },
        "$:/themes/ghostwriter/stylesheet/main": {
            "text": " \n---\n/* System */\n\n .tc-control-panel table .autowidthinput input {width:auto;}\n\n.tc-sidebar-lists .tc-tab-set > .tc-tab-content .tc-image-button img { margin: 0 !important; display:inline-block } \n\n---\n/*Base*/\n\n---\n\nhtml, body {\n  height: 100%;\n }\n\nbody {\n  background: #fefefe;\n  color: #424242;\n  font-family: \"Open Sans\", arial, sans-serif  !important;\n  font-size: 15px;\n }\n\n\n\nh1, h2, h3, h4, h5, h6 {\n  margin-bottom: 33px;\n  text-transform: none; \n}\n\nh1 {\n  font-size: 26px; }\n\nh2 {\n  font-size: 24px; }\n\nh3 {\n  font-size: 20px;\n  margin-bottom: 20px; }\n\nh4 {\n  font-size: 18px;\n  margin-bottom: 18px; }\n\nh5 {\n  font-size: 16px;\n  margin-bottom: 15px; }\n\nh6 {\n  font-size: 14px;\n  margin-bottom: 12px; }\n\np {\n  line-height: 1.8;\n  margin: 0 0 30px; }\n\na {\n  text-decoration: none; !important}\n\nul, ol {\n  list-style-position: inside ;\n  line-height: 1.8 ;\n  margin: 0 0 40px;\n  padding: 0 }\n  ul ul, ul ol, ol ul, ol ol {\n    margin: 10px 0 0 20px  }\n  ul li, ol li {\n    margin: 0 0 10px }\n    ul li:last-of-type, ol li:last-of-type {\n      margin-bottom: 0 }\n\nblockquote {\n  border-left: 1px dotted #303030;\n  margin: 40px 0;\n  padding: 5px 30px; }\n  blockquote p {\n    color: #AEADAD;\n    display: block;\n    font-style: italic;\n    margin: 0;\n    width: 100%; }\n\nimg {\n  display: block;\n  margin: 40px 0;\n  width: auto ;\n  max-width: 100%}\n\npre {\n  background: #F1F0EA !important;\n  border: 1px solid #DDDBCC !important;\n  border-radius: 3px !important;\n  margin: 0 0 40px !important;\n  padding: 15px 20px !important; }\n\nhr {\n  border: none !important;\n  border-bottom: 1px dotted #303030 !important;\n  margin: 45px 0 !important; }\n\ntable {\n    margin-bottom: 40px !important;\n    width: 100% !important;\n}\ntable tbody > tr:nth-child(odd) > td,\ntable tbody > tr:nth-child(odd) > th {\n    background-color: #f7f7f3 !important;\n}\ntable th {\n    padding: 0 10px 10px !important;\n    text-align: left !important;\n}\ntable td {\n    padding: 10px !important;\n}\ntable tr {\n    border-bottom: 1px dotted #AEADAD !important;\n}\n\n::selection {\n  background: #FFF5B8 !important;\n  color: #000 !important;\n  display: block !important; }\n\n::-moz-selection {\n  background: #FFF5B8 !important;\n  color: #000 !important;\n  display: block !important; }\n\n\n.hidden {\n  text-indent: -9999px !important;\n  visibility: hidden !important;\n  display: none !important; }\n\n.clearfix:after {\n  content: \"\" !important;\n  display: table !important;\n  clear: both !important; }\n\ncode {\nbackground:transparent !important;\nborder:none !important;\n}\n\n\n\n\n---\n/*Title*/\n\n---\n.tc-titlebar h2.tc-title {\n\tfont-size: 52px;\n\tdisplay: block;\n\tfont-weight: 700;\n\tmargin: 15px 0;\n\ttext-align: center;\n\ttext-transform: uppercase;\n\tcolor: #424242;\n\tfill: #424242 !important;\n\tword-wrap: break-word;\n\tfont-family: \"Open Sans\", arial, sans-serif;\n\tmargin-block-start: 1em;\n\tmargin-block-end: 1em;\n\tline-height: 1.2;\n\tmargin-bottom: 10px;\n}\n.titleclass {\n\tfont-size: 52px;\n\tdisplay: block;\n\tfont-weight: 700;\n\tmargin: 15px 0;\n\ttext-align: center;\n\ttext-transform: uppercase;\n\tcolor: #424242;\n\tfill: #424242 !important;\n\tword-wrap: break-word;\n\tfont-family: \"Open Sans\", arial, sans-serif;\n\tmargin-block-start: 1em;\n\tmargin-block-end: 1em;\n\tline-height: 1.2;\n\tmargin-bottom: 10px;\n}\n\n.tc-tiddler-title::after {\n\tborder-bottom: 1px dotted #303030;\n\tcontent: \"\";\n\tdisplay: block;\n\tmargin: 30px auto 0;\n\twidth: 100px;\n}\n\ndiv.tc-tagged-interface h2.tc-title, div.tc-tagged-interface div.tc-subtitle, div.tc-tagged-interface div.tc-tags-wrapper {display:none;}\n\n@media only screen and (max-width: 768px) {\n.tc-titlebar h2.tc-title {font-size: 28px;font-size:{{$:/themes/ghostwriter/user/mobile!!titlesize}}; margin-top: 40px !important;}\n.tc-site-title, .tc-titlebar{font-size:2em !important;}\n.titleclass {font-size: 28px !important; margin-top: 40px !important;}\n}\n\ntc-tagged-Interface .tc-title {display:none;}\n\n\n/* Subtitle */\n\ndiv.tc-tiddler-frame .tc-subtitle {\n\tcolor: #AEADAD;\n\tfont-size: 14px;\n\tfont-weight: 600;\n\tline-height: 1;\n\tmargin: 25px auto 0;\n\ttext-align: center;\n\ttext-transform: uppercase;\n\tdisplay: block;\n\tmargin-block-start: 1em;\n\tmargin-block-end: 1em;\n\tpadding-bottom: 25px;\n}\n.tc-subtitle>a{\ndisplay:none !important;\n}\n\n<$reveal type=nomatch state=\"$:/status/UserName\" text=\"\">\n.tc-subtitle:after{\ncontent: \"BY: {{$:/status/UserName}}\";\nfont-weight:700;\n}\n</$reveal>\n\n\n/* Body */\n\ndiv.tc-tiddler-frame > .tc-tiddler-body {\n\tmargin: 0 auto;\n\tposition: relative;\n\twidth: 100%;\n\tmax-width: 810px;\n\tborder-top: 6px solid #303030;\n\tpadding-top: 50px;\n}\n@media only screen and (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\ndiv.tc-tiddler-frame > .tc-tiddler-body {\n  font-size: {{$:/themes/ghostwriter/user/mobile!!fontsize}};\n }\n}\n\n/* Tags */\n\nbutton.tc-tag-label, span.tc-tag-label {\nfont-size:14px !important;\nline-height: normal !important;\nbackground: transparent !important;\ntext-decoration: none !important;\ncolor:#666 !important;\n}\n\n/* The tags in the viewTemplate has inbuilt style. Hence the use to 'important' to overcome that*/\ndiv.tc-tiddler-frame > div.tc-reveal >div.tc-tags-wrapper >span.tc-tag-list-item> button  {\ncolor: {{!!theme_color}} !important;\n}\n\n\n.tc-edit-tags .tc-tiddlylink.tc-tiddlylink-missing:hover, .tc-edit-tags .tc-tiddlylink.tc-tiddlylink-resolves:hover, .tc-edit-tags .tc-tiddlylink.tc-tiddlylink-shadow:hover  {\n    border-bottom: none !important;\npadding: 4px 14px 4px 14px !important;\n}\n\n/* Links */\n\n.tc-body a:hover {\n  border-bottom: 1px dotted {{!!theme_color}};\n  }\n\n.tc-body a.tc-tiddlylink-missing {\n\tfont-style: normal !important;\n\tcolor: #237095 !important;\n}\na.tc-tiddlylink-missing:hover, button.tc-tiddlylink:hover, a.tc-tiddlylink:hover {\n text-decoration: none !important;\n  border-bottom: 1px dotted {{!!theme_color}} !important;\n}\na.tc-tiddlylink-external {\n\ttext-decoration: none !important;\n\tcolor: #3C2BB1 !important;\n\tbackground-color: inherit !important;\n}\na.tc-tiddlylink-external:hover {\n  border-bottom: 1px dotted {{!!theme_color}} !important;\n}\n\n.tc-tag-list-item > span > div.tc-menu-list-item > a:hover {\nborder-bottom: none !important;\npadding: 0 14px 0 14px !important;\n}\n\ntc-block-dropdown tc-search-drop-down tc-popup-handle {\nborder-bottom: none !important;\npadding:initial !important;\n}\n\ndiv.tc-menu-list-item > a:hover {\nborder-bottom:none !important;\n}\n\n\n/* Tag Drop Down */\n\n.tc-edit-tags .tc-block-dropdown{\n    position: absolute !important;\n    min-width: 220px !important;\n    background-color: #FEFEFE !important;\n    white-space: nowrap !important;\n    z-index: 1000 !important;\n    text-shadow: none !important;\n    color: #606060 !important;\n    font-family: gotham, helvetica, arial, sans-serif !important;\n    font-size: 13px ;\n    font-weight: 500 !important;\n    right: 70% !important;\n    padding: 15px 7px !important;\n    border: 3px solid rgba(217, 217, 217, .4) !important;\n    border-top: 1px solid rgba(217, 217, 217, .4) !important;\n    border-left: 1px solid rgba(217, 217, 217, .4) !important;\n    margin: 1rem !important;\n    margin-top: 4px !important;\n    text-overflow: ellipsis !important;\n    box-shadow: 0 6px 20px rgba(0, 0, 0, .04), -6px 8px 15px rgba(0, 0, 0, .04), 6px 8px 15px rgba(0, 0, 0, .04) !important;\n}\n\n---\n/* Site Header */\n\n---\n\n.site-header {\n    padding: 60px 0 0 !important;\n    overflow: auto !important;\n    text-align: center !important;\n    text-transform: uppercase !important;\n}\n.site-title-wrapper {\n    display: table !important;\n    margin: 0 auto !important;\n}\n.site-title {\n    float: left !important;\n    font-size: 14px !important;\n    font-weight: 600 !important;\n    margin: 0 !important;\n    text-transform: uppercase !important;\n}\n.site-title a {\n\tfloat: left !important;\n\tbackground: #f03838 !important;\n\tcolor: #FEFEFE !important;\n\tpadding: 8px 10px 8px !important;\n\tfont-weight: normal;\n\t-webkit-user-select: inherit;\n}\n.site-title a:hover {\n    background: #303030 !important;\n    border-bottom: none !important;\n}\n.site-logo {\n    display: block !important;\n}\n.site-logo img {\n    margin: 0 !important;\n}\n.site-nav {\n    list-style: none !important;\n    margin: 28px 0 10px !important;\n}\n\n.site-nav-item {\n    display: inline-block !important;\n    font-size: 14px !important;\n    font-weight: 700 !important;\n    margin: 0 10px !important;\n    text-transform: uppercase !important;\n    color: {{!!theme_color}} !important;\n    text-decoration: none !important;\n    padding-right: 15px !important;\n    font-family: \"Open Sans\", arial, sans-serif !important;\n    line-height: 1.8 !important;\n    text-align: center !important;\n}\n.site-nav-item:hover {\n    color: #424242 !important;\n}\n\n---\n/* Site Subtitle */\n\n---\n\n.subtitleclass {\nfont-family:{{!!sitesubtitlefont}};\ncolor:#f03838;\ntext-transform: none;\nfont-size:{{!!sitesubtitlefontsize}};\n}\n\n\n\n---\n/* Table of Contents */\n\n---\n\n\n.post-stub-title {\ndisplay: inline-block;\nmargin: 0 !important;\ntext-transform: none !important;\nfont-size: 16px !important;\n}\n\n.post-index{\nmargin: 0 auto !important;\nposition: relative !important;\nwidth: 100% !important;\nmax-width: 889px !important;\n}\n\n.post-index ol {\nlist-style: none !important;\ndisplay: block !important;\nmargin-block-start: 1em !important;\nmargin-block-end: 1em !important;\n\n}\n.post-index li li a {\nfont-weight: 900 !important;\npadding-inline-start: 5px !important;\nmargin: 0 0 0 !important;\npadding: 0 0 0 25px !important;\ntransition: all 0.2s ease-in-out !important;\n}\n\n.post-index li li a:hover{\npadding: 20px 12px !important;\n}\n\n@media only screen and (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n.post-index li li a {padding: 0 !important;}\n.post-index li li a:hover {padding: 0 !important;}\n}\n.post-stub {\ncolor: #424242 !important;\nfont-family: \"Open Sans\", arial, sans-serif !important;\nfont-size: 18px !important;\nline-height: 1.8 !important;\ndisplay: list-item !important;\ntext-align: match-parent !important;\nborder-bottom: 1px dotted #303030 !important;\nmargin: 0 !important;\nposition: relative !important;\npadding: 20px 5px !important;\n}\n\n@media only screen and (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n.post-stub {font-size: 15px !important;line-height: 1.5 !important;}\n.post-stub .tc-btn-invisible {padding: 0 25px 0 0;}\n.post-stub-date {display:none;}\n.post-stub-title {display: inline;}\n.post-stub button svg.tc-image-right-arrow {\n\theight: 1.5em;\n\twidth: 1.5em;\n\tbackground: #fea;\n\tborder-radius: 50%;\n\tpadding: 3px;}\n}\n\n.post-stub a {\n color: #424242 !important;\npadding-inline-start: 10px !important;\nmargin: 80px 40px 0 !important;\npadding: 35px 0 0 !important;\n}\n\n@media only screen and (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n.post-stub a {margin: 0 !important;}\n}\n.post-stub a:hover{\ncolor:{{!!theme_color}} !important;\noutline: 0 !important;\nborder-bottom:none !important;\n}\n\n\n---\n/*Theme Sake */\n\n---\n\n.tc-tiddler-frame {\n    padding: 0 42px 42px 42px !important;\n}\n\n@media only screen and (max-width: 768px) {\n.tc-tiddler-frame {\n padding: 0 10px 10px 10px !important;\n}\n.tc-story-river {\npadding: 20px !important;\nwidth: 100% !important;\n}\n}\n\n@media (max-width: 960px) {\n.tc-story-river {position:fixed}\n}\n\n---\n/*GENERIC*/\n\n---\n\n.tc-control-panel textarea,\n .tc-control-panel input[type=\"text\"],\n .tc-control-panel input[type=\"search\"],\n .tc-control-panel input[type=\"\"],\n .tc-control-panel input:not([type]),\n .tc-edit-field-value input[type=\"text\"],\n .tc-type-selector input[type=\"text\"] {\n     border: 1px solid #c4c4c4 !important;\n }\n\n\n .tc-block-dropdown {\n     border-radius: 4px !important;\n }\n\n\n .tc-block-dropdown a:hover {\n     background-color: #f0e68c !important;\n }\n\n\n .tc-drop-down {\n     color: #606060 !important;\n     font-family: gotham, helvetica, arial, sans-serif !important;\n     font-size: 13px;\n     font-weight: 500 !important;\n     position: relative;\n     right: 70% !important;\n     padding: 15px 7px !important;\n     border-radius: 2px !important;\n     border: 3px solid rgba(217, 217, 217, .4) !important;\n     border-top: 1px solid rgba(217, 217, 217, .4) !important;\n     border-left: 1px solid rgba(217, 217, 217, .4) !important;\n     margin: 1rem !important;\n     margin-top: 4px !important;\n     min-width: calc(100% + 100px) !important;\n     width: -moz-fit-content !important;\n     overflow: visible !important;\n     text-overflow: ellipsis !important;\n     box-shadow: 0 6px 20px rgba(0, 0, 0, .04), -6px 8px 15px rgba(0, 0, 0, .04), 6px 8px 15px rgba(0, 0, 0, .04) !important;\n }\n\n\n .tc-drop-down a:hover,\n .tc-drop-down button:hover,\n .tc-drop-down .tc-file-input-wrapper:hover button {\n     color: #444 !important;\n     background-color: #f0e68c !important;\n     text-decoration: none !important;\n }\n\n\n .tc-titlebar .tc-drop-down {\n     min-width: calc(100% + 30px) !important;\n }\n\n\n .tc-password-wrapper {\n     text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) !important;\n     background-color: #fbfcFe !important;\n     border: 1px solid rgb(225, 225, 225) !important;\n     box-shadow: 0 6px 20px rgba(0, 0, 0, .04), -6px 8px 15px rgba(0, 0, 0, .04), 6px 8px 15px rgba(0, 0, 0, .04) !important;\n     height: 300px !important;\n     width: 300px !important;\n }\n\n\n .tc-password-wrapper input {\n     width: 100% !important;\n     color: #000 !important;\n     border: 1px solid rgb(225, 225, 225) !important;\n     padding: 5px !important;\n     margin-bottom: 5px !important;\n }\n\n .tc-password-wrapper button {\n     width: 100% !important;\n     border-radius: 5px !important;\n     text-decoration: none !important;\n     color: #fff !important;\n     background-color: #26a69a !important;\n     text-align: center !important;\n     letter-spacing: .5px !important;\n     transition: .2s ease-out !important;\n     cursor: pointer !important;\n     border: none !important;\n     padding: 5px !important;\n     margin-bottom: 5px !important;\n }\n\n .tc-password-wrapper h1 {\n     color: #666 !important;\n     font-size: 13px;\n     text-transform: uppercase !important;\n     text-align: center !important;\n }\n\n hr {\n     color: #ececec;\n }\n\n .tg td {\n     font-size: 13.5px !important;\n     overflow: hidden !important;\n     padding: .3em !important;\n     word-break: normal !important;\n     border-width: 0 !important;\n }\n\n tr:nth-child(even) {\n     width: 100% !important;\n     background-color: #f6f3f6 !important;\n }\n\n\n---\n /* TIDDLER TOOLBAR */\n\n---\n<$reveal type=\"nomatch\" state=\"$:/themes/ghostwriter/transparencystate\" text=\"none\">\n\n @media only screen and (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n .tc-tiddler-view-frame .tc-tiddler-controls svg {\n     fill: transparent;\n }\n</$reveal>\n<$reveal type=\"match\" state=\"$:/themes/ghostwriter/transparencystate\" text=\"close\">\n .tc-tiddler-view-frame .tc-tiddler-controls svg.tc-image-close-button {fill: #cccccc;}\n</$reveal>\n .tc-tiddler-view-frame .tc-tiddler-controls:hover svg,\n .tc-tiddler-view-frame .tc-tiddler-controls .tc-popup svg {\n     fill: #cccccc;\n }\n}\n\n---\n /* BUTTON ANIMATION */\n\n---\n \n .tc-page-controls svg,\n .tc-tiddler-controls svg,\n .tc-topbar button svg,\n .tc-sidebar-scrollable {\n     -webkit-transition: fill 200ms ease-in-out;\n     -moz-transition: fill 200ms ease-in-out;\n     transition: fill 200ms ease-in-out;\n }\n\n---\n /** * Notification */\n\n---\n \n .tc-notification {\n     position: fixed !important;\n     top: 35px !important;\n     right: 50px !important;\n     z-index: 1300 !important;\n     width: 300px !important;\n     height: 50px !important;\n     background-color: #FABF67 !important;\n     border: none !important;\n     color: black !important;\n     text-align: center !important;\n     line-height: normal !important;\n     padding-top: 10px !important;\n }\n\n---\n /** Search **/\n\n---\n \n input[type='search'] {\n     -webkit-transition: border .1s;\n     transition: border .1s;\n     position: relative;\n     background-color: transparent;\n     border: 1px solid;\n     border-radius: 2px;\n     border-color: #e1e1e1;\n     padding: 10px 40px 9px 8px;\n     margin: 0;\n     outline: none;\n     box-sizing: border-box;\n     width: 100%;\n }\n\n input[type='search']:focus,\n input[type='search'].focus {\n     border-color: #c1c1c1;\n }\n\n\n---\n/*Sidebar*/\n\n--- \n\n.tc-sidebar-lists button {\n    color: {{!!theme_color}};\n    fill: {{!!theme_color}};\n}\n.tc-sidebar-lists .tc-tab-buttons button {\n    display: inline-block !important;\n    font-size: 14px !important;\n    font-weight: 700 !important;\n    margin: 0 10px !important;\n    text-transform: uppercase;\n    color: {{!!theme_color}} !important ;\n    text-decoration: none !important;\n    padding-right: 15px !important;\n    font-family: \"Open Sans\", arial, sans-serif !important;\n    line-height: 1.8 !important;\n    text-align: center !important;\n    padding: 0 !important;\n    background: none !important;\n    border: none !important;\n}\n.tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected {\n    background-color: transparent !important;\n    border-left: none !important;\n    border-top: none !important;\n    border-right: none !important;\n    color: #666 !important;\n}\n\n.tc-sidebar-lists .tc-search .tc-popup-handle {\n    width: 60%;\n}\n.tc-sidebar-lists .tc-tab-set .tc-tab-content .tc-reveal button {\n    border: none;\n    outline: none;\n    background: transparent;\n    color: #666;\n    fill: #666;\n}\n.tc-sidebar-lists .tc-tab-set .tc-tab-content .tc-reveal .tc-more-sidebar .tc-tab-set .tc-tab-buttons button.tc-tab-selected {\n    color: blue;\n    fill: blue;\n}\n.tc-sidebar-lists .tc-tab-content i.tc-muted {\n    display: none;\n}\n\n/* Search drop down of Sidebar */\n\n.tc-sidebar-lists .tc-search-drop-down a.tc-tiddlylink:hover{\npadding: 0px 10px 0px 10px;\n}\n\n\n---\n/* Media Queries */\n\n---\n\n\n\n@media only screen and (max-width: 600px) {\n  h1, h2 {\n    margin-bottom: 20px; }\n\n  p {\n    margin-bottom: 20px; }\n\n  ul, ol {\n    margin-bottom: 20px; }\n\n  img {\n    margin: 30px 0; }\n\n  blockquote {\n    margin: 30px 0; }\n\n  pre {\n    margin: 30px 0; }\n\n  hr {\n    margin: 35px 0; }\n\n  .site-header {\n    padding-top: 60px; }\n\n  .site-nav-item {\n    display: block;\n    margin: 15px 0; }\n\n}\n",
            "type": "text/vnd.tiddlywiki",
            "title": "$:/themes/ghostwriter/stylesheet/main",
            "theme_color": "#f03838",
            "tags": "$:/tags/Stylesheet $:/irreverent-mudblood/ghostwriter",
            "sitesubtitlefontsize": "16px",
            "sitesubtitlefont": "Parisienne, monospace",
            "revision": "0",
            "modifier": "Riz",
            "modified": "20161202041846264",
            "creator": "venomspinner",
            "created": "20161028105046905",
            "bag": "default"
        },
        "$:/themes/ghostwriter/Topbar": {
            "text": "<$reveal state=\"$:/themes/ghostwriter/user/topbarhide\" type=\"nomatch\" text=\"hide\">\n <header class=\"site-header\" style=\"text-align:center;\">\n            <div class=\"container\">\n                <div class=\"site-title-wrapper\">\n                        <h1 class=\"site-title\"><a href=\"#\">{{$:/SiteTitle}}</a></h1>\n                </div>\n\n                <div class=\"site-nav\">\n<$reveal state=\"$:/themes/ghostwriter/user/homehide\" type=\"nomatch\" text=\"hide\"><$button class=\"site-nav-item tc-btn-invisible\" message=\"tm-home\">HOME</$button></$reveal>\n<$reveal state=\"$:/themes/ghostwriter/user/contenthide\" type=\"nomatch\" text=\"hide\"><$button to=\"$:/TableOfContents\" class=\"site-nav-item tc-btn-invisible\">Contents</$button></$reveal>\n<$reveal state=\"$:/themes/ghostwriter/user/abouthide\" type=\"nomatch\" text=\"hide\"><$button to=\"$:/About\" class=\"site-nav-item tc-btn-invisible\">About</$button></$reveal>\n<$list filter=\"[![$:/themes/ghostwriter/topbarbtntemplate]tag[$:/themes/ghostwriter/user/topbarbutton]]\"><$transclude/></$list>\n                </div>\n            </div>\n        </header></$reveal>",
            "type": "text/vnd.tiddlywiki",
            "title": "$:/themes/ghostwriter/Topbar",
            "tags": "$:/tags/AboveStory $:/irreverent-mudblood/ghostwriter",
            "revision": "0",
            "modifier": "venomspinner",
            "modified": "20161110053524450",
            "creator": "venomspinner",
            "created": "20161028092007386",
            "bag": "default"
        },
        "$:/TableOfContents": {
            "text": "<div class=\"titleclass\"> Table of Contents </div>\n\n<div class=\"post-index\">\n<<tocghost-selective-expandable \"TableOfContents\"\"!sort[modified]\">>\n</div>",
            "title": "$:/TableOfContents",
            "tags": "$:/irreverent-mudblood/ghostwriter interface",
            "modified": "20161110070238232",
            "list": "",
            "created": "20161109082528301"
        },
        "$:/themes/ghostwriter/options": {
            "created": "20161101103541902",
            "creator": "Riz",
            "text": "!!Palette\n|Color theme|<$edit-text tiddler=\"$:/themes/ghostwriter/stylesheet/main\"  type=\"color\" tag=\"input\"  field=\"theme_color\"/><br><$edit-text tiddler=\"$:/themes/ghostwriter/stylesheet/main\"  field=\"theme_color\"/>|\n|Color of the Sidebar Show/Hide Button|<$edit-text tiddler=\"$:/irreverent-mudblood/overlay-sidebar/stylesheet\"  field=\"roundbtnbg\"  type=\"color\" tag=\"input\"/><br><$edit-text tiddler=\"$:/irreverent-mudblood/overlay-sidebar/stylesheet\"  field=\"roundbtnbg\"/>|\n\n!!Edit Toolbar\n|Transparency of Edit Toolbar Buttons |<$select tiddler='$:/themes/ghostwriter/transparencystate'><option value='all'>''All'' </option><option value='close'>All ''except close button''</option><option value='none'>None</option></$select>|\n\n!!Topbar and Pagination\n|Show/Hide Topbar | <span style=\"float:left;\"> <$reveal state=\"$:/themes/ghostwriter/user/topbarhide\" type=\"nomatch\" text=\"hide\"><$button>Hide Topbar<$action-setfield $tiddler=\"$:/themes/ghostwriter/user/topbarhide\" text=\"hide\"/></$button></$reveal><$reveal state=\"$:/themes/ghostwriter/user/topbarhide\" type=\"match\" text=\"hide\"><$button>Show Topbar<$action-setfield $tiddler=\"$:/themes/ghostwriter/user/topbarhide\" text=\"show\"/></$button></$reveal></span>|\n|Add a Top-bar Button|<$button><$action-sendmessage $message=\"tm-new-tiddler\" title=\"New Site Nav Item\" tags=\"$:/themes/ghostwriter/user/topbarbutton\" text={{$:/themes/ghostwriter/topbarbtntemplate}}/>New Top Bar Button</$button>|\n|Show / Hide Default Top-bar Button |<span style=\"float:left;\"> <$checkbox class=\"autowidthinput\" tiddler=\"$:/themes/ghostwriter/user/homehide\" field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"> Home</$checkbox>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<$checkbox class=\"autowidthinput\" tiddler=\"$:/themes/ghostwriter/user/contenthide\" field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"> Content</$checkbox>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<$checkbox class=\"autowidthinput\" tiddler=\"$:/themes/ghostwriter/user/abouthide\" field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\">&nbsp;About</$checkbox></span>|\n|Pagination|<$checkbox class=\"autowidthinput\" tiddler=\"$:/themes/ghostwriter/pagination\" tag=\"$:/tags/BelowStory\">  Display</$checkbox>|\n\n!!Mobile\n|Font Size|^<$edit-text tiddler=\"$:/themes/ghostwriter/user/mobile\" field=\"fontsize\" default=\"\" tag=\"input\"/> |\n|Title Size|^<$edit-text tiddler=\"$:/themes/ghostwriter/user/mobile\" field=\"titlesize\" default=\"28px\" tag=\"input\"/> |\n\n<$button class=\"tc-btn-big-green\" style=\"background-color:#e52d27;width:100%;font-size:14px;\">Remove Ghostwriter\n<$action-deletetiddler $filter=\"[prefix[$:/themes/ghostwriter/user/]]\"/>\n<$action-sendmessage $message=\"tm-delete-tiddler\" $param=\"$:/plugins/venomspinner/ghostwriter\"/>\n</$button>",
            "title": "$:/themes/ghostwriter/options",
            "tags": "$:/tags/ControlPanel/Appearance $:/irreverent-mudblood/ghostwriter",
            "modified": "20161202053044155",
            "caption": "Ghostwriter",
            "modifier": "Riz"
        },
        "$:/themes/ghostwriter/transparencystate": {
            "text": "close",
            "title": "$:/themes/ghostwriter/transparencystate",
            "tags": "$:/irreverent-mudblood/ghostwriter",
            "modified": "20161110021504405",
            "created": "20161109115418648"
        },
        "$:/palettes/Vanilla": {
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #FEFEFE\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: \nbutton-foreground: \nbutton-border: \ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #bbb\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #fefefe\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #aaaaaa\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #f4f4f4\nsidebar-tab-background: #e0e0e0\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: #e4e4e4\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #999999\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: \ntag-foreground: #f03838\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #999999\nvery-muted-foreground: #888888",
            "type": "application/x-tiddler-dictionary",
            "title": "$:/palettes/Vanilla",
            "tags": "$:/tags/Palette $:/irreverent-mudblood/ghostwriter",
            "revision": "0",
            "name": "Vanilla",
            "modifier": "venomspinner",
            "modified": "20161031174446260",
            "description": "Pale and unobtrusive",
            "creator": "venomspinner",
            "created": "20161028065018599",
            "bag": "default"
        },
        "$:/themes/ghostwriter/tocghostMacro": {
            "text": "\\define tocghost-caption()\n<$set name=\"tv-wikilinks\" value=\"no\">\n<$transclude field=\"caption\">\n<span class=\"post-stub-title\"><$view field=\"title\"/></span>\n</$transclude>\n<$transclude field=\"caption\">\n <span class=\"post-stub-date\">/ Published <$view field=\"created\" format=\"date\" template=\"DDth MMM YYYY\"/></span>\n</$transclude>\n</$set>\n\\end\n\n\\define tocghost-body(rootTag,tag,sort:\"\")\n<ol class=\"post-list\">\n<$list filter=\"\"\"[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$]\"\"\">\n<li class=\"post-stub\">\n<$list filter=\"[all[current]tocghost-link[no]]\" emptyMessage=\"<$link><$view field='caption'><$view field='title'/></$view></$link>\">\n<<tocghost-caption>>\n</$list>\n<$list filter=\"\"\"[all[current]] -[[$rootTag$]]\"\"\">\n<$macrocall $name=\"tocghost-body\" rootTag=\"\"\"$rootTag$\"\"\" tag=<<currentTiddler>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\"/>\n</$list>\n</li>\n</$set>\n</$list>\n</ol>\n\\end\n\n\n\\define tocghost-linked-selective-expandable-body(tag,sort:\"\",itemClassFilter)\n<$set name=\"tocghost-state\" value=<<qualify \"\"\"$:/state/tocghost/$tag$-$(currentTiddler)$\"\"\">>>\n<$set name=\"tocghost-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" value=\"tocghost-item-selected\" emptyValue=\"tocghost-item\">\n<li class=\"post-stub\">\n<$link>\n<$list filter=\"[all[current]tagging[]limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button>\">\n<$reveal type=\"nomatch\" state=<<tocghost-state>> text=\"open\">\n<$button set=<<tocghost-state>> setTo=\"open\" class=\"tc-btn-invisible\">\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<tocghost-state>> text=\"open\">\n<$button set=<<tocghost-state>> setTo=\"close\" class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n</$list>\n<<tocghost-caption>>\n</$link>\n<$reveal type=\"match\" state=<<tocghost-state>> text=\"open\">\n<$macrocall $name=\"tocghost-selective-expandable\" tag=<<currentTiddler>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\"/>\n</$reveal>\n</li>\n</$set>\n</$set>\n\\end\n\n\\define tocghost-unlinked-selective-expandable-body(tag,sort:\"\",itemClassFilter)\n<$set name=\"tocghost-state\" value=<<qualify \"\"\"$:/state/tocghost/$tag$-$(currentTiddler)$\"\"\">>>\n<$set name=\"tocghost-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" value=\"tocghost-item-selected\" emptyValue=\"tocghost-item\">\n<li class=\"post-stub\">\n<$list filter=\"[all[current]tagging[]limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button> <$view field='caption'><$view field='title'/></$view>\">\n<$reveal type=\"nomatch\" state=<<tocghost-state>> text=\"open\">\n<$button set=<<tocghost-state>> setTo=\"open\" class=\"tc-btn-invisible\">\n{{$:/core/images/right-arrow}}\n<<tocghost-caption>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<tocghost-state>> text=\"open\">\n<$button set=<<tocghost-state>> setTo=\"close\" class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n<<tocghost-caption>>\n</$button>\n</$reveal>\n</$list>\n<$reveal type=\"match\" state=<<tocghost-state>> text=\"open\">\n<$macrocall $name=\"\"\"tocghost-selective-expandable\"\"\" tag=<<currentTiddler>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\"/>\n</$reveal>\n</li>\n</$set>\n</$set>\n\\end\n\n\\define tocghost-selective-expandable-empty-message()\n<<tocghost-linked-selective-expandable-body tag:\"\"\"$(tag)$\"\"\" sort:\"\"\"$(sort)$\"\"\" itemClassFilter:\"\"\"$(itemClassFilter)$\"\"\">>\n\\end\n\n\\define tocghost-selective-expandable(tag,sort:\"\",itemClassFilter)\n<$vars tag=\"\"\"$tag$\"\"\" sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\">\n<ol class=\"post-list\">\n<$list filter=\"[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$]\">\n<$list filter=\"[all[current]tocghost-link[no]]\" variable=\"ignore\" emptyMessage=<<tocghost-selective-expandable-empty-message>>>\n<<tocghost-unlinked-selective-expandable-body tag:\"\"\"$tag$\"\"\" sort:\"\"\"$sort$\"\"\" itemClassFilter:\"\"\"$itemClassFilter$\"\"\">>\n</$list>\n</$list>\n</ol>\n</$vars>\n\\end\n",
            "type": "text/vnd.tiddlywiki",
            "title": "$:/themes/ghostwriter/tocghostMacro",
            "tags": "$:/tags/Macro $:/irreverent-mudblood/ghostwriter",
            "revision": "0",
            "modified": "20161110084617042",
            "created": "20161031140339462",
            "bag": "default"
        },
        "$:/themes/ghostwriter/Acknowledgements": {
            "created": "20161109145142879",
            "text": "This is an adaptation of the ''Ghostwriter'' Blog Theme by ''Rory Gibson'' at  https://github.com/roryg/ghostwriter for the TW5 platform. All the creative and design credits belong to him. It is a heavily popular and free theme for the ghost blogging platform. \n\nThis is a ''mobile responsive'', minimalist theme. The stylesheets are seperated out so that you can tweak to your likes. Some of the classes are redundant, I will get around to them //as and when possible//. \n\nThe other person I must furnish credits to is ''Zaphod Beeblebrox ''for the tip that enabled custom backgrounds for sidebar. Later I injected z-index to the same and found that it can be made to overlay the storyriver, which I found a neater alternative to pushing the content to a side. The stylesheet for displaying tiddler controls should be credited to ''Tobias Beer''. \n\nKudos to the group, especially Jan and Josiah, for their inputs and encouragement. I have tried to include most of the suggestions that came by. Be not shy to tell me about yours\n\nFinally, the obligatory note of thanks to'' Jeremy Ruston''",
            "title": "$:/themes/ghostwriter/Acknowledgements",
            "tags": "$:/irreverent-mudblood/ghostwriter",
            "modified": "20161110105943157"
        },
        "$:/themes/ghostwriter/topbarbtntemplate": {
            "created": "20161110024930642",
            "text": "<$button class=\"site-nav-item tc-btn-invisible\">\n\n</$button>",
            "title": "$:/themes/ghostwriter/topbarbtntemplate",
            "modified": "20161110031122949",
            "tags": "$:/irreverent-mudblood/ghostwriter"
        },
        "$:/themes/ghostwriter/pagination": {
            "created": "20161202043138190",
            "creator": "Riz",
            "text": "\\define paginate(discard:3)\n<a><$button class=\"tc-btn-invisible pages\">\n<$action-listops $tiddler=\"$:/StoryList\" $field=\"list\" $filter=\"[!is[system]!is[missing]!sort[modified]rest[$discard$]limit[3]]\"/>\n<$list variable='Target' filter=\"[!is[system]!is[missing]!sort[modified]rest[$discard$]limit[3]first[]]\"><$action-navigate $to=<<Target>>/></$list></$button></a>\n\\end\n<style>\n.emm-paginate {\ncounter-reset: paginate;\ntext-align: center;\n}\n.emm-paginate a:hover {\nborder-bottom:none;\ncolor:#fff;\n\n}\n.tc-btn-invisible.pages {\n\tborder: 1px solid #c1c1c1;\n\tpadding: 4px 8px;\n}\n.tc-btn-invisible.pages:hover {\nbackground:#a1a1a1;\n}\nbutton.pages::after {\n    counter-increment: paginate;\n    content:   counter(paginate) ;\n}\n</style>\n\n<div class=\"emm-paginate\">\n<a><$button class=\"tc-btn-invisible pages\">\n<$action-listops $tiddler=\"$:/StoryList\" $field=\"list\" $filter=\"[!is[system]!is[missing]!sort[modified]limit[3]]\"/>\n<$list variable='Target' filter=\"[!is[system]!is[missing]!sort[modified]limit[3]first[]]\"><$action-navigate $to=<<Target>>/></$list></$button></a>\n<<paginate 3>>\n<<paginate 6>>\n<<paginate 9>>\n<<paginate 12>>\n</div>",
            "title": "$:/themes/ghostwriter/pagination",
            "tags": "$:/tags/BelowStory",
            "modified": "20161202050759321",
            "modifier": "Riz"
        }
    }
}
中国传统典籍
四书五经
yes
yes
no
no
no
yes
no
yes
yes
yes
yes
yes
yes
yes
yes
yes
no
yes
no
yes
no

hide
hide
show
show
show
hide
hide


visible
visible
locked
usage
usage
readme
no
yes
no
try-out
no
contents
no
contents
contents
contents
yes
yes
$:/core/ui/ControlPanel/Theme
$:/core/ui/ControlPanel/Basics
$:/core/ui/ControlPanel/Plugins/Installed/Plugins
$:/core/ui/MoreSideBar/Plugins/Plugins
$:/core/ui/ControlPanel/EditorTypes
$:/core/ui/ControlPanel/Plugins/Add/Plugins
$:/core/ui/ControlPanel/Info
$:/core/ui/ControlPanel/Saving/General
$:/core/ui/MoreSideBar/System
目录
$:/core/ui/ControlPanel/Toolbars/ViewToolbar
close
open
open
close
close
close
close
close
close
close
open
open
yugongde

$:/core/modules/parsers/wikiparser/rules/wikilink.js
Home
{
    "tiddlers": {
        "$:/info/browser": {
            "title": "$:/info/browser",
            "text": "yes"
        },
        "$:/info/node": {
            "title": "$:/info/node",
            "text": "no"
        },
        "$:/info/url/full": {
            "title": "$:/info/url/full",
            "text": "file:///Users/apple/codework/9classicbooksofChina.html"
        },
        "$:/info/url/host": {
            "title": "$:/info/url/host",
            "text": ""
        },
        "$:/info/url/hostname": {
            "title": "$:/info/url/hostname",
            "text": ""
        },
        "$:/info/url/protocol": {
            "title": "$:/info/url/protocol",
            "text": "file:"
        },
        "$:/info/url/port": {
            "title": "$:/info/url/port",
            "text": ""
        },
        "$:/info/url/pathname": {
            "title": "$:/info/url/pathname",
            "text": "/Users/apple/codework/9classicbooksofChina.html"
        },
        "$:/info/url/search": {
            "title": "$:/info/url/search",
            "text": ""
        },
        "$:/info/url/origin": {
            "title": "$:/info/url/origin",
            "text": "file://"
        }
    }
}




































































loaded
Home

$:/themes/tiddlywiki/vanilla
{
    "tiddlers": {
        "$:/themes/tiddlywiki/snowwhite/base": {
            "title": "$:/themes/tiddlywiki/snowwhite/base",
            "tags": "[[$:/tags/Stylesheet]]",
            "text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n.tc-sidebar-header {\n\ttext-shadow: 0 1px 0 <<colour sidebar-foreground-shadow>>;\n}\n\n.tc-tiddler-info {\n\t<<box-shadow \"inset 1px 2px 3px rgba(0,0,0,0.1)\">>\n}\n\n@media screen {\n\t.tc-tiddler-frame {\n\t\t<<box-shadow \"1px 1px 5px rgba(0, 0, 0, 0.3)\">>\n\t}\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\t.tc-tiddler-frame {\n\t\t<<box-shadow none>>\n\t}\n}\n\n.tc-page-controls button svg, .tc-tiddler-controls button svg, .tc-topbar button svg {\n\t<<transition \"fill 150ms ease-in-out\">>\n}\n\n.tc-tiddler-controls button.tc-selected,\n.tc-page-controls button.tc-selected {\n\t<<filter \"drop-shadow(0px -1px 2px rgba(0,0,0,0.25))\">>\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor {\n\t<<box-shadow \"inset 0 1px 8px rgba(0, 0, 0, 0.15)\">>\n}\n\n.tc-edit-tags {\n\t<<box-shadow \"inset 0 1px 8px rgba(0, 0, 0, 0.15)\">>\n}\n\n.tc-tiddler-frame .tc-edit-tags input.tc-edit-texteditor {\n\t<<box-shadow \"none\">>\n\tborder: none;\n\toutline: none;\n}\n\ncanvas.tc-edit-bitmapeditor  {\n\t<<box-shadow \"2px 2px 5px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-drop-down {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-block-dropdown {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-modal {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.3)\">>\n}\n\n.tc-modal-footer {\n\tborder-radius: 0 0 6px 6px;\n\t<<box-shadow \"inset 0 1px 0 #fff\">>;\n}\n\n\n.tc-alert {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.6)\">>\n}\n\n.tc-notification {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.3)\">>\n\ttext-shadow: 0 1px 0 rgba(255,255,255, 0.8);\n}\n\n.tc-sidebar-lists .tc-tab-set .tc-tab-divider {\n\tborder-top: none;\n\theight: 1px;\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.15) 0%, rgba(0,0,0,0.0) 100%\">>\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.01) 0%, rgba(0,0,0,0.1) 100%\">>\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.05) 0%, rgba(255,255,255,0.05) 100%\">>\n}\n\n.tc-message-box img {\n\t<<box-shadow \"1px 1px 3px rgba(0,0,0,0.5)\">>\n}\n\n.tc-plugin-info {\n\t<<box-shadow \"1px 1px 3px rgba(0,0,0,0.5)\">>\n}\n"
        }
    }
}
{
    "tiddlers": {
        "$:/themes/tiddlywiki/vanilla/themetweaks": {
            "title": "$:/themes/tiddlywiki/vanilla/themetweaks",
            "tags": "$:/tags/ControlPanel/Appearance",
            "caption": "{{$:/language/ThemeTweaks/ThemeTweaks}}",
            "text": "\\define lingo-base() $:/language/ThemeTweaks/\n\n\\define replacement-text()\n[img[$(imageTitle)$]]\n\\end\n\n\\define backgroundimage-dropdown()\n<div class=\"tc-drop-down-wrapper\">\n<$button popup=<<qualify \"$:/state/popup/themetweaks/backgroundimage\">> class=\"tc-btn-invisible tc-btn-dropdown\">{{$:/core/images/down-arrow}}</$button>\n<$reveal state=<<qualify \"$:/state/popup/themetweaks/backgroundimage\">> type=\"popup\" position=\"belowleft\" text=\"\" default=\"\">\n<div class=\"tc-drop-down\">\n<$macrocall $name=\"image-picker\" actions=\"\"\"\n\n<$action-setfield\n\t$tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\"\n\t$value=<<imageTitle>>\n/>\n\n\"\"\"/>\n</div>\n</$reveal>\n</div>\n\\end\n\n\\define backgroundimageattachment-dropdown()\n<$select tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\" default=\"scroll\">\n<option value=\"scroll\"><<lingo Settings/BackgroundImageAttachment/Scroll>></option>\n<option value=\"fixed\"><<lingo Settings/BackgroundImageAttachment/Fixed>></option>\n</$select>\n\\end\n\n\\define backgroundimagesize-dropdown()\n<$select tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\" default=\"scroll\">\n<option value=\"auto\"><<lingo Settings/BackgroundImageSize/Auto>></option>\n<option value=\"cover\"><<lingo Settings/BackgroundImageSize/Cover>></option>\n<option value=\"contain\"><<lingo Settings/BackgroundImageSize/Contain>></option>\n</$select>\n\\end\n\n<<lingo ThemeTweaks/Hint>>\n\n! <<lingo Options>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\"><<lingo Options/SidebarLayout>></$link> |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\"><option value=\"fixed-fluid\"><<lingo Options/SidebarLayout/Fixed-Fluid>></option><option value=\"fluid-fixed\"><<lingo Options/SidebarLayout/Fluid-Fixed>></option></$select> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\"><<lingo Options/StickyTitles>></$link><br>//<<lingo Options/StickyTitles/Hint>>// |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\"><option value=\"no\">{{$:/language/No}}</option><option value=\"yes\">{{$:/language/Yes}}</option></$select> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/codewrapping\"><<lingo Options/CodeWrapping>></$link> |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/codewrapping\"><option value=\"pre\">{{$:/language/No}}</option><option value=\"pre-wrap\">{{$:/language/Yes}}</option></$select> |\n\n! <<lingo Settings>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\"><<lingo Settings/FontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\"><<lingo Settings/CodeFontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\"><<lingo Settings/BackgroundImage>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\" default=\"\" tag=\"input\"/> |<<backgroundimage-dropdown>> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\"><<lingo Settings/BackgroundImageAttachment>></$link> |<<backgroundimageattachment-dropdown>> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\"><<lingo Settings/BackgroundImageSize>></$link> |<<backgroundimagesize-dropdown>> | |\n\n! <<lingo Metrics>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\"><<lingo Metrics/FontSize>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\"><<lingo Metrics/LineHeight>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\"><<lingo Metrics/BodyFontSize>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\"><<lingo Metrics/BodyLineHeight>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\"><<lingo Metrics/StoryLeft>></$link><br>//<<lingo Metrics/StoryLeft/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storytop\"><<lingo Metrics/StoryTop>></$link><br>//<<lingo Metrics/StoryTop/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storytop\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storyright\"><<lingo Metrics/StoryRight>></$link><br>//<<lingo Metrics/StoryRight/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storyright\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\"><<lingo Metrics/StoryWidth>></$link><br>//<<lingo Metrics/StoryWidth/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\"><<lingo Metrics/TiddlerWidth>></$link><br>//<<lingo Metrics/TiddlerWidth/Hint>>//<br> |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\"><<lingo Metrics/SidebarBreakpoint>></$link><br>//<<lingo Metrics/SidebarBreakpoint/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\"><<lingo Metrics/SidebarWidth>></$link><br>//<<lingo Metrics/SidebarWidth/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\" default=\"\" tag=\"input\"/> |\n"
        },
        "$:/themes/tiddlywiki/vanilla/base": {
            "title": "$:/themes/tiddlywiki/vanilla/base",
            "tags": "[[$:/tags/Stylesheet]]",
            "text": "\\define custom-background-datauri()\n<$set name=\"background\" value={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}>\n<$list filter=\"[<background>is[image]]\">\n`background: url(`\n<$list filter=\"[<background>!has[_canonical_uri]]\">\n<$macrocall $name=\"datauri\" title={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}/>\n</$list>\n<$list filter=\"[<background>has[_canonical_uri]]\">\n<$view tiddler={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}} field=\"_canonical_uri\"/>\n</$list>\n`) center center;`\n`background-attachment: `{{$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment}}`;\n-webkit-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\n-moz-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\n-o-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\nbackground-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;`\n</$list>\n</$set>\n\\end\n\n\\define if-fluid-fixed(text,hiddenSidebarText)\n<$reveal state=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\" type=\"match\" text=\"fluid-fixed\">\n$text$\n<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"yes\" default=\"yes\">\n$hiddenSidebarText$\n</$reveal>\n</$reveal>\n\\end\n\n\\define if-editor-height-fixed(then,else)\n<$reveal state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"fixed\">\n$then$\n</$reveal>\n<$reveal state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"auto\">\n$else$\n</$reveal>\n\\end\n\n\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\n\n/*\n** Start with the normalize CSS reset, and then belay some of its effects\n*/\n\n{{$:/themes/tiddlywiki/vanilla/reset}}\n\n*, input[type=\"search\"] {\n\tbox-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\t-webkit-box-sizing: border-box;\n}\n\nhtml button {\n\tline-height: 1.2;\n\tcolor: <<colour button-foreground>>;\n\tbackground: <<colour button-background>>;\n\tborder-color: <<colour button-border>>;\n}\n\n/*\n** Basic element styles\n*/\n\nhtml {\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/fontfamily}};\n\ttext-rendering: optimizeLegibility; /* Enables kerning and ligatures etc. */\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n}\n\nhtml:-webkit-full-screen {\n\tbackground-color: <<colour page-background>>;\n}\n\nbody.tc-body {\n\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/fontsize}};\n\tline-height: {{$:/themes/tiddlywiki/vanilla/metrics/lineheight}};\n\tword-wrap: break-word;\n\t<<custom-background-datauri>>\n\tcolor: <<colour foreground>>;\n\tbackground-color: <<colour page-background>>;\n\tfill: <<colour foreground>>;\n}\n\nh1, h2, h3, h4, h5, h6 {\n\tline-height: 1.2;\n\tfont-weight: 300;\n}\n\npre {\n\tdisplay: block;\n\tpadding: 14px;\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n\tword-break: normal;\n\tword-wrap: break-word;\n\twhite-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};\n\tbackground-color: <<colour pre-background>>;\n\tborder: 1px solid <<colour pre-border>>;\n\tpadding: 0 3px 2px;\n\tborder-radius: 3px;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\n}\n\ncode {\n\tcolor: <<colour code-foreground>>;\n\tbackground-color: <<colour code-background>>;\n\tborder: 1px solid <<colour code-border>>;\n\twhite-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};\n\tpadding: 0 3px 2px;\n\tborder-radius: 3px;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\n}\n\nblockquote {\n\tborder-left: 5px solid <<colour blockquote-bar>>;\n\tmargin-left: 25px;\n\tpadding-left: 10px;\n\tquotes: \"\\201C\"\"\\201D\"\"\\2018\"\"\\2019\";\n}\n\nblockquote.tc-big-quote {\n\tfont-family: Georgia, serif;\n\tposition: relative;\n\tbackground: <<colour pre-background>>;\n\tborder-left: none;\n\tmargin-left: 50px;\n\tmargin-right: 50px;\n\tpadding: 10px;\n    border-radius: 8px;\n}\n\nblockquote.tc-big-quote cite:before {\n\tcontent: \"\\2014 \\2009\";\n}\n\nblockquote.tc-big-quote:before {\n\tfont-family: Georgia, serif;\n\tcolor: <<colour blockquote-bar>>;\n\tcontent: open-quote;\n\tfont-size: 8em;\n\tline-height: 0.1em;\n\tmargin-right: 0.25em;\n\tvertical-align: -0.4em;\n\tposition: absolute;\n    left: -50px;\n    top: 42px;\n}\n\nblockquote.tc-big-quote:after {\n\tfont-family: Georgia, serif;\n\tcolor: <<colour blockquote-bar>>;\n\tcontent: close-quote;\n\tfont-size: 8em;\n\tline-height: 0.1em;\n\tmargin-right: 0.25em;\n\tvertical-align: -0.4em;\n\tposition: absolute;\n    right: -80px;\n    bottom: -20px;\n}\n\ndl dt {\n\tfont-weight: bold;\n\tmargin-top: 6px;\n}\n\ntextarea,\ninput[type=text],\ninput[type=search],\ninput[type=\"\"],\ninput:not([type]) {\n\tcolor: <<colour foreground>>;\n\tbackground: <<colour background>>;\n}\n\n.tc-muted {\n\tcolor: <<colour muted-foreground>>;\n}\n\nsvg.tc-image-button {\n\tpadding: 0px 1px 1px 0px;\n}\n\n.tc-icon-wrapper > svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\nkbd {\n\tdisplay: inline-block;\n\tpadding: 3px 5px;\n\tfont-size: 0.8em;\n\tline-height: 1.2;\n\tcolor: <<colour foreground>>;\n\tvertical-align: middle;\n\tbackground-color: <<colour background>>;\n\tborder: solid 1px <<colour muted-foreground>>;\n\tborder-bottom-color: <<colour muted-foreground>>;\n\tborder-radius: 3px;\n\tbox-shadow: inset 0 -1px 0 <<colour muted-foreground>>;\n}\n\n/*\nMarkdown likes putting code elements inside pre elements\n*/\npre > code {\n\tpadding: 0;\n\tborder: none;\n\tbackground-color: inherit;\n\tcolor: inherit;\n}\n\ntable {\n\tborder: 1px solid <<colour table-border>>;\n\twidth: auto;\n\tmax-width: 100%;\n\tcaption-side: bottom;\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n}\n\ntable th, table td {\n\tpadding: 0 7px 0 7px;\n\tborder-top: 1px solid <<colour table-border>>;\n\tborder-left: 1px solid <<colour table-border>>;\n}\n\ntable thead tr td, table th {\n\tbackground-color: <<colour table-header-background>>;\n\tfont-weight: bold;\n}\n\ntable tfoot tr td {\n\tbackground-color: <<colour table-footer-background>>;\n}\n\n.tc-csv-table {\n\twhite-space: nowrap;\n}\n\n.tc-tiddler-frame img,\n.tc-tiddler-frame svg,\n.tc-tiddler-frame canvas,\n.tc-tiddler-frame embed,\n.tc-tiddler-frame iframe {\n\tmax-width: 100%;\n}\n\n.tc-tiddler-body > embed,\n.tc-tiddler-body > iframe {\n\twidth: 100%;\n\theight: 600px;\n}\n\n/*\n** Links\n*/\n\nbutton.tc-tiddlylink,\na.tc-tiddlylink {\n\ttext-decoration: none;\n\tfont-weight: normal;\n\tcolor: <<colour tiddler-link-foreground>>;\n\t-webkit-user-select: inherit; /* Otherwise the draggable attribute makes links impossible to select */\n}\n\n.tc-sidebar-lists a.tc-tiddlylink {\n\tcolor: <<colour sidebar-tiddler-link-foreground>>;\n}\n\n.tc-sidebar-lists a.tc-tiddlylink:hover {\n\tcolor: <<colour sidebar-tiddler-link-foreground-hover>>;\n}\n\nbutton.tc-tiddlylink:hover,\na.tc-tiddlylink:hover {\n\ttext-decoration: underline;\n}\n\na.tc-tiddlylink-resolves {\n}\n\na.tc-tiddlylink-shadow {\n\tfont-weight: bold;\n}\n\na.tc-tiddlylink-shadow.tc-tiddlylink-resolves {\n\tfont-weight: normal;\n}\n\na.tc-tiddlylink-missing {\n\tfont-style: italic;\n}\n\na.tc-tiddlylink-external {\n\ttext-decoration: underline;\n\tcolor: <<colour external-link-foreground>>;\n\tbackground-color: <<colour external-link-background>>;\n}\n\na.tc-tiddlylink-external:visited {\n\tcolor: <<colour external-link-foreground-visited>>;\n\tbackground-color: <<colour external-link-background-visited>>;\n}\n\na.tc-tiddlylink-external:hover {\n\tcolor: <<colour external-link-foreground-hover>>;\n\tbackground-color: <<colour external-link-background-hover>>;\n}\n\n/*\n** Drag and drop styles\n*/\n\n.tc-tiddler-dragger {\n\tposition: relative;\n\tz-index: -10000;\n}\n\n.tc-tiddler-dragger-inner {\n\tposition: absolute;\n\ttop: -1000px;\n\tleft: -1000px;\n\tdisplay: inline-block;\n\tpadding: 8px 20px;\n\tfont-size: 16.9px;\n\tfont-weight: bold;\n\tline-height: 20px;\n\tcolor: <<colour dragger-foreground>>;\n\ttext-shadow: 0 1px 0 rgba(0, 0, 0, 1);\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n\tbackground-color: <<colour dragger-background>>;\n\tborder-radius: 20px;\n}\n\n.tc-tiddler-dragger-cover {\n\tposition: absolute;\n\tbackground-color: <<colour page-background>>;\n}\n\n.tc-dropzone {\n\tposition: relative;\n}\n\n.tc-dropzone.tc-dragover:before {\n\tz-index: 10000;\n\tdisplay: block;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbackground: <<colour dropzone-background>>;\n\ttext-align: center;\n\tcontent: \"<<lingo DropMessage>>\";\n}\n\n.tc-droppable > .tc-droppable-placeholder {\n\tdisplay: none;\n}\n\n.tc-droppable.tc-dragover > .tc-droppable-placeholder {\n\tdisplay: block;\n\tborder: 2px dashed <<colour dropzone-background>>;\n}\n\n.tc-draggable {\n\tcursor: move;\n}\n\n/*\n** Plugin reload warning\n*/\n\n.tc-plugin-reload-warning {\n\tz-index: 1000;\n\tdisplay: block;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbackground: <<colour alert-background>>;\n\ttext-align: center;\n}\n\n/*\n** Buttons\n*/\n\nbutton svg, button img, label svg, label img {\n\tvertical-align: middle;\n}\n\n.tc-btn-invisible {\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n    cursor: pointer;\n}\n\n.tc-btn-boxed {\n\tfont-size: 0.6em;\n\tpadding: 0.2em;\n\tmargin: 1px;\n\tbackground: none;\n\tborder: 1px solid <<colour tiddler-controls-foreground>>;\n\tborder-radius: 0.25em;\n}\n\nhtml body.tc-body .tc-btn-boxed svg {\n\tfont-size: 1.6666em;\n}\n\n.tc-btn-boxed:hover {\n\tbackground: <<colour muted-foreground>>;\n\tcolor: <<colour background>>;\n}\n\nhtml body.tc-body .tc-btn-boxed:hover svg {\n\tfill: <<colour background>>;\n}\n\n.tc-btn-rounded {\n\tfont-size: 0.5em;\n\tline-height: 2;\n\tpadding: 0em 0.3em 0.2em 0.4em;\n\tmargin: 1px;\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour muted-foreground>>;\n\tcolor: <<colour background>>;\n\tborder-radius: 2em;\n}\n\nhtml body.tc-body .tc-btn-rounded svg {\n\tfont-size: 1.6666em;\n\tfill: <<colour background>>;\n}\n\n.tc-btn-rounded:hover {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour background>>;\n\tcolor: <<colour muted-foreground>>;\n}\n\nhtml body.tc-body .tc-btn-rounded:hover svg {\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-btn-icon svg {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-btn-text {\n\tpadding: 0;\n\tmargin: 0;\n}\n\n.tc-btn-big-green {\n\tdisplay: inline-block;\n\tpadding: 8px;\n\tmargin: 4px 8px 4px 8px;\n\tbackground: <<colour download-background>>;\n\tcolor: <<colour download-foreground>>;\n\tfill: <<colour download-foreground>>;\n\tborder: none;\n\tfont-size: 1.2em;\n\tline-height: 1.4em;\n\ttext-decoration: none;\n}\n\n.tc-btn-big-green svg,\n.tc-btn-big-green img {\n\theight: 2em;\n\twidth: 2em;\n\tvertical-align: middle;\n\tfill: <<colour download-foreground>>;\n}\n\n.tc-sidebar-lists input {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-sidebar-lists button {\n\tcolor: <<colour sidebar-button-foreground>>;\n\tfill: <<colour sidebar-button-foreground>>;\n}\n\n.tc-sidebar-lists button.tc-btn-mini {\n\tcolor: <<colour sidebar-muted-foreground>>;\n}\n\n.tc-sidebar-lists button.tc-btn-mini:hover {\n\tcolor: <<colour sidebar-muted-foreground-hover>>;\n}\n\nbutton svg.tc-image-button, button .tc-image-button img {\n\theight: 1em;\n\twidth: 1em;\n}\n\n.tc-unfold-banner {\n\tposition: absolute;\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n\twidth: 100%;\n\twidth: calc(100% + 2px);\n\tmargin-left: -43px;\n\ttext-align: center;\n\tborder-top: 2px solid <<colour tiddler-info-background>>;\n\tmargin-top: 4px;\n}\n\n.tc-unfold-banner:hover {\n\tbackground: <<colour tiddler-info-background>>;\n\tborder-top: 2px solid <<colour tiddler-info-border>>;\n}\n\n.tc-unfold-banner svg, .tc-fold-banner svg {\n\theight: 0.75em;\n\tfill: <<colour tiddler-controls-foreground>>;\n}\n\n.tc-unfold-banner:hover svg, .tc-fold-banner:hover svg {\n\tfill: <<colour tiddler-controls-foreground-hover>>;\n}\n\n.tc-fold-banner {\n\tposition: absolute;\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n\twidth: 23px;\n\ttext-align: center;\n\tmargin-left: -35px;\n\ttop: 6px;\n\tbottom: 6px;\n}\n\n.tc-fold-banner:hover {\n\tbackground: <<colour tiddler-info-background>>;\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-unfold-banner {\n\t\tposition: static;\n\t\twidth: calc(100% + 59px);\n\t}\n\n\t.tc-fold-banner {\n\t\twidth: 16px;\n\t\tmargin-left: -16px;\n\t\tfont-size: 0.75em;\n\t}\n\n}\n\n/*\n** Tags and missing tiddlers\n*/\n\n.tc-tag-list-item {\n\tposition: relative;\n\tdisplay: inline-block;\n\tmargin-right: 7px;\n}\n\n.tc-tags-wrapper {\n\tmargin: 4px 0 14px 0;\n}\n\n.tc-missing-tiddler-label {\n\tfont-style: italic;\n\tfont-weight: normal;\n\tdisplay: inline-block;\n\tfont-size: 11.844px;\n\tline-height: 14px;\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n}\n\nbutton.tc-tag-label, span.tc-tag-label {\n\tdisplay: inline-block;\n\tpadding: 0.16em 0.7em;\n\tfont-size: 0.9em;\n\tfont-weight: 400;\n\tline-height: 1.2em;\n\tcolor: <<colour tag-foreground>>;\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n\tbackground-color: <<colour tag-background>>;\n\tborder-radius: 1em;\n}\n\n.tc-untagged-separator {\n\twidth: 10em;\n\tleft: 0;\n\tmargin-left: 0;\n\tborder: 0;\n\theight: 1px;\n\tbackground: <<colour tab-divider>>;\n}\n\nbutton.tc-untagged-label {\n\tbackground-color: <<colour untagged-background>>;\n}\n\n.tc-tag-label svg, .tc-tag-label img {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour tag-foreground>>;\n\tvertical-align: text-bottom;\n}\n\n.tc-tag-manager-table .tc-tag-label {\n\twhite-space: normal;\n}\n\n.tc-tag-manager-tag {\n\twidth: 100%;\n}\n\n/*\n** Page layout\n*/\n\n.tc-topbar {\n\tposition: fixed;\n\tz-index: 1200;\n}\n\n.tc-topbar-left {\n\tleft: 29px;\n\ttop: 5px;\n}\n\n.tc-topbar-right {\n\ttop: 5px;\n\tright: 29px;\n}\n\n.tc-topbar button {\n\tpadding: 8px;\n}\n\n.tc-topbar svg {\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-topbar button:hover svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-sidebar-header {\n\tcolor: <<colour sidebar-foreground>>;\n\tfill: <<colour sidebar-foreground>>;\n}\n\n.tc-sidebar-header .tc-title a.tc-tiddlylink-resolves {\n\tfont-weight: 300;\n}\n\n.tc-sidebar-header .tc-sidebar-lists p {\n\tmargin-top: 3px;\n\tmargin-bottom: 3px;\n}\n\n.tc-sidebar-header .tc-missing-tiddler-label {\n\tcolor: <<colour sidebar-foreground>>;\n}\n\n.tc-advanced-search input {\n\twidth: 60%;\n}\n\n.tc-search a svg {\n\twidth: 1.2em;\n\theight: 1.2em;\n\tvertical-align: middle;\n}\n\n.tc-page-controls {\n\tmargin-top: 14px;\n\tfont-size: 1.5em;\n}\n\n.tc-page-controls button {\n\tmargin-right: 0.5em;\n}\n\n.tc-page-controls a.tc-tiddlylink:hover {\n\ttext-decoration: none;\n}\n\n.tc-page-controls img {\n\twidth: 1em;\n}\n\n.tc-page-controls svg {\n\tfill: <<colour sidebar-controls-foreground>>;\n}\n\n.tc-page-controls button:hover svg, .tc-page-controls a:hover svg {\n\tfill: <<colour sidebar-controls-foreground-hover>>;\n}\n\n.tc-menu-list-item {\n\twhite-space: nowrap;\n}\n\n.tc-menu-list-count {\n\tfont-weight: bold;\n}\n\n.tc-menu-list-subitem {\n\tpadding-left: 7px;\n}\n\n.tc-story-river {\n\tposition: relative;\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-sidebar-header {\n\t\tpadding: 14px;\n\t\tmin-height: 32px;\n\t\tmargin-top: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t}\n\n\t.tc-story-river {\n\t\tposition: relative;\n\t\tpadding: 0;\n\t}\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-message-box {\n\t\tmargin: 21px -21px 21px -21px;\n\t}\n\n\t.tc-sidebar-scrollable {\n\t\tposition: fixed;\n\t\ttop: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t\tleft: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};\n\t\tbottom: 0;\n\t\tright: 0;\n\t\toverflow-y: auto;\n\t\toverflow-x: auto;\n\t\t-webkit-overflow-scrolling: touch;\n\t\tmargin: 0 0 0 -42px;\n\t\tpadding: 71px 0 28px 42px;\n\t}\n\n\thtml[dir=\"rtl\"] .tc-sidebar-scrollable {\n\t\tleft: auto;\n\t\tright: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};\n\t}\n\n\t.tc-story-river {\n\t\tposition: relative;\n\t\tleft: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};\n\t\ttop: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/storywidth}};\n\t\tpadding: 42px 42px 42px 42px;\n\t}\n\n<<if-no-sidebar \"\n\n\t.tc-story-river {\n\t\twidth: calc(100% - {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}});\n\t}\n\n\">>\n\n}\n\n@media print {\n\n\tbody.tc-body {\n\t\tbackground-color: transparent;\n\t}\n\n\t.tc-sidebar-header, .tc-topbar {\n\t\tdisplay: none;\n\t}\n\n\t.tc-story-river {\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t}\n\n\t.tc-story-river .tc-tiddler-frame {\n\t\tmargin: 0;\n\t\tborder: none;\n\t\tpadding: 0;\n\t}\n}\n\n/*\n** Tiddler styles\n*/\n\n.tc-tiddler-frame {\n\tposition: relative;\n\tmargin-bottom: 28px;\n\tbackground-color: <<colour tiddler-background>>;\n\tborder: 1px solid <<colour tiddler-border>>;\n}\n\n{{$:/themes/tiddlywiki/vanilla/sticky}}\n\n.tc-tiddler-info {\n\tpadding: 14px 42px 14px 42px;\n\tbackground-color: <<colour tiddler-info-background>>;\n\tborder-top: 1px solid <<colour tiddler-info-border>>;\n\tborder-bottom: 1px solid <<colour tiddler-info-border>>;\n}\n\n.tc-tiddler-info p {\n\tmargin-top: 3px;\n\tmargin-bottom: 3px;\n}\n\n.tc-tiddler-info .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour tiddler-info-tab-background>>;\n\tborder-bottom: 1px solid <<colour tiddler-info-tab-background>>;\n}\n\n.tc-view-field-table {\n\twidth: 100%;\n}\n\n.tc-view-field-name {\n\twidth: 1%; /* Makes this column be as narrow as possible */\n\ttext-align: right;\n\tfont-style: italic;\n\tfont-weight: 200;\n}\n\n.tc-view-field-value {\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\t.tc-tiddler-frame {\n\t\tpadding: 14px 14px 14px 14px;\n\t}\n\n\t.tc-tiddler-info {\n\t\tmargin: 0 -14px 0 -14px;\n\t}\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\t.tc-tiddler-frame {\n\t\tpadding: 28px 42px 42px 42px;\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth}};\n\t\tborder-radius: 2px;\n\t}\n\n<<if-no-sidebar \"\n\n\t.tc-tiddler-frame {\n\t\twidth: 100%;\n\t}\n\n\">>\n\n\t.tc-tiddler-info {\n\t\tmargin: 0 -42px 0 -42px;\n\t}\n}\n\n.tc-site-title,\n.tc-titlebar {\n\tfont-weight: 300;\n\tfont-size: 2.35em;\n\tline-height: 1.2em;\n\tcolor: <<colour tiddler-title-foreground>>;\n\tmargin: 0;\n}\n\n.tc-site-title {\n\tcolor: <<colour site-title-foreground>>;\n}\n\n.tc-tiddler-title-icon {\n\tvertical-align: middle;\n}\n\n.tc-system-title-prefix {\n\tcolor: <<colour muted-foreground>>;\n}\n\n.tc-titlebar h2 {\n\tfont-size: 1em;\n\tdisplay: inline;\n}\n\n.tc-titlebar img {\n\theight: 1em;\n}\n\n.tc-subtitle {\n\tfont-size: 0.9em;\n\tcolor: <<colour tiddler-subtitle-foreground>>;\n\tfont-weight: 300;\n}\n\n.tc-tiddler-missing .tc-title {\n  font-style: italic;\n  font-weight: normal;\n}\n\n.tc-tiddler-frame .tc-tiddler-controls {\n\tfloat: right;\n}\n\n.tc-tiddler-controls .tc-drop-down {\n\tfont-size: 0.6em;\n}\n\n.tc-tiddler-controls .tc-drop-down .tc-drop-down {\n\tfont-size: 1em;\n}\n\n.tc-tiddler-controls > span > button {\n\tvertical-align: baseline;\n\tmargin-left:5px;\n}\n\n.tc-tiddler-controls button svg, .tc-tiddler-controls button img,\n.tc-search button svg, .tc-search a svg {\n\tfill: <<colour tiddler-controls-foreground>>;\n}\n\n.tc-tiddler-controls button svg, .tc-tiddler-controls button img {\n\theight: 0.75em;\n}\n\n.tc-search button svg, .tc-search a svg {\n    height: 1.2em;\n    width: 1.2em;\n    margin: 0 0.25em;\n}\n\n.tc-tiddler-controls button.tc-selected svg,\n.tc-page-controls button.tc-selected svg  {\n\tfill: <<colour tiddler-controls-foreground-selected>>;\n}\n\n.tc-tiddler-controls button.tc-btn-invisible:hover svg,\n.tc-search button:hover svg, .tc-search a:hover svg {\n\tfill: <<colour tiddler-controls-foreground-hover>>;\n}\n\n@media print {\n\t.tc-tiddler-controls {\n\t\tdisplay: none;\n\t}\n}\n\n.tc-tiddler-help { /* Help prompts within tiddler template */\n\tcolor: <<colour muted-foreground>>;\n\tmargin-top: 14px;\n}\n\n.tc-tiddler-help a.tc-tiddlylink {\n\tcolor: <<colour very-muted-foreground>>;\n}\n\n.tc-tiddler-frame .tc-edit-texteditor {\n\twidth: 100%;\n\tmargin: 4px 0 4px 0;\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor,\n.tc-tiddler-frame textarea.tc-edit-texteditor,\n.tc-tiddler-frame iframe.tc-edit-texteditor {\n\tpadding: 3px 3px 3px 3px;\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tbackground-color: <<colour tiddler-editor-background>>;\n\tline-height: 1.3em;\n\t-webkit-appearance: none;\n}\n\n.tc-tiddler-frame .tc-binary-warning {\n\twidth: 100%;\n\theight: 5em;\n\ttext-align: center;\n\tpadding: 3em 3em 6em 3em;\n\tbackground: <<colour alert-background>>;\n\tborder: 1px solid <<colour alert-border>>;\n}\n\ncanvas.tc-edit-bitmapeditor  {\n\tborder: 6px solid <<colour tiddler-editor-border-image>>;\n\tcursor: crosshair;\n\t-moz-user-select: none;\n\t-webkit-user-select: none;\n\t-ms-user-select: none;\n\tmargin-top: 6px;\n\tmargin-bottom: 6px;\n}\n\n.tc-edit-bitmapeditor-width {\n\tdisplay: block;\n}\n\n.tc-edit-bitmapeditor-height {\n\tdisplay: block;\n}\n\n.tc-tiddler-body {\n\tclear: both;\n}\n\n.tc-tiddler-frame .tc-tiddler-body {\n\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize}};\n\tline-height: {{$:/themes/tiddlywiki/vanilla/metrics/bodylineheight}};\n}\n\n.tc-titlebar, .tc-tiddler-edit-title {\n\toverflow: hidden; /* https://github.com/Jermolene/TiddlyWiki5/issues/282 */\n}\n\nhtml body.tc-body.tc-single-tiddler-window {\n\tmargin: 1em;\n\tbackground: <<colour tiddler-background>>;\n}\n\n.tc-single-tiddler-window img,\n.tc-single-tiddler-window svg,\n.tc-single-tiddler-window canvas,\n.tc-single-tiddler-window embed,\n.tc-single-tiddler-window iframe {\n\tmax-width: 100%;\n}\n\n/*\n** Editor\n*/\n\n.tc-editor-toolbar {\n\tmargin-top: 8px;\n}\n\n.tc-editor-toolbar button {\n\tvertical-align: middle;\n\tbackground-color: <<colour tiddler-controls-foreground>>;\n\tfill: <<colour tiddler-controls-foreground-selected>>;\n\tborder-radius: 4px;\n\tpadding: 3px;\n\tmargin: 2px 0 2px 4px;\n}\n\n.tc-editor-toolbar button.tc-text-editor-toolbar-item-adjunct {\n\tmargin-left: 1px;\n\twidth: 1em;\n\tborder-radius: 8px;\n}\n\n.tc-editor-toolbar button.tc-text-editor-toolbar-item-start-group {\n\tmargin-left: 11px;\n}\n\n.tc-editor-toolbar button.tc-selected {\n\tbackground-color: <<colour primary>>;\n}\n\n.tc-editor-toolbar button svg {\n\twidth: 1.6em;\n\theight: 1.2em;\n}\n\n.tc-editor-toolbar button:hover {\n\tbackground-color: <<colour tiddler-controls-foreground-selected>>;\n\tfill: <<colour background>>;\n}\n\n.tc-editor-toolbar .tc-text-editor-toolbar-more {\n\twhite-space: normal;\n}\n\n.tc-editor-toolbar .tc-text-editor-toolbar-more button {\n\tdisplay: inline-block;\n\tpadding: 3px;\n\twidth: auto;\n}\n\n.tc-editor-toolbar .tc-search-results {\n\tpadding: 0;\n}\n\n/*\n** Adjustments for fluid-fixed mode\n*/\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n<<if-fluid-fixed text:\"\"\"\n\n\t.tc-story-river {\n\t\tpadding-right: 0;\n\t\tposition: relative;\n\t\twidth: auto;\n\t\tleft: 0;\n\t\tmargin-left: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};\n\t\tmargin-right: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\n\t}\n\n\t.tc-tiddler-frame {\n\t\twidth: 100%;\n\t}\n\n\t.tc-sidebar-scrollable {\n\t\tleft: auto;\n\t\tbottom: 0;\n\t\tright: 0;\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\n\t}\n\n\tbody.tc-body .tc-storyview-zoomin-tiddler {\n\t\twidth: 100%;\n\t\twidth: calc(100% - 42px);\n\t}\n\n\"\"\" hiddenSidebarText:\"\"\"\n\n\t.tc-story-river {\n\t\tpadding-right: 3em;\n\t\tmargin-right: 0;\n\t}\n\n\tbody.tc-body .tc-storyview-zoomin-tiddler {\n\t\twidth: 100%;\n\t\twidth: calc(100% - 84px);\n\t}\n\n\"\"\">>\n\n}\n\n/*\n** Toolbar buttons\n*/\n\n.tc-page-controls svg.tc-image-new-button {\n  fill: <<colour toolbar-new-button>>;\n}\n\n.tc-page-controls svg.tc-image-options-button {\n  fill: <<colour toolbar-options-button>>;\n}\n\n.tc-page-controls svg.tc-image-save-button {\n  fill: <<colour toolbar-save-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-info-button {\n  fill: <<colour toolbar-info-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-edit-button {\n  fill: <<colour toolbar-edit-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-close-button {\n  fill: <<colour toolbar-close-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-delete-button {\n  fill: <<colour toolbar-delete-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-cancel-button {\n  fill: <<colour toolbar-cancel-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-done-button {\n  fill: <<colour toolbar-done-button>>;\n}\n\n/*\n** Tiddler edit mode\n*/\n\n.tc-tiddler-edit-frame em.tc-edit {\n\tcolor: <<colour muted-foreground>>;\n\tfont-style: normal;\n}\n\n.tc-edit-type-dropdown a.tc-tiddlylink-missing {\n\tfont-style: normal;\n}\n\n.tc-edit-tags {\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tpadding: 4px 8px 4px 8px;\n}\n\n.tc-edit-add-tag {\n\tdisplay: inline-block;\n}\n\n.tc-edit-add-tag .tc-add-tag-name input {\n\twidth: 50%;\n}\n\n.tc-edit-add-tag .tc-keyboard {\n\tdisplay:inline;\n}\n\n.tc-edit-tags .tc-tag-label {\n\tdisplay: inline-block;\n}\n\n.tc-edit-tags-list {\n\tmargin: 14px 0 14px 0;\n}\n\n.tc-remove-tag-button {\n\tpadding-left: 4px;\n}\n\n.tc-tiddler-preview {\n\toverflow: auto;\n}\n\n.tc-tiddler-preview-preview {\n\tfloat: right;\n\twidth: 49%;\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tmargin: 4px 0 3px 3px;\n\tpadding: 3px 3px 3px 3px;\n}\n\n<<if-editor-height-fixed then:\"\"\"\n\n.tc-tiddler-preview-preview {\n\toverflow-y: scroll;\n\theight: {{$:/config/TextEditor/EditorHeight/Height}};\n}\n\n\"\"\">>\n\n.tc-tiddler-frame .tc-tiddler-preview .tc-edit-texteditor {\n\twidth: 49%;\n}\n\n.tc-tiddler-frame .tc-tiddler-preview canvas.tc-edit-bitmapeditor {\n\tmax-width: 49%;\n}\n\n.tc-edit-fields {\n\twidth: 100%;\n}\n\n\n.tc-edit-fields table, .tc-edit-fields tr, .tc-edit-fields td {\n\tborder: none;\n\tpadding: 4px;\n}\n\n.tc-edit-fields > tbody > .tc-edit-field:nth-child(odd) {\n\tbackground-color: <<colour tiddler-editor-fields-odd>>;\n}\n\n.tc-edit-fields > tbody > .tc-edit-field:nth-child(even) {\n\tbackground-color: <<colour tiddler-editor-fields-even>>;\n}\n\n.tc-edit-field-name {\n\ttext-align: right;\n}\n\n.tc-edit-field-value input {\n\twidth: 100%;\n}\n\n.tc-edit-field-remove {\n}\n\n.tc-edit-field-remove svg {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n\tvertical-align: middle;\n}\n\n.tc-edit-field-add-name {\n\tdisplay: inline-block;\n\twidth: 15%;\n}\n\n.tc-edit-field-add-value {\n\tdisplay: inline-block;\n\twidth: 40%;\n}\n\n.tc-edit-field-add-button {\n\tdisplay: inline-block;\n\twidth: 10%;\n}\n\n/*\n** Storyview Classes\n*/\n\n.tc-storyview-zoomin-tiddler {\n\tposition: absolute;\n\tdisplay: block;\n\twidth: 100%;\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-storyview-zoomin-tiddler {\n\t\twidth: calc(100% - 84px);\n\t}\n\n}\n\n/*\n** Dropdowns\n*/\n\n.tc-btn-dropdown {\n\ttext-align: left;\n}\n\n.tc-btn-dropdown svg, .tc-btn-dropdown img {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-drop-down-wrapper {\n\tposition: relative;\n}\n\n.tc-drop-down {\n\tmin-width: 380px;\n\tborder: 1px solid <<colour dropdown-border>>;\n\tbackground-color: <<colour dropdown-background>>;\n\tpadding: 7px 0 7px 0;\n\tmargin: 4px 0 0 0;\n\twhite-space: nowrap;\n\ttext-shadow: none;\n\tline-height: 1.4;\n}\n\n.tc-drop-down .tc-drop-down {\n\tmargin-left: 14px;\n}\n\n.tc-drop-down button svg, .tc-drop-down a svg  {\n\tfill: <<colour foreground>>;\n}\n\n.tc-drop-down button.tc-btn-invisible:hover svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-drop-down p {\n\tpadding: 0 14px 0 14px;\n}\n\n.tc-drop-down svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-drop-down img {\n\twidth: 1em;\n}\n\n.tc-drop-down-language-chooser img {\n\twidth: 2em;\n\tvertical-align: baseline;\n}\n\n.tc-drop-down a, .tc-drop-down button {\n\tdisplay: block;\n\tpadding: 0 14px 0 14px;\n\twidth: 100%;\n\ttext-align: left;\n\tcolor: <<colour foreground>>;\n\tline-height: 1.4;\n}\n\n.tc-drop-down .tc-tab-set .tc-tab-buttons button {\n\tdisplay: inline-block;\n    width: auto;\n    margin-bottom: 0px;\n    border-bottom-left-radius: 0;\n    border-bottom-right-radius: 0;\n}\n\n.tc-drop-down .tc-prompt {\n\tpadding: 0 14px;\n}\n\n.tc-drop-down .tc-chooser {\n\tborder: none;\n}\n\n.tc-drop-down .tc-chooser .tc-swatches-horiz {\n\tfont-size: 0.4em;\n\tpadding-left: 1.2em;\n}\n\n.tc-drop-down .tc-file-input-wrapper {\n\twidth: 100%;\n}\n\n.tc-drop-down .tc-file-input-wrapper button {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-drop-down a:hover, .tc-drop-down button:hover, .tc-drop-down .tc-file-input-wrapper:hover button {\n\tcolor: <<colour tiddler-link-background>>;\n\tbackground-color: <<colour tiddler-link-foreground>>;\n\ttext-decoration: none;\n}\n\n.tc-drop-down .tc-tab-buttons button {\n\tbackground-color: <<colour dropdown-tab-background>>;\n}\n\n.tc-drop-down .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour dropdown-tab-background-selected>>;\n\tborder-bottom: 1px solid <<colour dropdown-tab-background-selected>>;\n}\n\n.tc-drop-down-bullet {\n\tdisplay: inline-block;\n\twidth: 0.5em;\n}\n\n.tc-drop-down .tc-tab-contents a {\n\tpadding: 0 0.5em 0 0.5em;\n}\n\n.tc-block-dropdown-wrapper {\n\tposition: relative;\n}\n\n.tc-block-dropdown {\n\tposition: absolute;\n\tmin-width: 220px;\n\tborder: 1px solid <<colour dropdown-border>>;\n\tbackground-color: <<colour dropdown-background>>;\n\tpadding: 7px 0;\n\tmargin: 4px 0 0 0;\n\twhite-space: nowrap;\n\tz-index: 1000;\n\ttext-shadow: none;\n}\n\n.tc-block-dropdown.tc-search-drop-down {\n\tmargin-left: -12px;\n}\n\n.tc-block-dropdown a {\n\tdisplay: block;\n\tpadding: 4px 14px 4px 14px;\n}\n\n.tc-block-dropdown.tc-search-drop-down a {\n\tdisplay: block;\n\tpadding: 0px 10px 0px 10px;\n}\n\n.tc-drop-down .tc-dropdown-item-plain,\n.tc-block-dropdown .tc-dropdown-item-plain {\n\tpadding: 4px 14px 4px 7px;\n}\n\n.tc-drop-down .tc-dropdown-item,\n.tc-block-dropdown .tc-dropdown-item {\n\tpadding: 4px 14px 4px 7px;\n\tcolor: <<colour muted-foreground>>;\n}\n\n.tc-block-dropdown a:hover {\n\tcolor: <<colour tiddler-link-background>>;\n\tbackground-color: <<colour tiddler-link-foreground>>;\n\ttext-decoration: none;\n}\n\n.tc-search-results {\n\tpadding: 0 7px 0 7px;\n}\n\n.tc-image-chooser, .tc-colour-chooser {\n\twhite-space: normal;\n}\n\n.tc-image-chooser a,\n.tc-colour-chooser a {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\ttext-align: center;\n\tposition: relative;\n}\n\n.tc-image-chooser a {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tpadding: 2px;\n\tmargin: 2px;\n\twidth: 4em;\n\theight: 4em;\n}\n\n.tc-colour-chooser a {\n\tpadding: 3px;\n\twidth: 2em;\n\theight: 2em;\n\tvertical-align: middle;\n}\n\n.tc-image-chooser a:hover,\n.tc-colour-chooser a:hover {\n\tbackground: <<colour primary>>;\n\tpadding: 0px;\n\tborder: 3px solid <<colour primary>>;\n}\n\n.tc-image-chooser a svg,\n.tc-image-chooser a img {\n\tdisplay: inline-block;\n\twidth: auto;\n\theight: auto;\n\tmax-width: 3.5em;\n\tmax-height: 3.5em;\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\tleft: 0;\n\tright: 0;\n\tmargin: auto;\n}\n\n/*\n** Modals\n*/\n\n.tc-modal-wrapper {\n\tposition: fixed;\n\toverflow: auto;\n\toverflow-y: scroll;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n\tz-index: 900;\n}\n\n.tc-modal-backdrop {\n\tposition: fixed;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n\tz-index: 1000;\n\tbackground-color: <<colour modal-backdrop>>;\n}\n\n.tc-modal {\n\tz-index: 1100;\n\tbackground-color: <<colour modal-background>>;\n\tborder: 1px solid <<colour modal-border>>;\n}\n\n@media (max-width: 55em) {\n\t.tc-modal {\n\t\tposition: fixed;\n\t\ttop: 1em;\n\t\tleft: 1em;\n\t\tright: 1em;\n\t}\n\n\t.tc-modal-body {\n\t\toverflow-y: auto;\n\t\tmax-height: 400px;\n\t\tmax-height: 60vh;\n\t}\n}\n\n@media (min-width: 55em) {\n\t.tc-modal {\n\t\tposition: fixed;\n\t\ttop: 2em;\n\t\tleft: 25%;\n\t\twidth: 50%;\n\t}\n\n\t.tc-modal-body {\n\t\toverflow-y: auto;\n\t\tmax-height: 400px;\n\t\tmax-height: 60vh;\n\t}\n}\n\n.tc-modal-header {\n\tpadding: 9px 15px;\n\tborder-bottom: 1px solid <<colour modal-header-border>>;\n}\n\n.tc-modal-header h3 {\n\tmargin: 0;\n\tline-height: 30px;\n}\n\n.tc-modal-header img, .tc-modal-header svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-modal-body {\n\tpadding: 15px;\n}\n\n.tc-modal-footer {\n\tpadding: 14px 15px 15px;\n\tmargin-bottom: 0;\n\ttext-align: right;\n\tbackground-color: <<colour modal-footer-background>>;\n\tborder-top: 1px solid <<colour modal-footer-border>>;\n}\n\n/*\n** Notifications\n*/\n\n.tc-notification {\n\tposition: fixed;\n\ttop: 14px;\n\tright: 42px;\n\tz-index: 1300;\n\tmax-width: 280px;\n\tpadding: 0 14px 0 14px;\n\tbackground-color: <<colour notification-background>>;\n\tborder: 1px solid <<colour notification-border>>;\n}\n\n/*\n** Tabs\n*/\n\n.tc-tab-set.tc-vertical {\n\tdisplay: -webkit-flex;\n\tdisplay: flex;\n}\n\n.tc-tab-buttons {\n\tfont-size: 0.85em;\n\tpadding-top: 1em;\n\tmargin-bottom: -2px;\n}\n\n.tc-tab-buttons.tc-vertical  {\n\tz-index: 100;\n\tdisplay: block;\n\tpadding-top: 14px;\n\tvertical-align: top;\n\ttext-align: right;\n\tmargin-bottom: inherit;\n\tmargin-right: -1px;\n\tmax-width: 33%;\n\t-webkit-flex: 0 0 auto;\n\tflex: 0 0 auto;\n}\n\n.tc-tab-buttons button.tc-tab-selected {\n\tcolor: <<colour tab-foreground-selected>>;\n\tbackground-color: <<colour tab-background-selected>>;\n\tborder-left: 1px solid <<colour tab-border-selected>>;\n\tborder-top: 1px solid <<colour tab-border-selected>>;\n\tborder-right: 1px solid <<colour tab-border-selected>>;\n}\n\n.tc-tab-buttons button {\n\tcolor: <<colour tab-foreground>>;\n\tpadding: 3px 5px 3px 5px;\n\tmargin-right: 0.3em;\n\tfont-weight: 300;\n\tborder: none;\n\tbackground: inherit;\n\tbackground-color: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-right: 1px solid <<colour tab-border>>;\n\tborder-top-left-radius: 2px;\n\tborder-top-right-radius: 2px;\n}\n\n.tc-tab-buttons.tc-vertical button {\n\tdisplay: block;\n\twidth: 100%;\n\tmargin-top: 3px;\n\tmargin-right: 0;\n\ttext-align: right;\n\tbackground-color: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tborder-right: none;\n\tborder-top-left-radius: 2px;\n\tborder-bottom-left-radius: 2px;\n}\n\n.tc-tab-buttons.tc-vertical button.tc-tab-selected {\n\tbackground-color: <<colour tab-background-selected>>;\n\tborder-right: 1px solid <<colour tab-background-selected>>;\n}\n\n.tc-tab-divider {\n\tborder-top: 1px solid <<colour tab-divider>>;\n}\n\n.tc-tab-divider.tc-vertical  {\n\tdisplay: none;\n}\n\n.tc-tab-content {\n\tmargin-top: 14px;\n}\n\n.tc-tab-content.tc-vertical  {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\tpadding-top: 0;\n\tpadding-left: 14px;\n\tborder-left: 1px solid <<colour tab-border>>;\n\t-webkit-flex: 1 0 70%;\n\tflex: 1 0 70%;\n}\n\n.tc-sidebar-lists .tc-tab-buttons {\n\tmargin-bottom: -1px;\n}\n\n.tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour sidebar-tab-background-selected>>;\n\tcolor: <<colour sidebar-tab-foreground-selected>>;\n\tborder-left: 1px solid <<colour sidebar-tab-border-selected>>;\n\tborder-top: 1px solid <<colour sidebar-tab-border-selected>>;\n\tborder-right: 1px solid <<colour sidebar-tab-border-selected>>;\n}\n\n.tc-sidebar-lists .tc-tab-buttons button {\n\tbackground-color: <<colour sidebar-tab-background>>;\n\tcolor: <<colour sidebar-tab-foreground>>;\n\tborder-left: 1px solid <<colour sidebar-tab-border>>;\n\tborder-top: 1px solid <<colour sidebar-tab-border>>;\n\tborder-right: 1px solid <<colour sidebar-tab-border>>;\n}\n\n.tc-sidebar-lists .tc-tab-divider {\n\tborder-top: 1px solid <<colour sidebar-tab-divider>>;\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {\n\tdisplay: block;\n\twidth: 100%;\n\tbackground-color: <<colour sidebar-tab-background>>;\n\tborder-top: none;\n\tborder-left: none;\n\tborder-bottom: none;\n\tborder-right: 1px solid #ccc;\n\tmargin-bottom: inherit;\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {\n\tbackground-color: <<colour sidebar-tab-background-selected>>;\n\tborder: none;\n}\n\n/*\n** Manager\n*/\n\n.tc-manager-wrapper {\n\t\n}\n\n.tc-manager-controls {\n\t\n}\n\n.tc-manager-control {\n\tmargin: 0.5em 0;\n}\n\n.tc-manager-list {\n\twidth: 100%;\n\tborder-top: 1px solid <<colour muted-foreground>>;\n\tborder-left: 1px solid <<colour muted-foreground>>;\n\tborder-right: 1px solid <<colour muted-foreground>>;\n}\n\n.tc-manager-list-item {\n\n}\n\n.tc-manager-list-item-heading {\n    display: block;\n    width: 100%;\n    text-align: left;\t\n\tborder-bottom: 1px solid <<colour muted-foreground>>;\n\tpadding: 3px;\n}\n\n.tc-manager-list-item-heading-selected {\n\tfont-weight: bold;\n\tcolor: <<colour background>>;\n\tfill: <<colour background>>;\n\tbackground-color: <<colour foreground>>;\n}\n\n.tc-manager-list-item-heading:hover {\n\tbackground: <<colour primary>>;\n\tcolor: <<colour background>>;\n}\n\n.tc-manager-list-item-content {\n\tdisplay: flex;\n}\n\n.tc-manager-list-item-content-sidebar {\n    flex: 1 0;\n    background: <<colour tiddler-editor-background>>;\n    border-right: 0.5em solid <<colour muted-foreground>>;\n    border-bottom: 0.5em solid <<colour muted-foreground>>;\n    white-space: nowrap;\n}\n\n.tc-manager-list-item-content-item-heading {\n\tdisplay: block;\n\twidth: 100%;\n\ttext-align: left;\n    background: <<colour muted-foreground>>;\n\ttext-transform: uppercase;\n\tfont-size: 0.6em;\n\tfont-weight: bold;\n    padding: 0.5em 0 0.5em 0;\n}\n\n.tc-manager-list-item-content-item-body {\n\tpadding: 0 0.5em 0 0.5em;\n}\n\n.tc-manager-list-item-content-item-body > pre {\n\tmargin: 0.5em 0 0.5em 0;\n\tborder: none;\n\tbackground: inherit;\n}\n\n.tc-manager-list-item-content-tiddler {\n    flex: 3 1;\n    border-left: 0.5em solid <<colour muted-foreground>>;\n    border-right: 0.5em solid <<colour muted-foreground>>;\n    border-bottom: 0.5em solid <<colour muted-foreground>>;\n}\n\n.tc-manager-list-item-content-item-body > table {\n\tborder: none;\n\tpadding: 0;\n\tmargin: 0;\n}\n\n.tc-manager-list-item-content-item-body > table td {\n\tborder: none;\n}\n\n.tc-manager-icon-editor > button {\n\twidth: 100%;\n}\n\n.tc-manager-icon-editor > button > svg,\n.tc-manager-icon-editor > button > button {\n\twidth: 100%;\n\theight: auto;\n}\n\n/*\n** Alerts\n*/\n\n.tc-alerts {\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tmax-width: 500px;\n\tz-index: 20000;\n}\n\n.tc-alert {\n\tposition: relative;\n\tmargin: 28px;\n\tpadding: 14px 14px 14px 14px;\n\tborder: 2px solid <<colour alert-border>>;\n\tbackground-color: <<colour alert-background>>;\n}\n\n.tc-alert-toolbar {\n\tposition: absolute;\n\ttop: 14px;\n\tright: 14px;\n}\n\n.tc-alert-toolbar svg {\n\tfill: <<colour alert-muted-foreground>>;\n}\n\n.tc-alert-subtitle {\n\tcolor: <<colour alert-muted-foreground>>;\n\tfont-weight: bold;\n}\n\n.tc-alert-highlight {\n\tcolor: <<colour alert-highlight>>;\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-static-alert {\n\t\tposition: relative;\n\t}\n\n\t.tc-static-alert-inner {\n\t\tposition: absolute;\n\t\tz-index: 100;\n\t}\n\n}\n\n.tc-static-alert-inner {\n\tpadding: 0 2px 2px 42px;\n\tcolor: <<colour static-alert-foreground>>;\n}\n\n/*\n** Control panel\n*/\n\n.tc-control-panel td {\n\tpadding: 4px;\n}\n\n.tc-control-panel table, .tc-control-panel table input, .tc-control-panel table textarea {\n\twidth: 100%;\n}\n\n.tc-plugin-info {\n\tdisplay: block;\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground-colour: <<colour background>>;\n\tmargin: 0.5em 0 0.5em 0;\n\tpadding: 4px;\n}\n\n.tc-plugin-info-disabled {\n\tbackground: -webkit-repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);\n\tbackground: repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);\n}\n\n.tc-plugin-info-disabled:hover {\n\tbackground: -webkit-repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);\n\tbackground: repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);\n}\n\na.tc-tiddlylink.tc-plugin-info:hover {\n\ttext-decoration: none;\n\tbackground-color: <<colour primary>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour foreground>>;\n}\n\na.tc-tiddlylink.tc-plugin-info:hover .tc-plugin-info > .tc-plugin-info-chunk > svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-plugin-info-chunk {\n\tdisplay: inline-block;\n\tvertical-align: middle;\n}\n\n.tc-plugin-info-chunk h1 {\n\tfont-size: 1em;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk h2 {\n\tfont-size: 0.8em;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk div {\n\tfont-size: 0.7em;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info:hover > .tc-plugin-info-chunk > img, .tc-plugin-info:hover > .tc-plugin-info-chunk > svg {\n\twidth: 2em;\n\theight: 2em;\n\tfill: <<colour foreground>>;\n}\n\n.tc-plugin-info > .tc-plugin-info-chunk > img, .tc-plugin-info > .tc-plugin-info-chunk > svg {\n\twidth: 2em;\n\theight: 2em;\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-plugin-info.tc-small-icon > .tc-plugin-info-chunk > img, .tc-plugin-info.tc-small-icon > .tc-plugin-info-chunk > svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-plugin-info-dropdown {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tmargin-top: -8px;\n}\n\n.tc-plugin-info-dropdown-message {\n\tbackground: <<colour message-background>>;\n\tpadding: 0.5em 1em 0.5em 1em;\n\tfont-weight: bold;\n\tfont-size: 0.8em;\n}\n\n.tc-plugin-info-dropdown-body {\n\tpadding: 1em 1em 1em 1em;\n}\n\n/*\n** Message boxes\n*/\n\n.tc-message-box {\n\tborder: 1px solid <<colour message-border>>;\n\tbackground: <<colour message-background>>;\n\tpadding: 0px 21px 0px 21px;\n\tfont-size: 12px;\n\tline-height: 18px;\n\tcolor: <<colour message-foreground>>;\n}\n\n.tc-message-box svg {\n\twidth: 1em;\n\theight: 1em;\n    vertical-align: text-bottom;\n}\n\n/*\n** Pictures\n*/\n\n.tc-bordered-image {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tpadding: 5px;\n\tmargin: 5px;\n}\n\n/*\n** Floats\n*/\n\n.tc-float-right {\n\tfloat: right;\n}\n\n/*\n** Chooser\n*/\n\n.tc-chooser {\n\tborder: 1px solid <<colour table-border>>;\n}\n\n.tc-chooser-item {\n\tborder: 8px;\n\tpadding: 2px 4px;\n}\n\n.tc-chooser-item a.tc-tiddlylink {\n\tdisplay: block;\n\ttext-decoration: none;\n\tcolor: <<colour tiddler-link-foreground>>;\n\tbackground-color: <<colour tiddler-link-background>>;\n}\n\n.tc-chooser-item a.tc-tiddlylink:hover {\n\ttext-decoration: none;\n\tcolor: <<colour tiddler-link-background>>;\n\tbackground-color: <<colour tiddler-link-foreground>>;\n}\n\n/*\n** Palette swatches\n*/\n\n.tc-swatches-horiz {\n}\n\n.tc-swatches-horiz .tc-swatch {\n\tdisplay: inline-block;\n}\n\n.tc-swatch {\n\twidth: 2em;\n\theight: 2em;\n\tmargin: 0.4em;\n\tborder: 1px solid #888;\n}\n\n/*\n** Table of contents\n*/\n\n.tc-sidebar-lists .tc-table-of-contents {\n\twhite-space: nowrap;\n}\n\n.tc-table-of-contents button {\n\tcolor: <<colour sidebar-foreground>>;\n}\n\n.tc-table-of-contents svg {\n\twidth: 0.7em;\n\theight: 0.7em;\n\tvertical-align: middle;\n\tfill: <<colour sidebar-foreground>>;\n}\n\n.tc-table-of-contents ol {\n\tlist-style-type: none;\n\tpadding-left: 0;\n}\n\n.tc-table-of-contents ol ol {\n\tpadding-left: 1em;\n}\n\n.tc-table-of-contents li {\n\tfont-size: 1.0em;\n\tfont-weight: bold;\n}\n\n.tc-table-of-contents li a {\n\tfont-weight: bold;\n}\n\n.tc-table-of-contents li li {\n\tfont-size: 0.95em;\n\tfont-weight: normal;\n\tline-height: 1.4;\n}\n\n.tc-table-of-contents li li a {\n\tfont-weight: normal;\n}\n\n.tc-table-of-contents li li li {\n\tfont-size: 0.95em;\n\tfont-weight: 200;\n\tline-height: 1.5;\n}\n\n.tc-table-of-contents li li li a {\n\tfont-weight: bold;\n}\n\n.tc-table-of-contents li li li li {\n\tfont-size: 0.95em;\n\tfont-weight: 200;\n}\n\n.tc-tabbed-table-of-contents {\n\tdisplay: -webkit-flex;\n\tdisplay: flex;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents {\n\tz-index: 100;\n\tdisplay: inline-block;\n\tpadding-left: 1em;\n\tmax-width: 50%;\n\t-webkit-flex: 0 0 auto;\n\tflex: 0 0 auto;\n\tbackground: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a,\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {\n\tdisplay: block;\n\tpadding: 0.12em 1em 0.12em 0.25em;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a {\n\tborder-top: 1px solid <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-background>>;\n\tborder-bottom: 1px solid <<colour tab-background>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a:hover {\n\ttext-decoration: none;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tbackground: <<colour tab-border>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tbackground: <<colour background>>;\n\tmargin-right: -1px;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a:hover {\n\ttext-decoration: none;\n}\n\n.tc-tabbed-table-of-contents .tc-tabbed-table-of-contents-content {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\tpadding-left: 1.5em;\n\tpadding-right: 1.5em;\n\tborder: 1px solid <<colour tab-border>>;\n\t-webkit-flex: 1 0 50%;\n\tflex: 1 0 50%;\n}\n\n/*\n** Dirty indicator\n*/\n\nbody.tc-dirty span.tc-dirty-indicator, body.tc-dirty span.tc-dirty-indicator svg {\n\tfill: <<colour dirty-indicator>>;\n\tcolor: <<colour dirty-indicator>>;\n}\n\n/*\n** File inputs\n*/\n\n.tc-file-input-wrapper {\n\tposition: relative;\n\toverflow: hidden;\n\tdisplay: inline-block;\n\tvertical-align: middle;\n}\n\n.tc-file-input-wrapper input[type=file] {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tfont-size: 999px;\n\tmax-width: 100%;\n\tmax-height: 100%;\n\tfilter: alpha(opacity=0);\n\topacity: 0;\n\toutline: none;\n\tbackground: white;\n\tcursor: pointer;\n\tdisplay: inline-block;\n}\n\n/*\n** Thumbnail macros\n*/\n\n.tc-thumbnail-wrapper {\n\tposition: relative;\n\tdisplay: inline-block;\n\tmargin: 6px;\n\tvertical-align: top;\n}\n\n.tc-thumbnail-right-wrapper {\n\tfloat:right;\n\tmargin: 0.5em 0 0.5em 0.5em;\n}\n\n.tc-thumbnail-image {\n\ttext-align: center;\n\toverflow: hidden;\n\tborder-radius: 3px;\n}\n\n.tc-thumbnail-image svg,\n.tc-thumbnail-image img {\n\tfilter: alpha(opacity=1);\n\topacity: 1;\n\tmin-width: 100%;\n\tmin-height: 100%;\n\tmax-width: 100%;\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-image svg,\n.tc-thumbnail-wrapper:hover .tc-thumbnail-image img {\n\tfilter: alpha(opacity=0.8);\n\topacity: 0.8;\n}\n\n.tc-thumbnail-background {\n\tposition: absolute;\n\tborder-radius: 3px;\n}\n\n.tc-thumbnail-icon svg,\n.tc-thumbnail-icon img {\n\twidth: 3em;\n\theight: 3em;\n\t<<filter \"drop-shadow(2px 2px 4px rgba(0,0,0,0.3))\">>\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-icon svg,\n.tc-thumbnail-wrapper:hover .tc-thumbnail-icon img {\n\tfill: #fff;\n\t<<filter \"drop-shadow(3px 3px 4px rgba(0,0,0,0.6))\">>\n}\n\n.tc-thumbnail-icon {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tdisplay: -webkit-flex;\n\t-webkit-align-items: center;\n\t-webkit-justify-content: center;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.tc-thumbnail-caption {\n\tposition: absolute;\n\tbackground-color: #777;\n\tcolor: #fff;\n\ttext-align: center;\n\tbottom: 0;\n\twidth: 100%;\n\tfilter: alpha(opacity=0.9);\n\topacity: 0.9;\n\tline-height: 1.4;\n\tborder-bottom-left-radius: 3px;\n\tborder-bottom-right-radius: 3px;\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-caption {\n\tfilter: alpha(opacity=1);\n\topacity: 1;\n}\n\n/*\n** Errors\n*/\n\n.tc-error {\n\tbackground: #f00;\n\tcolor: #fff;\n}"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize",
            "text": "15px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/bodylineheight": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/bodylineheight",
            "text": "22px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/fontsize": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/fontsize",
            "text": "14px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/lineheight": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/lineheight",
            "text": "20px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/storyleft": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/storyleft",
            "text": "0px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/storytop": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/storytop",
            "text": "0px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/storyright": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/storyright",
            "text": "770px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/storywidth": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/storywidth",
            "text": "770px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth",
            "text": "686px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint",
            "text": "960px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth",
            "text": "350px"
        },
        "$:/themes/tiddlywiki/vanilla/options/stickytitles": {
            "title": "$:/themes/tiddlywiki/vanilla/options/stickytitles",
            "text": "no"
        },
        "$:/themes/tiddlywiki/vanilla/options/sidebarlayout": {
            "title": "$:/themes/tiddlywiki/vanilla/options/sidebarlayout",
            "text": "fixed-fluid"
        },
        "$:/themes/tiddlywiki/vanilla/options/codewrapping": {
            "title": "$:/themes/tiddlywiki/vanilla/options/codewrapping",
            "text": "pre-wrap"
        },
        "$:/themes/tiddlywiki/vanilla/reset": {
            "title": "$:/themes/tiddlywiki/vanilla/reset",
            "type": "text/plain",
            "text": "/*! normalize.css v3.0.0 | MIT License | git.io/normalize */\n\n/**\n * 1. Set default font family to sans-serif.\n * 2. Prevent iOS text size adjust after orientation change, without disabling\n *    user zoom.\n */\n\nhtml {\n  font-family: sans-serif; /* 1 */\n  -ms-text-size-adjust: 100%; /* 2 */\n  -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/**\n * Remove default margin.\n */\n\nbody {\n  margin: 0;\n}\n\n/* HTML5 display definitions\n   ========================================================================== */\n\n/**\n * Correct `block` display not defined in IE 8/9.\n */\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nnav,\nsection,\nsummary {\n  display: block;\n}\n\n/**\n * 1. Correct `inline-block` display not defined in IE 8/9.\n * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n */\n\naudio,\ncanvas,\nprogress,\nvideo {\n  display: inline-block; /* 1 */\n  vertical-align: baseline; /* 2 */\n}\n\n/**\n * Prevent modern browsers from displaying `audio` without controls.\n * Remove excess height in iOS 5 devices.\n */\n\naudio:not([controls]) {\n  display: none;\n  height: 0;\n}\n\n/**\n * Address `[hidden]` styling not present in IE 8/9.\n * Hide the `template` element in IE, Safari, and Firefox < 22.\n */\n\n[hidden],\ntemplate {\n  display: none;\n}\n\n/* Links\n   ========================================================================== */\n\n/**\n * Remove the gray background color from active links in IE 10.\n */\n\na {\n  background: transparent;\n}\n\n/**\n * Improve readability when focused and also mouse hovered in all browsers.\n */\n\na:active,\na:hover {\n  outline: 0;\n}\n\n/* Text-level semantics\n   ========================================================================== */\n\n/**\n * Address styling not present in IE 8/9, Safari 5, and Chrome.\n */\n\nabbr[title] {\n  border-bottom: 1px dotted;\n}\n\n/**\n * Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome.\n */\n\nb,\nstrong {\n  font-weight: bold;\n}\n\n/**\n * Address styling not present in Safari 5 and Chrome.\n */\n\ndfn {\n  font-style: italic;\n}\n\n/**\n * Address variable `h1` font-size and margin within `section` and `article`\n * contexts in Firefox 4+, Safari 5, and Chrome.\n */\n\nh1 {\n  font-size: 2em;\n  margin: 0.67em 0;\n}\n\n/**\n * Address styling not present in IE 8/9.\n */\n\nmark {\n  background: #ff0;\n  color: #000;\n}\n\n/**\n * Address inconsistent and variable font size in all browsers.\n */\n\nsmall {\n  font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` affecting `line-height` in all browsers.\n */\n\nsub,\nsup {\n  font-size: 75%;\n  line-height: 0;\n  position: relative;\n  vertical-align: baseline;\n}\n\nsup {\n  top: -0.5em;\n}\n\nsub {\n  bottom: -0.25em;\n}\n\n/* Embedded content\n   ========================================================================== */\n\n/**\n * Remove border when inside `a` element in IE 8/9.\n */\n\nimg {\n  border: 0;\n}\n\n/**\n * Correct overflow displayed oddly in IE 9.\n */\n\nsvg:not(:root) {\n  overflow: hidden;\n}\n\n/* Grouping content\n   ========================================================================== */\n\n/**\n * Address margin not present in IE 8/9 and Safari 5.\n */\n\nfigure {\n  margin: 1em 40px;\n}\n\n/**\n * Address differences between Firefox and other browsers.\n */\n\nhr {\n  -moz-box-sizing: content-box;\n  box-sizing: content-box;\n  height: 0;\n}\n\n/**\n * Contain overflow in all browsers.\n */\n\npre {\n  overflow: auto;\n}\n\n/**\n * Address odd `em`-unit font size rendering in all browsers.\n */\n\ncode,\nkbd,\npre,\nsamp {\n  font-family: monospace, monospace;\n  font-size: 1em;\n}\n\n/* Forms\n   ========================================================================== */\n\n/**\n * Known limitation: by default, Chrome and Safari on OS X allow very limited\n * styling of `select`, unless a `border` property is set.\n */\n\n/**\n * 1. Correct color not being inherited.\n *    Known issue: affects color of disabled elements.\n * 2. Correct font properties not being inherited.\n * 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n  color: inherit; /* 1 */\n  font: inherit; /* 2 */\n  margin: 0; /* 3 */\n}\n\n/**\n * Address `overflow` set to `hidden` in IE 8/9/10.\n */\n\nbutton {\n  overflow: visible;\n}\n\n/**\n * Address inconsistent `text-transform` inheritance for `button` and `select`.\n * All other form control elements do not inherit `text-transform` values.\n * Correct `button` style inheritance in Firefox, IE 8+, and Opera\n * Correct `select` style inheritance in Firefox.\n */\n\nbutton,\nselect {\n  text-transform: none;\n}\n\n/**\n * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n *    and `video` controls.\n * 2. Correct inability to style clickable `input` types in iOS.\n * 3. Improve usability and consistency of cursor style between image-type\n *    `input` and others.\n */\n\nbutton,\nhtml input[type=\"button\"], /* 1 */\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n  -webkit-appearance: button; /* 2 */\n  cursor: pointer; /* 3 */\n}\n\n/**\n * Re-set default cursor for disabled elements.\n */\n\nbutton[disabled],\nhtml input[disabled] {\n  cursor: default;\n}\n\n/**\n * Remove inner padding and border in Firefox 4+.\n */\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n  border: 0;\n  padding: 0;\n}\n\n/**\n * Address Firefox 4+ setting `line-height` on `input` using `!important` in\n * the UA stylesheet.\n */\n\ninput {\n  line-height: normal;\n}\n\n/**\n * It's recommended that you don't attempt to style these elements.\n * Firefox's implementation doesn't respect box-sizing, padding, or width.\n *\n * 1. Address box sizing set to `content-box` in IE 8/9/10.\n * 2. Remove excess padding in IE 8/9/10.\n */\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n  box-sizing: border-box; /* 1 */\n  padding: 0; /* 2 */\n}\n\n/**\n * Fix the cursor style for Chrome's increment/decrement buttons. For certain\n * `font-size` values of the `input`, it causes the cursor style of the\n * decrement button to change from `default` to `text`.\n */\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto;\n}\n\n/**\n * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.\n * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome\n *    (include `-moz` to future-proof).\n */\n\ninput[type=\"search\"] {\n  -webkit-appearance: textfield; /* 1 */\n  -moz-box-sizing: content-box;\n  -webkit-box-sizing: content-box; /* 2 */\n  box-sizing: content-box;\n}\n\n/**\n * Remove inner padding and search cancel button in Safari and Chrome on OS X.\n * Safari (but not Chrome) clips the cancel button when the search input has\n * padding (and `textfield` appearance).\n */\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n/**\n * Define consistent border, margin, and padding.\n */\n\nfieldset {\n  border: 1px solid #c0c0c0;\n  margin: 0 2px;\n  padding: 0.35em 0.625em 0.75em;\n}\n\n/**\n * 1. Correct `color` not being inherited in IE 8/9.\n * 2. Remove padding so people aren't caught out if they zero out fieldsets.\n */\n\nlegend {\n  border: 0; /* 1 */\n  padding: 0; /* 2 */\n}\n\n/**\n * Remove default vertical scrollbar in IE 8/9.\n */\n\ntextarea {\n  overflow: auto;\n}\n\n/**\n * Don't inherit the `font-weight` (applied by a rule above).\n * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n */\n\noptgroup {\n  font-weight: bold;\n}\n\n/* Tables\n   ========================================================================== */\n\n/**\n * Remove most spacing between table cells.\n */\n\ntable {\n  border-collapse: collapse;\n  border-spacing: 0;\n}\n\ntd,\nth {\n  padding: 0;\n}\n"
        },
        "$:/themes/tiddlywiki/vanilla/settings/fontfamily": {
            "title": "$:/themes/tiddlywiki/vanilla/settings/fontfamily",
            "text": "\"Helvetica Neue\", Helvetica, Arial, \"Lucida Grande\", \"DejaVu Sans\", sans-serif"
        },
        "$:/themes/tiddlywiki/vanilla/settings/codefontfamily": {
            "title": "$:/themes/tiddlywiki/vanilla/settings/codefontfamily",
            "text": "Monaco, Consolas, \"Lucida Console\", \"DejaVu Sans Mono\", monospace"
        },
        "$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment": {
            "title": "$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment",
            "text": "fixed"
        },
        "$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize": {
            "title": "$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize",
            "text": "auto"
        },
        "$:/themes/tiddlywiki/vanilla/sticky": {
            "title": "$:/themes/tiddlywiki/vanilla/sticky",
            "text": "<$reveal state=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\" type=\"match\" text=\"yes\">\n``\n.tc-tiddler-title {\n\tposition: -webkit-sticky;\n\tposition: -moz-sticky;\n\tposition: -o-sticky;\n\tposition: -ms-sticky;\n\tposition: sticky;\n\ttop: 0px;\n\tbackground: ``<<colour tiddler-background>>``;\n\tz-index: 500;\n}\n``\n</$reveal>\n"
        }
    }
}
370px
50px
770px
0px
750px
686px
fluid-fixed
no
backup
hunter.html


classic
 哀公(元年~二十七年)

  !哀公元年

  【经】元年春王正月,公即位。楚子、陈侯、随侯、许男围蔡。鼷鼠食郊牛,改卜牛。夏四月辛巳,郊。秋,齐侯,卫侯伐晋。冬,仲孙何忌帅师伐邾。

  

  【传】元年春,楚子围蔡,报柏举也。里而栽,广丈,高倍。夫屯昼夜九日,如子西之素。蔡人男女以辨,使疆于江、汝之间而还。蔡于是乎请迁于吴。

  吴王夫差败越于夫椒,报槜李也。遂入越。越子以甲楯五千,保于会稽。使大夫种因吴大宰嚭以行成,吴子将许之。伍员曰:“不可。臣闻之:树德莫如滋,去疾莫如尽。昔有过浇杀斟灌以伐斟寻阝,灭夏后相。后緍方娠,逃出自窦,归于有仍,生少康焉,为仍牧正。惎浇,能戒之。浇使椒求之,逃奔有虞,为之庖正,以除其害。虞思于是妻之以二姚,而邑诸纶。有田一成,有众一旅,能布其德,而兆其谋,以收夏众,抚其官职。使女艾谍浇,使季杼诱豷,遂灭过、戈,复禹之绩。祀夏配天,不失旧物。今吴不如过,而越大于少康,或将丰之,不亦难乎?句践能亲而务施,施不失人,亲不弃劳。与我同壤而世为仇雠,于是乎克而弗取,将又存之,违天而长寇仇,后虽悔之,不可食已。姬之衰也,日可俟也。

  介在蛮夷,而长寇仇,以是求伯,必不行矣。”弗听。退而告人曰:“越十年生聚,而十年教训,二十年之外,吴其为沼乎!”三月,越及吴平。吴入越,不书,吴不告庆,越不告败也。

  夏四月,齐侯、卫侯救邯郸,围五鹿。

  吴之入楚也,使召陈怀公。怀公朝国人而问焉,曰:“欲与楚者右,欲与吴者左。陈人从田,无田从党。”逢滑当公而进,曰:“臣闻国之兴也以福,其亡也以祸。今吴未有福,楚未有祸。楚未可弃,吴未可从。而晋,盟主也,若以晋辞吴,若何?”公曰:“国胜君亡,非祸而何?”对曰:“国之有是多矣,何必不复。小国犹复,况大国乎?臣闻国之兴也,视民如伤,是其福也。其亡也,以民为土芥,是其祸也。楚虽无德,亦不艾杀其民。吴日敝于兵,暴骨如莽,而未见德焉。天其或者正训楚也!祸之适吴,其何日之有?”陈侯从之。及夫差克越,乃修先君之怨。秋八月,吴侵陈,修旧怨也。

  齐侯、卫侯会于乾侯,救范氏也,师及齐师、卫孔圉、鲜虞人伐晋,取棘蒲。

  吴师在陈,楚大夫皆惧,曰:“阖庐惟能用其民,以败我于柏举。今闻其嗣又甚焉,将若之何?”子西曰:“二三子恤不相睦,无患吴矣。昔阖庐食不二味,居不重席,室不崇坛,器不彤镂,宫室不观,舟车不饰,衣服财用,择不取费。

  在国,天有灾疠,亲巡孤寡,而共其乏困。在军,熟食者分,而后敢食。其所尝者,卒乘与焉。勤恤其民而与之劳逸,是以民不罢劳,死知不旷。吾先大夫子常易之,所以败我也。今闻夫差次有台榭陂池焉,宿有妃嫱嫔御焉。一日之行,所欲必成,玩好必从。珍异是聚,观乐是务,视民如仇,而用之日新。夫先自败也已。安能败我?”冬十一月,晋赵鞅伐朝歌。

  

  

  !哀公二年

  【经】二年春王二月,季孙斯、叔孙州仇、仲孙何忌帅师伐邾,取漷东田及沂西田。癸巳,叔孙州仇、仲孙何忌及邾子盟于句绎。夏四月丙子,卫侯元卒。

  滕子来朝。晋赵鞅帅师纳卫世子蒯聩于戚。秋八月甲戌,晋赵鞅帅师及郑罕达帅师战于铁,郑师败绩。冬十月,葬卫灵公。十有一月,蔡迁于州来。蔡杀其大夫公子驷。

  

  【传】二年春,伐邾,将伐绞。邾人爱其土,故赂以淳阝、沂之田而受盟。

  初,卫侯游于郊,子南仆。公曰:“余无子,将立女。”不对。他日,又谓之。对曰:“郢不足以辱社稷,君其改图。君夫人在堂,三揖在下。君命只辱。”

  夏,卫灵公卒。夫人曰:“命公子郢为大子,君命也。”对曰:“郢异于他子。且君没于吾手,若有之,郢必闻之。且亡人之子辄在。”乃立辄。

  六月乙酉,晋赵鞅纳卫大子于戚。宵迷,阳虎曰:“右河而南,必至焉。”

  使大子絻,八人衰绖,伪自卫逆者。告于门,哭而入,遂居之。

  秋八月,齐人输范氏粟,郑子姚、子般送之。士吉射逆之,赵鞅御之,遇于戚。阳虎曰:“吾车少,以兵车之旆,与罕、驷兵车先陈。罕、驷自后随而从之,彼见吾貌,必有惧心。于是乎会之,必大败之。”从之。卜战,龟焦。乐丁曰:“《诗》曰:‘爰始爰谋,爰契我龟。’谋协以故,兆询可也。”简子誓曰:“范氏、中行氏,反易天明,斩艾百姓,欲擅晋国而灭其君。寡君恃郑而保焉。

  今郑为不道,弃君助臣,二三子顺天明,从君命,经德义,除诟耻,在此行也。

  克敌者,上大夫受县,下大夫受郡,士田十万,庶人工商遂,人臣隶圉免。志父无罪,君实图之。若其有罪,绞缢以戮,桐棺三寸,不设属辟,素车朴马,无入于兆,下卿之罚也。”甲戌,将战,邮无恤御简子,卫太子为右。登铁上,望见郑师众,大子惧,自投于车下。子良授大子绥而乘之,曰:“妇人也。”简子巡列,曰:“毕万,匹夫也。七战皆获,有马百乘,死于牖下。群子勉之,死不在寇。”繁羽御赵罗,宋勇为右。罗无勇,麇之。吏诘之,御对曰:“痁作而伏。”

  卫大子祷曰:“曾孙蒯聩敢昭告皇祖文王、烈祖康叔、文祖襄公:郑胜乱从,晋午在难,不能治乱,使鞅讨之。蒯聩不敢自佚,备持矛焉。敢告无绝筋,无折骨,无面伤,以集大事,无作三祖羞。大命不敢请,佩玉不敢爱。”

  郑人击简子中肩,毙于车中,获其蜂旗。大子救之以戈,郑师北,获温大夫赵罗。大子复伐之,郑师大败,获齐粟千车。赵孟喜曰:“可矣。”傅傁曰:“虽克郑,犹有知在,忧未艾也。”

  初,周人与范氏田,公孙尨税焉。赵氏得而献之,吏请杀之。赵孟曰:“为其主也,何罪?”止而与之田。及铁之战,以徒五百人宵攻郑师,取蜂旗于子姚之幕下,献曰:“请报主德。”

  追郑师。姚、般、公孙林殿而射,前列多死。赵孟曰:“国无小。”既战,简子曰:“吾伏弢呕血,鼓音不衰,今日我上也。”大子曰:“吾救主于车,退敌于下,我,右之上也。”邮良曰:“我两靷将绝,吾能止之,我,御之上也。”

  驾而乘材,两靷皆绝。

  吴泄庸如蔡纳聘,而稍纳师。师毕入,众知之。蔡侯告大夫,杀公子驷以说,哭而迁墓。冬,蔡迁于州来。

  

  

  !哀公三年

  【经】三年春,齐国夏、卫石曼姑帅师围戚。夏四月甲午,地震。五月辛卯,桓宫、僖宫灾。季孙斯、叔孙州仇帅师城启阳。宋乐髡帅师伐曹。秋七月丙子,季孙斯卒。蔡人放其大夫公孙猎于吴。冬十月癸卯,秦伯卒。叔孙州仇、仲孙何忌帅师围邾。

  

  【传】三年春,齐、卫围戚,求援于中山。

  夏五月辛卯,司铎火。火逾公宫,桓、僖灾。救火者皆曰:“顾府。”南宫敬叔至,命周人出御书,俟于宫,曰:“庀女而不在,死。”子服景伯至,命宰人出礼书,以待命:“命不共,有常刑。”校人乘马,巾车脂辖。百官官备,府库慎守,官人肃给。济濡帷幕,郁攸从之,蒙葺公屋。自大庙始,外内以悛,助所不给。有不用命,则有常刑,无赦。公父文伯至,命校人驾乘车。季桓子至,御公立于象魏之外,命救火者伤人则止,财可为也。命藏《象魏》,曰:“旧章不可亡也。”富父槐至,曰:“无备而官办者,犹拾沈也。”于是乎去表之藁,道还公宫。

  孔子在陈,闻火,曰:“其桓、僖乎!”刘氏、范氏世为婚姻,苌弘事刘文公,故周与范氏。赵鞅以为讨。六月癸卯,周人杀苌弘。

  秋,季孙有疾,命正常曰:“无死。南孺子之子,男也,则以告而立之。女也,则肥也可。”季孙卒,康子即位。既葬,康子在朝。南氏生男,正常载以如朝,告曰:“夫子有遗言,命其圉臣曰:‘南氏生男,则以告于君与大夫而立之。’今生矣,男也,敢告。”遂奔卫。康子请退。公使共刘视之,则或杀之矣,乃讨之。召正常,正常不反。

  冬十月,晋赵鞅围朝歌,师于其南。荀寅伐其郛,使其徒自北门入,己犯师而出。癸丑,奔邯郸。十一月,赵鞅杀士皋夷,恶范氏也。

  

  

  !哀公四年

  【经】四年春王二月庚戌,盗杀蔡侯申。蔡公孙辰出奔吴。葬秦惠公。宋人执小邾子。夏,蔡杀其大夫公孙姓、公孙霍。晋人执戎蛮子赤归于楚。城西郛。

  六月辛丑,亳社灾。秋八月甲寅,滕子结卒。冬十有二月,葬蔡昭公。葬滕顷公。

  

  【传】四年春,蔡昭侯将如吴,诸大夫恐其又迁也,承,公孙翩逐而射之,入于家人而卒。以两矢门之。众莫敢进。文之锴后至,曰:“如墙而进,多而杀二人。”锴执弓而先,翩射之,中肘。锴遂杀之。故逐公孙辰,而杀公孙姓、公孙盱。

  夏,楚人既克夷虎,乃谋北方。左司马眅、申公寿余、叶公诸梁致蔡于负函,致方城之外于缯关,曰:“吴将溯江入郢,将奔命焉。”为一昔之期,袭梁及霍。单浮余围蛮氏,蛮氏溃。蛮子赤奔晋阴地。司马起丰、析与狄戎,以临上雒。左师军于菟和,右师军于仓野,使谓阴地之命大夫士蔑曰:“晋、楚有盟,好恶同之。若将不废,寡君之愿也。不然,将通于少习以听命。”士蔑请诸赵孟。

  赵孟曰:“晋国未宁,安能恶于楚,必速与之。”士蔑乃致九州之戎。将裂田以与蛮子而城之,且将为之卜。蛮子听卜,遂执之,与其五大夫,以畀楚师于三户。

  司马致邑,立宗焉,以诱其遗民,而尽俘以归。

  秋七月,齐陈乞、弦施、卫宁跪救范氏。庚午,围五鹿。九月,赵鞅围邯郸。

  冬十一月,邯郸降。荀寅奔鲜虞,赵稷奔临。十二月,弦施逆之,遂堕临。国夏伐晋,取邢、任、栾、鄗、逆畤、阴人、盂、壶口。会鲜虞,纳荀寅于柏人。

  

  

  !哀公五年

  【经】五年春,城毗。夏,齐侯伐宋。晋赵鞅帅师伐卫。秋九月癸酉,齐侯杵臼卒。冬,叔还如齐。闰月,葬齐景公。

  

  【传】五年春,晋围柏人,荀寅、士吉射奔齐。初,范氏之臣王生恶张柳朔,言诸昭子,使为柏人。昭子曰:“夫非而仇乎?”对曰:“私仇不及公,好不废过,恶不去善,义之经也。臣敢违之?”及范氏出,张柳朔谓其子:“尔从主,勉之!我将止死,王生授我矣。吾不可以僣之。”遂死于柏人。

  夏,赵鞅伐卫,范氏之故也,遂围中牟。

  齐燕姬生子,不成而死,诸子鬻姒之子荼嬖。诸大夫恐其为大子也,言于公曰:“君之齿长矣,未有大子,若之何?”公曰:“二三子间于忧虞,则有疾疢。

  亦姑谋乐,何忧于无君?”公疾,使国惠子、高昭子立荼,置群公子于莱。秋,齐景公卒。冬十月,公子嘉、公子驹、公子黔奔卫,公子鉏、公子阳生来奔。莱人歌之曰:“景公死乎不与埋,三军之事乎不与谋。师乎师乎,何党之乎?”郑驷秦富而侈,嬖大夫也,而常陈卿之车服于其庭。郑人恶而杀之。子思曰:“《诗》曰:‘不解于位,民之攸塈。’不守其位,而能久者鲜矣。《商颂》曰:‘不僣不滥,不敢怠皇,命以多福。’”

  

  !哀公六年

  【经】六年春,城邾瑕。晋赵鞅帅师伐鲜虞。吴伐陈。夏,齐国夏及高张来奔。叔还公吴于柤。秋七月庚寅,楚子轸卒。齐阳生入齐。齐陈乞弑其君荼。

  冬,仲孙何忌帅师伐邾。宋向巢帅师伐曹。

  

  【传】六年春,晋伐鲜虞,治范氏之乱也。

  吴伐陈,复修旧怨也。楚子曰:“吾先君与陈有盟,不可以不救。”乃救陈,师于城父。

  齐陈乞伪事高、国者,每朝必骖乘焉。所从必言诸大夫,曰:“彼皆偃蹇,将弃子之命。皆曰:‘高、国得君,必逼我,盍去诸?’固将谋子,子早图之。

  图之,莫如尽灭之。需,事之下也。”及朝,则曰:“彼虎狼也,见我在子之侧,杀我无日矣。请就之位。”又谓诸大夫曰:“二子者祸矣!恃得君而欲谋二三子,曰:‘国之多难,贵宠之由,尽去之而后君定。’既成谋矣,盍及其未作也,先诸?作而后悔,亦无及也。”大夫从之。

  夏六月戊辰,陈乞、鲍牧及诸大夫,以甲入于公宫。昭子闻之,与惠子乘如公,战于庄,败。国人追之,国夏奔莒,遂及高张、晏圉、弦施来奔。

  秋七月,楚子在城父,将救陈。卜战,不吉;卜退,不吉。王曰:“然则死也!再败楚师,不如死。弃盟逃仇,亦不如死。死一也,其死仇乎!”命公子申为王,不可;则命公子结,亦不可;则命公子启,五辞而后许。将战,王有疾。

  庚寅,昭王攻大冥,卒于城父。子闾退,曰:“君王舍其子而让,群臣敢忘君乎?从君之命,顺也。立君之子,亦顺也。二顺不可失也。”与子西、子期谋,潜师闭涂,逆越女之子章,立之而后还。

  是岁也,有云如众赤鸟,夹日以飞,三日。楚子使问诸周大史。周大史曰:“其当王身乎!若禜之,可移于令尹、司马。”王曰:“除腹心之疾,而置诸股肱,何益?不谷不有大过,天其夭诸?有罪受罚,又焉移之?”遂弗禜。

  初,昭王有疾。卜曰:“河为祟。”王弗祭。大夫请祭诸郊,王曰:“三代命祀,祭不越望。江、汉、雎、漳,楚之望也。祸福之至,不是过也。不谷虽不德,河非所获罪也。”遂弗祭。孔子曰:“楚昭王知大道矣!其不失国也,宜哉!《夏书》曰:‘惟彼陶唐,帅彼天常,有此冀方。今失其行,乱其纪纲,乃灭而亡。’又曰:‘允出兹在兹。’由己率常可矣。”

  八月,齐邴意兹来奔。

  陈僖子使召公子阳生。阳生驾而见南郭且于,曰:“尝献马于季孙,不入于上乘,故又献此,请与子乘之。”出莱门而告之故。阚止知之,先待诸外。公子曰:“事未可知,反,与壬也处。”戒之,遂行。逮夜,至于齐,国人知之。僖子使子士之母养之,与馈者皆入。

  冬十月丁卯,立之。将盟,鲍子醉而往。其臣差车鲍点曰:“此谁之命也?”陈子曰:“受命于鲍子。”遂诬鲍子曰:“子之命也。”鲍子曰:“女忘君之为孺子牛而折其齿乎?而背之也!”悼公稽首,曰:“吾子奉义而行者也。若我可,不必亡一大夫。若我不可,不必亡一公子。义则进,否则退,敢不唯子是从?废兴无以乱,则所愿也。”鲍子曰:“谁非君之子?”乃受盟。使胡姬以安孺子如赖。去鬻姒,杀王甲,拘江说,囚王豹于句窦之丘。

  公使朱毛告于陈子,曰:“微子则不及此。然君异于器,不可以二。器二不匮,君二多难,敢布诸大夫。”僖子不对而泣,曰:“君举不信群臣乎?以齐国之困,困又有忧。少君不可以访,是以求长君,庶亦能容群臣乎!不然,夫孺子何罪?”毛复命,公悔之。毛曰:“君大访于陈子,而图其小可也。”使毛迁孺子于骀,不至,杀诸野幕之下,葬诸殳冒淳。

  

  

  !哀公七年

  【经】七年春,宋皇瑗帅师侵郑。晋魏曼多帅师侵卫。夏,公会吴于鄫。

  秋,公伐邾。八月己酉,入邾,以邾子益来。宋人围曹。冬,郑驷弘帅师救曹。

  

  【传】七年春,宋师侵郑,郑叛晋故也。

  晋师侵卫,卫不服也。

  夏,公会吴于鄫。吴来征百牢,子服景伯对曰:“先王未之有也。”吴人曰:“宋百牢我,鲁不可以后宋。且鲁牢晋大夫过十,吴王百牢,不亦可乎?”景伯曰:“晋范鞅贪而弃礼,以大国惧敝邑,故敝邑十一牢之。君若以礼命于诸侯,则有数矣。若亦弃礼,则有淫者矣。周之王也,制礼,上物不过十二,以为天之大数也。今弃周礼,而曰必百牢,亦唯执事。”吴人弗听。景伯曰:“吴将亡矣!弃天而背本。不与,必弃疾于我。”乃与之。

  大宰嚭召季康子,康子使子贡辞。大宰嚭曰:“国君道长,而大夫不出门,此何礼也?”对曰:“岂以为礼?畏大国也。大国不以礼命于诸侯,苟不以礼,岂可量也?寡君既共命焉,其老岂敢弃其国?大伯端委以治周礼,仲雍嗣之,断发文身,臝以为饰,岂礼也哉?有由然也。”反自鄫,以吴为无能为也。

  季康子欲伐邾,乃飨大夫以谋之。子服景伯曰:“小所以事大,信也。大所以保小,仁也。背大国,不信。伐小国,不仁。民保于城,城保于德,失二德者,危,将焉保?”孟孙曰:“二三子以为何如?恶贤而逆之?”对曰:“禹合诸侯于涂山,执玉帛者万国。今其存者,无数十焉。唯大不字小,小不事大也。知必危,何故不言?鲁德如邾,而以众加之,可乎?”不乐而出。

  秋,伐邾,及范门,犹闻钟声。大夫谏,不听,茅成子请告于吴,不许,曰:“鲁击柝闻于邾,吴二千里,不三月不至,何及于我?且国内岂不足?”成子以茅叛,师遂入邾,处其公宫,众师昼掠,邾众保于绎。师宵掠,以邾子益来,献于亳社,囚诸负瑕。负瑕故有绎。邾茅夷鸿以束帛乘韦,自请救于吴,曰:“鲁弱晋而远吴,冯恃其众,而背君之盟,辟君之执事,以陵我小国。邾非敢自爱也,惧君威之不立。君威之不立,小国之忧也。若夏盟于鄫衍,秋而背之,成求而不违,四方诸侯,其何以事君?且鲁赋八百乘,君之贰也。邾赋六百乘,君之私也。以私奉贰,唯君图之。”吴子从之。

  宋人围曹。郑桓子思曰:“宋人有曹,郑之患也。不可以不救。”冬,郑师救曹,侵宋。

  初,曹人或梦众君子立于社宫,而谋亡曹,曹叔振铎请待公孙强,许之。旦而求之曹,无之。戒其子曰:“我死,尔闻公孙强为政,必去之。”及曹伯阳即位,好田弋。曹鄙人公孙强好弋,获白雁,献之,且言田弋之说,说之。因访政事,大说之。有宠,使为司城以听政。梦者之子乃行。强言霸说于曹伯,曹伯从之,乃背晋而奸宋。宋人伐之,晋人不救。筑五邑于其郊,曰黍丘、揖丘、大城、钟、邗。

  

  

  !哀公八年

  【经】八年春王正月,宋公入曹,以曹伯阳归。吴伐我。夏,齐人取讙及阐。

  归邾子益于邾。秋七月。冬十有二月癸亥,杞伯过卒。齐人归讙及阐。

  

  【传】八年春,宋公伐曹,将还,褚师子肥殿。曹人诟之,不行,师待之。

  公闻之,怒,命反之,遂灭曹。执曹伯及司城强以归,杀之。

  吴为邾故,将伐鲁,问于叔孙辄。叔孙辄对曰:“鲁有名而无情,伐之,必得志焉。”退而告公山不狃。公山不狃曰:“非礼也。君子违,不适仇国。未臣而有伐之,奔命焉,死之可也。所托也则隐。且夫人之行也,不以所恶废乡。今子以小恶而欲覆宗国,不亦难乎?若使子率,子必辞,王将使我。”子张疾之。

  王问于子泄,对曰:“鲁虽无与立,必有与毙;诸侯将救之,未可以得志焉。晋与齐、楚辅之,是四仇也。夫鲁,齐、晋之唇,唇亡齿寒,君所知也。不救何为?”三月,吴伐我,子泄率,故道险,从武城。初,武城人或有因于吴竟田焉,拘鄫人之沤菅者,曰:“何故使吾水滋?”及吴师至,拘者道之,以伐武城,克之。王犯尝为之宰,澹台子羽之父好焉。国人惧,懿子谓景伯:“若之何?”对曰:“吴师来,斯与之战,何患焉?且召之而至,又何求焉?”吴师克东阳而进,舍于五梧,明日,舍于蚕室。公宾庚、公甲叔子与战于夷,获叔子与析朱鉏。

  献于王,王曰:“此同车,必使能,国未可望也。”明日,舍于庚宗,遂次于泗上。微虎欲宵攻王舍,私属徒七百人,三踊于幕庭,卒三百人,有若与焉,及稷门之内。或谓季孙曰:“不足以害吴,而多杀国士,不如已也。”乃止之。吴子闻之,一夕三迁。吴人行成,将盟。景伯曰:“楚人围宋,易子而食,析骸而爨,犹无城下之盟。我未及亏,而有城下之盟,是弃国也。吴轻而远,不能久,将归矣请少待之。”弗从。景伯负载,造于莱门,乃请释子服何于吴,吴人许之。以王子姑曹当之,而后止。吴人盟而还。

  齐悼公之来也,季康子以其妹妻之,即位而逆之。季鲂侯通焉,女言其情,弗敢与也。齐侯怒,夏五月,齐鲍牧帅师伐我,取讙及阐。

  或谮胡姬于齐侯,曰:“安孺子之党也。”六月,齐侯杀胡姬。

  齐侯使如吴请师,将以伐我,乃归邾子。邾子又无道,吴子使大宰子余讨之,囚诸楼台,栫之以棘。使诸大夫奉大子革以为政。

  秋,及齐平。九月,臧宾如如齐莅盟,齐闾丘明来莅盟,且逆季姬以归,嬖。

  鲍牧又谓群公子曰:“使女有马千乘乎?”公子愬之。公谓鲍子:“或谮子,子姑居于潞以察之。若有之,则分室以行。若无之,则反子之所。”出门,使以三分之一行。半道,使以二乘。及潞,麇之以入,遂杀之。

  冬十二月,齐人归讙及阐,季姬嬖故也。

  

  

  !哀公九年

  【经】九年春王二月,葬杞僖公。宋皇瑗帅师取郑师于雍丘。夏,楚人伐陈。

  秋,宋公伐郑。冬十月。

  

  【传】九年春,齐侯使公孟绰辞师于吴。吴子曰:“昔岁寡人闻命。今又革之,不知所从,将进受命于君。”

  郑武子剩之嬖许瑕求邑,无以与之。请外取,许之。故围宋雍丘。宋皇瑗围郑师,每日迁舍,垒合,郑师哭。子姚救之,大败。二月甲戌,宋取郑师于雍丘,使有能者无死,以郏张与郑罗归。

  夏,楚人伐陈,陈即吴故也。

  宋公伐郑。

  秋,吴城邗,沟通江、淮。

  晋赵鞅卜救郑,遇水适火,占诸史赵、史墨、史龟。史龟曰:“是谓沈阳,可以兴兵。利以伐姜,不利子商。伐齐则可,敌宋不吉。”史墨曰:“盈,水名也。子,水位也。名位敌,不可干也。炎帝为火师,姜姓其后也。水胜火,伐姜则可。”史赵曰:“是谓如川之满,不可游也。郑方有罪,不可救也。救郑则不吉,不知其他。”阳虎以《周易》筮之,遇《泰》ⅱⅰ之《需》ⅴⅰ,曰:“宋方吉,不可与也。微子启,帝乙之元子也。宋、郑,甥舅也。祉,禄也。若帝乙之元子归妹,而有吉禄,我安得吉焉?”乃止。

  冬,吴子使来亻敬师伐齐。

  

  

  !哀公十年

  【经】十年春王二月,邾子益来奔。公会吴伐齐。三月戊戌,齐侯阳生卒。

  夏,宋人伐郑。晋赵鞅帅师侵齐。五月,公至自伐齐。葬齐悼公。卫公孟彄自齐归于卫。薛伯夷卒。秋,葬薛惠公。冬,楚公子结帅师伐陈。吴救陈。

  

  【传】十年春,邾隐公来奔。齐甥也,故遂奔齐。

  公会吴子、邾子、郯子伐齐南鄙,师于鄎。齐人弑悼公,赴于师。吴子三日哭于军门之外。徐承帅舟师,将自海入齐,齐人败之,吴师乃还。

  夏,赵鞅帅师伐齐,大夫请卜之。赵孟曰:“吾卜于此起兵,事不再令,卜不袭吉,行也。”于是乎取犁及辕,毁高唐之郭,侵及赖而还。

  秋,吴子使来复亻敬师。

  冬,楚子期伐陈。吴延州来季子救陈,谓子期曰:“二君不务德,而力争诸侯,民何罪焉?我请退,以为子名,务德而安民。”乃还。

  

  

  !哀公十一年

  【经】十有一年春,齐国书帅师伐我。夏,陈辕颇出奔郑。五月,公会吴伐齐。甲戌,齐国书帅师及吴战于艾陵,齐师败绩,获齐国书。秋七月辛酉,滕子虞母卒。冬十有一月,葬滕隐公。卫世叔齐出奔宋。

  

  【传】十一年春,齐为鄎故,国书、高无丕帅师伐我,及清。季孙谓其宰冉求曰:“齐师在清,必鲁故也。若之何?”求曰:“一子守,二子从公御诸竟。”

  季孙曰:“不能。”求曰:“居封疆之间。”季孙告二子,二子不可。求曰:“若不可,则君无出。一子帅师,背城而战。不属者,非鲁人也。鲁之群室,众于齐之兵车。一室敌车,优矣。子何患焉?二子之不欲战也宜,政在季氏。当子之身,齐人伐鲁而不能战,子之耻也。大不列于诸侯矣。”季孙使从于朝,俟于党氏之沟。武叔呼而问战焉,对曰:“君子有远虑,小人何知?”懿子强问之,对曰:“小人虑材而言,量力而共者也。”武叔曰:“是谓我不成丈夫也。”退而蒐乘,孟孺子泄帅右师,颜羽御,邴泄为右。冉求帅左师,管周父御,樊迟为右。季孙曰:“须也弱。”有子曰:“就用命焉。”季氏之甲七千,冉有以武城人三百为己徒卒。老幼守宫,次于雩门之外。五日,右师从之。公叔务人见保者而泣,曰:“事充政重,上不能谋,士不能死,何以治民?吾既言之矣,敢不勉乎!”师及齐师战于郊,齐师自稷曲,师不逾沟。樊迟曰:“非不能也,不信子也。

  请三刻而逾之。”如之,众从之。师入齐军,右师奔,齐人从之,陈瓘、陈庄涉泗。孟之侧后入以为殿,抽矢策其马,曰:“马不进也。”林不狃之伍曰:“走乎?”不狃曰:“谁不如?”曰:“然则止乎?”不狃曰:“恶贤?”徐步而死。

  师获甲首八十,齐人不能师。宵,谍曰:“齐人遁。”冉有请从之三,季孙弗许。

  孟孺子语人曰:“我不如颜羽,而贤于邴泄。子羽锐敏,我不欲战而能默。泄曰:‘驱之。’”公为与其嬖僮汪锜乘,皆死,皆殡。孔子曰:“能执干戈以卫社稷,可无殇也。”冉有用矛于齐师,故能入其军。孔子曰:“义也。”

  夏,陈辕颇出奔郑。初,辕颇为司徒,赋封田以嫁公女。有余,以为己大器。

  国人逐之,故出。道渴,其族辕咺进稻醴、梁糗、腶脯焉。喜曰:“何其给也?”对曰:“器成而具。”曰:“何不吾谏?”对曰:“惧先行。”

  为郊战故,公会吴子伐齐。五月,克博,壬申,至于嬴。中军从王,胥门巢将上军,王子姑曹将下军,展如将右军。齐国书将中军,高无丕将上军,宗楼将下军。陈僖子谓其弟书:“尔死,我必得志。”宗子阳与闾丘明相厉也。桑掩胥御国子,公孙夏曰:“二子必死。”将战,公孙夏命其徒歌《虞殡》。陈子行命其徒具含玉。公孙挥命其徒曰:“人寻约,吴发短。”东郭书曰:“三战必死,于此三矣。”使问弦多以琴,曰:“吾不复见子矣。”陈书曰:“此行也,吾闻鼓而已,不闻金矣。”

  甲戌,战于艾陵,展如败高子,国子败胥门巢。王卒助之,大败齐师。获国书、公孙夏、闾丘明、陈书、东郭书,革车八百乘,甲首三千,以献于公。将战,吴子呼叔孙,曰:“而事何也?”对曰:“从司马。”王赐之甲、剑、铍,曰:“奉尔君事,敬无废命。”叔孙未能对,卫赐进,曰:“州仇奉甲从君。”而拜。

  公使大史固归国子之元,置之新箧,褽之以玄纁,加组带焉。置书于其上,曰:“天若不识不衷,何以使下国?”吴将伐齐,越子率其众以朝焉,王及列士,皆有馈赂。吴人皆喜,惟子胥惧,曰:“是豢吴也夫!”谏曰:“越在我,心腹之疾也。壤地同,而有欲于我。夫其柔服,求济其欲也,不如早从事焉。得志于齐,犹获石田也,无所用之。越不为沼,吴其泯矣,使医除疾,而曰:‘必遗类焉’者,未之有也。《盘庚之诰》曰:‘其有颠越不共,则劓殄无遗育,无俾易种于兹邑。’是商所以兴也。今君易之,将以求大,不亦难乎?”弗听,使于齐,属其子于鲍氏,为王孙氏。反役,王闻之,使赐之属镂以死,将死,曰:“树吾墓槚,槚可材也。吴其亡乎!三年,其始弱矣。盈必毁,天之道也。”

  秋,季孙命修守备,曰:“小胜大,祸也。齐至无日矣。”

  冬,卫大叔疾出奔宋。初,疾娶于宋子朝,其娣嬖。子朝出。孔文子使疾出其妻而妻之。疾使侍人诱其初妻之娣,置于犁,而为之一宫,如二妻。文子怒,欲攻之。仲尼止之。遂夺其妻。或淫于外州,外州人夺之轩以献。耻是二者,故出。卫人立遗,使室孔姞。疾臣向魋纳美珠焉,与之城鉏。宋公求珠,魋不与,由是得罪。及桓氏出,城鉏人攻大叔疾,卫庄公复之。使处巢,死焉。殡于郧,葬于少禘。

  初,晋悼公子慭亡在卫,使其女仆而田。大叔懿子止而饮之酒,遂聘之,生悼子。悼子即位,故夏戊为大夫。悼子亡,卫人翦夏戊。孔文子之将攻大叔也,访于仲尼。仲尼曰:“胡簋之事,则尝学之矣。甲兵之事,未之闻也。”退,命驾而行,曰:“鸟则择木,木岂能择鸟?”文子遽止之,曰:“圉岂敢度其私,访卫国之难也。”将止。鲁人以币召之,乃归。

  季孙欲以田赋,使冉有访诸仲尼。仲尼曰:“丘不识也。”三发,卒曰:“子为国老,待子而行,若之何子之不言也?”仲尼不对。而私于冉有曰:“君子之行也,度于礼,施取其厚,事举其中,敛从其薄。如是则以丘亦足矣。若不度于礼,而贪冒无厌,则虽以田赋,将又不足。且子季孙若欲行而法,则周公之典在。若欲苟而行,又何访焉?”弗听。

  

  

  !哀公十二年

  【经】十有二年春,用田赋。夏五月甲辰,孟子卒。公会吴于皋阜。秋,公会卫侯、宋皇瑗于郧。宋向巢帅师伐郑。冬十有二月,螽。

  

  【传】十二年春,王正月,用田赋。

  夏五月,昭夫人孟子卒。昭公娶于吴,故不书姓。死不赴,故不称夫人。不反哭,故言不葬小君。孔子与吊,适季氏。季氏不絻,放绖而拜。

  公会吴于橐皋。吴子使大宰嚭请寻盟。公不欲,使子贡对曰:“盟所以周信也,故心以制之,玉帛以奉之,言以结之,明神以要之。寡君以为苟有盟焉,弗可改也已。若犹可改,日盟何益?今吾子曰:‘必寻盟。’若可寻也,亦可寒也。”

  乃不寻盟。

  吴征会于卫。初,卫人杀吴行人且姚而惧,谋于行人子羽。子羽曰:“吴方无道,无乃辱吾君,不如止也。”子木曰:“吴方无道,国无道,必弃疾于人。

  吴虽无道,犹足以患卫。往也。长木之毙,无不摽也。国狗之瘈,无不噬也。而况大国乎?”秋,卫侯会吴于郧。公及卫侯、宋皇瑗盟,而卒辞吴盟。吴人藩卫侯之舍。

  子服景伯谓子贡曰:“夫诸侯之会,事既毕矣,侯伯致礼,地主归饩,以相辞也。

  今吴不行礼于卫,而藩其君舍以难之,子盍见大宰?”乃请束锦以行。语及卫故,大宰嚭曰:“寡君愿事卫君,卫君之来也缓,寡君惧,故将止之。”子贡曰:“卫君之来,必谋于其众。其众或欲或否,是以缓来。其欲来者,子之党也。其不欲来者,子之仇也。若执卫君,是堕党而崇仇也。夫堕子者得其志矣!且合诸侯而执卫君,谁敢不惧?堕党崇仇,而惧诸侯,或者难以霸乎!”大宰嚭说,乃舍卫侯。卫侯归,效夷言。子之尚幼,曰:“君必不免,其死于夷乎!执焉,而又说其言,从之固矣。”

  冬十二月,螽。季孙问诸仲尼,仲尼曰:“丘闻之,火伏而后蜇者毕。今火犹西流,司历过也。”

  宋郑之间有隙地焉,曰弥作、顷丘、玉畅、岩、戈、钖。子产与宋人为成,曰:“勿有是。”及宋平、元之族自萧奔郑,郑人为之城岩、戈、钖。九月,宋向巢伐郑,取钖,杀元公之孙,遂围岩。十二月,郑罕达救岩。丙申,围宋师。

  

  

  !哀公十三年

  【经】十有三年春,郑罕达帅师取宋师于岩。夏,许男成卒。公会晋侯及吴子于黄池。楚公子申帅师伐陈。于越入吴。秋,公至自会。晋魏曼多帅师侵卫。

  葬许元公。九月,螽。冬十有一月,有星孛于东方。盗杀陈夏区夫。十有二月,螽。

  

  【传】十三年春,宋向魋救其师。郑子剩使徇曰:“得桓魋者有赏。”魋也逃归,遂取宋师于岩,获成讙、郜延。以六邑为虚。

  夏,公会单平公、晋定公、吴夫差于黄池。

  六月丙子,越子伐吴,为二隧。畴无余、讴阳自南方,先及郊。吴大子友、王子地、王孙弥庸、寿于姚自泓上观之。弥庸见姑蔑之旗,曰:“吾父之旗也。

  不可以见仇而弗杀也。”大子曰:“战而不克,将亡国。请待之。”弥庸不可,属徒五千,王子地助之。乙酉,战,弥庸获畴无余,地获讴阳。越子至,王子地守。丙戌,复战,大败吴师。获大子友、王孙弥庸、寿于姚。丁亥,入吴。吴人告败于王,王恶其闻也,自刭七人于幕下。

  秋七月辛丑,盟,吴、晋争先。吴人曰:“于周室,我为长。”晋人曰:“于姬姓,我为伯。”赵鞅呼司马寅曰:“日旰矣,大事未成,二臣之罪也。建鼓整列,二臣死之,长幼必可知也。”对曰:“请姑视之。”反,曰:“肉食者无墨。今吴王有墨,国胜乎?大子死乎?且夷德轻,不忍久,请少待之。”乃先晋人。吴人将以公见晋侯,子服景伯对使者曰:“王合诸侯,则伯帅侯牧以见于王。伯合诸侯,则侯帅子男以见于伯。自王以下,朝聘玉帛不同。故敝邑之职贡于吴,有丰于晋,无不及焉,以为伯也。今诸侯会,而君将以寡君见晋君,则晋成为伯矣,敝邑将改职贡。鲁赋于吴八百乘,若为子男,则将半邾以属于吴,而如邾以事晋。且执事以伯召诸侯,而以侯终之,何利之有焉?”吴人乃止。既而悔之,将囚景伯,景伯曰:“何也立后于鲁矣。将以二乘与六人从,迟速唯命。”

  遂囚以还。及户牖,谓大宰曰:“鲁将以十月上辛,有事于上帝先王,季辛而毕。

  何世有职焉,自襄以来,未之改也。若不会,祝宗将曰:‘吴实然。’且谓鲁不共,而执其贱者七人,何损焉?”大宰嚭言于王曰:“无损于鲁,而只为名,不如归之。”乃归景伯。

  吴申叔仪乞粮于公孙有山氏,曰:“佩玉繠兮,余无所系之。旨酒一盛兮,余与褐之父睨之。”对曰:“梁则无矣,粗则有之。若登首山以呼曰:‘庚癸乎!’则诺。”

  王欲伐宋,杀其丈夫而囚其妇人。大宰嚭曰:“可胜也,而弗能居也。”乃归。

  冬,吴及越平。

  

  

  !哀公十四年

  【经】十有四年春,西狩获麟。小邾射以句绎来奔。夏四月,齐陈忄互执其君,置于舒州。庚戌,叔还卒。五月庚申朔,日有食之。陈宗竖出奔楚。宋向魋入于曹以叛。莒子狂卒。六月,宋向魋自曹出奔卫。宋向巢来奔。齐人弑其君壬于舒州。秋,晋赵鞅帅师伐卫。八月辛丑,仲孙何忌卒。冬,陈宗竖自楚复入于陈,陈人杀之。陈辕买出奔楚。有星孛。饥。

  

  【传】十四年春,西狩于大野,叔孙氏之车子鉏商获麟,以为不祥,以赐虞人。仲尼观之,曰:“麟也。”然后取之。

  小邾射以句绎来奔,曰:“使季路要我,吾无盟矣。”使子路,子路辞。季康子使冉有谓之曰:“千乘之国,不信其盟,而信子之言,子何辱焉?”对曰:“鲁有事于小邾,不敢问故,死其城下可也。彼不臣而济其言,是义之也。由弗能。”

  齐简公之在鲁也,阚止有宠焉。及即位,使为政。陈成子惮之,骤顾诸朝。

  诸御鞅言于公曰:“陈、阚不可并也,君其择焉。”弗听。子我夕,陈逆杀人,逢之,遂执以入。陈氏方睦,使疾,而遗之潘沐,备酒肉焉,飨守囚者,醉而杀之,而逃。子我盟诸陈于陈宗。

  初,陈豹欲为子我臣,使公孙言己,已有丧而止。既,而言之,曰:“有陈豹者,长而上偻,望视,事君子必得志,欲为子臣。吾惮其为人也,故缓以告。”

  子我曰:“何害?是其在我也。”使为臣。他日,与之言政,说,遂有宠,谓之曰:“我尽逐陈氏,而立女,若何?”对曰:“我远于陈氏矣。且其违者,不过数人,何尽逐焉?”遂告陈氏。子行曰:“彼得君,弗先,必祸子。”子行舍于公宫。

  夏五月壬申,成子兄弟四乘如公。子我在幄,出,逆之。遂入,闭门。侍人御之,子行杀侍人。公与妇人饮酒于檀台,成子迁诸寝。公执戈,将击之。大史子余曰:“非不利也,将除害也。”成子出舍于库,闻公犹怒,将出,曰:“何所无君?”子行抽剑,曰:“需,事之贼也。谁非陈宗?所不杀子者,有如陈宗!”乃止。子我归,属徒,攻闱与大门,皆不胜,乃出。陈氏追之,失道于弇中,适丰丘。丰丘人执之,以告,杀诸郭关。成子将杀大陆子方,陈逆请而免之。以公命取车于道,及耏,众知而东之。出雍门,陈豹与之车,弗受,曰:“逆为余请,豹与余车,余有私焉。事子我而有私于其仇,何以见鲁、卫之士?”东郭贾奔卫。

  庚辰,陈恒执公于舒州。公曰:“吾早从鞅之言,不及此。”

  宋桓魋之宠害于公,公使夫人骤请享焉,而将讨之。未及,魋先谋公,请以鞍易薄,公曰:“不可。薄,宗邑也。”乃益鞍七邑,而请享公焉。以日中为期,家备尽往。公知之,告皇野曰:“余长魋也,今将祸余,请即救。”司马子仲曰:“有臣不顺,神之所恶也,而况人乎?敢不承命。不得左师不可,请以君命召之。”

  左师每食击钟。闻钟声,公曰:“夫子将食。”既食,又奏。公曰:“可矣。”

  以乘车往,曰:“迹人来告曰:‘逢泽有介麇焉。’公曰:‘虽魋未来,得左师,吾与之田,若何?’君惮告子。野曰:‘尝私焉。’君欲速,故以乘车逆子。”

  与之乘,至,公告之故,拜,不能起。司马曰:“君与之言。”公曰:“所难子者,上有天,下有先君。”对曰:“魋之不共,宋之祸也,敢不唯命是听。”司马请瑞焉,以命其徒攻桓氏。其父兄故臣曰:“不可。”其新臣曰:“从吾君之命。”遂攻之。子颀骋而告桓司马。司马欲入,子车止之,曰:“不能事君,而又伐国,民不与也,只取死焉。”向魋遂入于曹以叛。六月,使左师巢伐之。欲质大夫以入焉,不能。亦入于曹,取质。魋曰:“不可。既不能事君,又得罪于民,将若之何?”乃舍之。民遂叛之。向魋奔卫。向巢来奔,宋公使止之,曰:“寡人与子有言矣,不可以绝向氏之祀。”辞曰:“臣之罪大,尽灭桓氏可也。

  若以先臣之故,而使有后,君之惠也。若臣,则不可以入矣。”

  司马牛致其邑与珪焉,而适齐。向魋出于卫地,公文氏攻之,求夏后氏之璜焉。与之他玉,而奔齐,陈成子使为次卿。司马牛又致其邑焉,而适吴。吴人恶之,而反。赵简子召之,陈成子亦召之。卒于鲁郭门之外,阬氏葬诸丘舆。

  甲午,齐陈恒弑其君壬于舒州。孔丘三日齐,而请伐齐三。公曰:“鲁为齐弱久矣,子之伐之,将若之何?”对曰:“陈恒弑其君,民之不与者半。以鲁之众,加齐之半,可克也。”公曰:“子告季孙。”孔子辞。退而告人曰:“吾以从大夫之后也,故不敢不言。”

  初,孟孺子泄将圉马于成。成宰公孙宿不受,曰:“孟孙为成之病,不圉马焉。”孺子怒,袭成。从者不得入,乃反。成有司使,孺子鞭之。秋八月辛丑,孟懿子卒。成人奔丧,弗内。袒免哭于衢,听共,弗许。惧,不归。

  

  

  !哀公十五年

  【经】十有五年春王正月,成叛。夏五月,齐高无出奔北燕。郑伯伐宋。

  秋八月,大雩。晋赵鞅帅师伐卫。冬,晋侯伐郑。及齐平。卫公孟彄出奔齐。

  

  【传】十五年春,成叛于齐。武伯伐成,不克,遂城输。

  夏,楚子西、子期伐吴,乃桐汭。陈侯使公孙贞子吊焉,及良而卒,将以尸入。吴子使大宰嚭劳,且辞曰:“以水潦之不时,无乃廪然陨大夫之尸,以重寡君之忧。寡君敢辞。”上介芋尹盖对曰:“寡君闻楚为不道,荐伐吴国,灭厥民人。寡君使盖备使,吊君之下吏。无禄,使人逢天之戚,大命陨队,绝世于良,废日共积,一日迁次。今君命逆使人曰:‘无以尸造于门。’是我寡君之命委于草莽也。且臣闻之曰:‘事死如事生,礼也。’于是乎有朝聘而终,以尸将事之礼。又有朝聘而遭丧之礼。若不以尸将命,是遭丧而还也,无乃不可乎!以礼防民,犹或逾之。今大夫曰:‘死而弃之’,是弃礼也。其何以为诸侯主?先民有言曰:‘无秽虐士。’备使奉尸将命,苟我寡君之命达于君所,虽陨于深渊,则天命也,非君与涉人之过也。”吴人内之。

  秋,齐陈瓘如楚。过卫,仲由见之,曰:“天或者以陈氏为斧斤,既斫丧公室,而他人有之,不可知也。其使终飨之,亦不可知也。若善鲁以待时,不亦可乎?何必恶焉?”子玉曰:“然,吾受命矣,子使告我弟。”

  冬,及齐平。子服景伯如齐,子赣为介,见公孙成,曰:“人皆臣人,而有背人之心。况齐人虽为子役,其有不贰乎?子,周公之孙也,多飨大利,犹思不义。利不可得,而丧宗国,将焉用之?”成曰:“善哉!吾不早闻命。”

  陈成子馆客,曰:“寡君使恒告曰:‘寡君愿事君如事卫君。’”景伯揖子赣而进之。对曰:“寡君之愿也。昔晋人伐卫,齐为卫故,伐晋冠氏,丧车五百,因与卫地,自济以西,禚、媚、杏以南,书社五百。吴人加敝邑以乱,齐因其病,取讙与阐。寡君是以寒心。若得视卫君之事君也,则固所愿也。”成子病之,乃归成。公孙宿以其兵甲入于嬴。

  卫孔圉取大子蒯聩之姊,生悝。孔氏之竖浑良夫长而美,孔文子卒,通于内。

  大子在戚,孔姬使之焉。大子与之言曰:“苟使我入获国,服冕乘轩,三死无与。”

  与之盟,为请于伯姬。

  闰月,良夫与大子入,舍于孔氏之外圃。昏,二人蒙衣而乘,寺人罗御,如孔氏。孔氏之老栾宁问之,称姻妾以告。遂入,适伯姬氏。既食,孔伯姬杖戈而先,大子与五人介,舆豭从之。迫孔悝于厕,强盟之,遂劫以登台。栾宁将饮酒,炙未熟,闻乱,使告季子。召获驾乘车,行爵食炙,奉卫侯辄来奔。季子将入,遇子羔将出,曰:“门已闭矣。”季子曰:“吾姑至焉。”子羔曰:“弗及,不践其难。”季子曰:“食焉,不辟其难。”子羔遂出。子路入,及门,公孙敢门焉,曰:“无入为也。”季子曰:“是公孙,求利焉而逃其难。由不然,利其禄,必救其患。”有使者出,乃入。曰:“大子焉用孔悝?虽杀之,必或继之。”且曰:“大子无勇,若燔台,半,必舍孔叔。”大子闻之,惧,下石乞、盂黡敌子路。以戈击之,断缨。子路曰:“君子死,冠不免。”结缨而死。孔子闻卫乱,曰:“柴也其来,由也死矣。”孔悝立庄公。庄公害故政,欲尽去之,先谓司徒瞒成曰:“寡人离病于外久矣,子请亦尝之。”归告褚师比,欲与之伐公,不果。

  

  

  !哀公十六年

  【经】十有六年春王正月己卯,卫世子蒯聩自戚入于卫,卫侯辄来奔。二月,卫子还成出奔宋。夏四月己丑,孔丘卒。

  

  【传】十六年春,瞒成、褚师比出奔宋。

  卫侯使鄢武子告于周曰:“蒯聩得罪于君父君母,逋窜于晋。晋以王室之故,不弃兄弟,置诸河上。天诱其衷,获嗣守封焉。使下臣肸敢告执事。”王使单平公对曰:“肸以嘉命来告余一人。往谓叔父,余嘉乃成世,复尔禄次。敬之哉!方天之休,弗敬弗休,悔其可追?”夏四月己丑,孔丘卒。公诔之曰:“旻天不吊,不慭遗一老。俾屏余一人以在位,茕茕余在疚。呜呼哀哉!尼父。无自律。”子赣曰:“君其不没于鲁乎!夫子之言曰:‘礼失则昏,名失则愆。’失志为昏,失所为愆。生不能用,死而诔之,非礼也。称一人,非名也。君两失之。”

  六月,卫侯饮孔悝酒于平阳,重酬之,大夫皆有纳焉。醉而送之,夜半而遣之。载伯姬于平阳而行,及西门,使贰车反祏于西圃。子伯季子初为孔氏臣,新登于公,请追之,遇载祏者,杀而乘其车。许公为反祏,遇之,曰:“与不仁人争,明无不胜。”必使先射,射三发,皆远许为。许为射之,殪。或以其车从,得祏于囊中。孔悝出奔宋。

  楚大子建之遇谗也,自城父奔宋。又辟华氏之乱于郑,郑人甚善之。又适晋,与晋人谋袭郑,乃求复焉。郑人复之如初。晋人使谍于子木,请行而期焉。子木暴虐于其私邑,邑人诉之。郑人省之,得晋谍焉。遂杀子木。其子曰胜,在吴。

  子西欲召之,叶公曰:“吾闻胜也诈而乱,无乃害乎?”子西曰:“吾闻胜也信而勇,不为不利,舍诸边竟,使卫藩焉。”叶公曰:“周仁之谓信,率义之谓勇。

  吾闻胜也好复言,而求死士,殆有私乎?复言,非信也。期死,非勇也。子必悔之。”弗从。召之使处吴竟,为白公。请伐郑,子西曰:“楚未节也。不然,吾不忘也。”他日,又请,许之。未起师,晋人伐郑,楚救之,与之盟。胜怒,曰:“郑人在此,仇不远矣。”

  胜自厉剑,子期之子平见之,曰:“王孙何自厉也?”曰:“胜以直闻,不告女,庸为直乎?将以杀尔父。”平以告子西。子西曰:“胜如卵,余翼而长之。

  楚国第,我死,令尹、司马,非胜而谁?”胜闻之,曰:“令尹之狂也!得死,乃非我。”子西不悛。胜谓石乞曰:“王与二卿士,皆五百人当之,则可矣。”

  乞曰:“不可得也。”曰:“市南有熊宜僚者,若得之,可以当五百人矣。”乃从白公而见之,与之言,说。告之故,辞。承之以剑,不动。胜曰:“不为利谄,不为威惕,不泄人言以求媚者,去之。”

  吴人伐慎,白公败之。请以战备献,许之。遂作乱。秋七月,杀子西、子期于朝,而劫惠王。子西以袂掩面而死。子期曰:“昔者吾以力事君,不可以弗终。”

  抉豫章以杀人而后死。石乞曰:“焚库弑王,不然不济。”白公曰:“不可。弑王,不祥,焚库,无聚,将何以守矣?”乞曰:“有楚国而治其民,以敬事神,可以得祥,且有聚矣,何患?”弗从。叶公在蔡,方城之外皆曰:“可以入矣。”

  子高曰:“吾闻之,以险侥幸者,其求无餍,偏重必离。”闻其杀齐管修也而后入。

  白公欲以子闾为王,子闾不可,遂劫以兵。子闾曰:“王孙若安靖楚国,匡正王室,而后庇焉,启之愿也,敢不听从。若将专利以倾王室,不顾楚国,有死不能。”遂杀之,而以王如高府,石乞尹门,圉公阳穴宫,负王以如昭夫人之宫。

  叶公亦至,及北门,或遇之,曰:“君胡不胄?国人望君如望慈父母焉。盗贼之矢若伤君,是绝民望也。若之何不胄?”乃胄而进。又遇一人曰:“君胡胄?国人望君如望岁焉,日日以几。若见君面,是得艾也。民知不死,其亦夫有奋心,犹将旌君以徇于国,而反掩面以绝民望,不亦甚乎?”乃免胄而进。遇箴尹固,帅其属,将与白公。子高曰:“微二子者,楚不国矣。弃德从贼,其可保乎?”乃从叶公。使与国人以攻白公。白公奔山而缢,其徒微之。生拘石乞而问白公之死焉,对曰:“余知其死所,而长者使余勿言。”曰:“不言将烹。”乞曰:“此事克则为卿,不克则烹,固其所也,何害?”乃烹石乞。王孙燕奔頯黄氏。诸梁兼二事,国宁,乃使宁为令尹,使宽为司马,而老于叶。

  卫侯占梦,嬖人求酒于大叔僖子,不得,与卜人比而告公曰:“君有大臣在西南隅,弗去,惧害。”乃逐大叔遗。遗奔晋。卫侯谓浑良夫曰:“吾继先君而不得其器,若之何?”良夫代执火者而言,曰:“疾与亡君,皆君之子也。召之而择材焉可也,若不材,器可得也。”竖告大子。大子使五人舆豭从己,劫公而强盟之,且请杀良夫。公曰:“其盟免三死。”曰:“请三之后,有罪杀之。”

  公曰:“诺哉!”

  

  !哀公十七年

  【传】十七年春,卫侯为虎幄于藉圃,成,求令名者,而与之始食焉。大子请使良夫。良夫乘衷甸两牡,紫衣狐裘,至,袒袭,不释剑而食。大子使牵以退,数之以三罪而杀之。

  三月,越子伐吴。吴子御之笠泽,夹水而陈。越子为左右句卒,使夜或左或右,鼓噪而进。吴师分以御之。越子以三军潜涉,当吴中军而鼓之,吴师大乱,遂败之。

  晋赵鞅使告于卫曰:“君之在晋也,志父为主。请君若大子来,以免志父。

  不然,寡君其曰,志父之为也。”卫侯辞以难。大子又使椓之。

  夏六月,赵鞅围卫。齐国观、陈瓘救卫,得晋人之致师者。子玉使服而见之,曰:“国子实执齐柄,而命瓘曰:‘无辟晋师。’岂敢废命?子又何辱?”简子曰:“我卜伐卫,未卜与齐战。”乃还。

  楚白公之乱,陈人恃其聚而侵楚。楚既宁,将取陈麦。楚子问帅于大师子谷与叶公诸梁,子谷曰:“右领差车与左史老,皆相令尹、司马以伐陈,其可使也。”

  子高曰:“率贱,民慢之,惧不用命焉。”子谷曰:“观丁父,鄀俘也,武王以为军率,是以克州、蓼,服随、唐,大启群蛮。彭仲爽,申俘也,文王以为令尹,实县申、息,朝陈、蔡,封畛于汝。唯其任也,何贱之有?”子高曰:“天命不謟。令尹有憾于陈,天若亡之,其必令尹之子是与,君盍舍焉?臣惧右领与左史有二俘之贱,而无其令德也。”王卜之,武城尹吉。使帅师取陈麦。陈人御之,败,遂围陈。秋七月己卯,楚公孙朝帅师灭陈。

  王与叶公枚卜子良以为令尹。沈尹朱曰:“吉,过于其志。”叶公曰:“王子而相国,过将何为?”他日,改卜子国而使为令尹。

  卫侯梦于北宫,见人登昆吾之观,被发北面而噪曰:“登此昆吾之虚,绵绵生之瓜。余为浑良夫,叫天无辜。”公亲筮之,胥弥赦占之,曰:“不害。”与之邑,置之,而逃奔宋。卫侯贞卜,其繇曰:“如鱼赪尾,衡流而方羊。裔焉大国,灭之将亡。阖门塞窦,乃自后逾。”

  冬十月,晋复伐卫,入其郛。将入城,简子曰:“止。叔向有言曰:‘怙乱灭国者无后。’”卫人出庄公而晋平,晋立襄公之孙般师而还。十一月,卫侯自鄄入,般师出。

  初,公登城以望,见戎州。问之,以告。公曰:“我姬姓也,何戎之有焉?”翦之。公使匠久。公欲逐石圃,未及而难作。辛已,石圃因匠氏攻公,公阖门而请,弗许。逾于北方而队,折股。戎州人攻之,大子疾、公子青逾从公,戎州人杀之。公入于戎州己氏。初,公自城上见己氏之妻发美,使髡之,以为吕姜髢。

  既入焉,而示之璧,曰:“活我,吾与女璧。”己氏曰:“杀女,璧其焉往?”遂杀之而取其璧。卫人复公孙般师而立之。十二月,齐人伐卫,卫人请平。立公子起,执般师以归,舍诸潞。

  公会齐侯,盟于蒙,孟武伯相。齐侯稽首,公拜。齐人怒,武伯曰:“非天子,寡君无所稽首。”武伯问于高柴曰:“诸侯盟,谁执牛耳?”季羔曰:“鄫衍之役,吴公子姑曹。发阳之役,卫石魋。”武伯曰:“然则彘也。”

  宋皇瑗之子麇,有友曰田丙,而夺其兄阝般邑以与之。酁般愠而行,告桓司马之臣子仪克。子仪克适宋,告夫人曰:“麇将纳桓氏。”公问诸子仲。初,仲将以杞姒之子非我为子。曰:“必立伯也,是良材。”子仲怒,弗从,故对曰:“右师则老矣,不识麇也。”公执之。皇瑗奔晋,召之。

  

  

  !哀公十八年

  【传】十八年春,宋杀皇瑗。公闻其情,复皇氏之族,使皇缓为右师。

  巴人伐楚,围鄾。初,右司马子国之卜也,观瞻曰:“如志。”故命之。及巴师至,将卜帅。王曰:“宁如志,何卜焉?”使帅师而行。请承,王曰:“寝尹、工尹,勤先君者也。”三月,楚公孙宁、吴由于、薳固败巴师于鄾,故封子国于析。君子曰:“惠王知志。《夏书》曰‘官占,唯能蔽志,昆命于元龟。’其是之谓乎!《志》曰:‘圣人不烦卜筮。’惠王其有焉!”夏,卫石圃逐其君起,起奔齐。卫侯辄自齐复归,逐石圃,而复石魋与大叔遗。

  

  

  !哀公十九年

  【传】十九年春,越人侵楚,以误吴也。夏,楚公子庆、公孙宽追越师,至冥,不及,乃还。

  秋,楚沈诸梁伐东夷,三夷男女及楚师盟于敖。

  冬,叔青如京师,敬王崩故也。

  

  

  !哀公二十年

  【传】二十年春,齐人来征会。夏,会于廪丘。为郑故,谋伐晋。郑人辞诸侯,秋,师还。

  吴公子庆忌骤谏吴子,曰:“不改,必亡。”弗听。出居于艾,遂适楚。闻越将伐吴,冬,请归平越,遂归。欲除不忠者以说于越,吴人杀之。

  十一月,越围吴。赵孟降于丧食。楚隆曰:“三年之丧,亲昵之极也。主又降之,无乃有故乎!”赵孟曰:“黄池之役,先主与吴王有质,曰:‘好恶同之。’今越围吴,嗣子不废旧业而敌之,非晋之所能及也,吾是以为降。”楚隆曰:“若使吴王知之,若何?”赵孟曰:“可乎?”隆曰:“请尝之。”乃往。先造于越军,曰:“吴犯间上国多矣,闻君亲讨焉,诸夏之人莫不欣喜,唯恐君志之不从。请入视之。”许之。告于吴王曰:“寡君之老无恤,使陪臣隆敢展谢其不共。黄池之役,君之先臣志父得承齐盟,曰:‘好恶同之。’今君在难,无恤不敢惮劳。非晋国之所能及也,使陪臣敢展布之。”王拜稽首曰:“寡人不佞,不能事越,以为大夫忧,拜命之辱。”与之一箪珠,使问赵孟,曰:“句践将生忧寡人,寡人死之不得矣。”王曰:“溺人必笑,吾将有问也,史黯何以得为君子?”对曰:“黯也进不见恶,退无谤言。”王曰:“宜哉。”

  

  

  !哀公二十一年

  【传】二十一年夏五月,越人始来。

  秋八月,公及齐侯、邾子盟于顾。齐有责稽首,因歌之曰:“鲁人之皋,数年不觉,使我高蹈。唯其儒书。以为二国忧。”

  是行也,公先至于阳谷。齐闾丘息曰:“君辱举玉趾,以在寡君之军。群臣将传遽以告寡君,比其复也,君无乃勤。为仆人之未次,请除馆于舟道。”辞曰:“敢勤仆人?”

  

  !哀公二十二年

  【传】二十二年夏四月,邾隐公自齐奔越,曰:“吴为无道,执父立子。”

  越人归之,大子革奔越。

  冬十一月丁卯,越灭吴。请使吴王居甬东,辞曰:“孤老矣,焉能事君?”乃缢。越人以归。

  

  

  !哀公二十三年

  【传】二十三年春,宋景曹卒。季康子使冉有吊,且送葬,曰:“敝邑有社稷之事,使肥与有职竞焉,是以不得助执绋,使求从舆人。曰:‘以肥之得备弥甥也,有不腆先人之产马,使求荐诸夫人之宰,其可以称旌繁乎?’”夏六月,晋荀瑶伐齐。高无丕帅师御之。知伯视齐师,马骇,遂驱之,曰:“齐人知余旗,其谓余畏而反也。”乃垒而还。将战,长武子请卜。知伯曰:“君告于天子,而卜之以守龟于宗祧,吉矣,吾又何卜焉?且齐人取我英丘,君命瑶,非敢耀武也,治英丘也。以辞伐罪足矣,何必卜?”壬辰,战于犁丘。齐师败绩,知伯亲禽颜庚。

  秋八月,叔青如越,始使越也。越诸鞅来聘,报叔青也。

  

  

  !哀公二十四年

  【传】二十四年夏四月,晋侯将伐齐,使来乞师,曰:“昔臧文仲以楚师伐齐,取谷。宣叔以晋师伐齐,取汶阳。寡君欲徼福于周公,愿乞灵于臧氏。”臧石帅师会之,取廪丘。军吏令缮,将进。莱章曰:“君卑政暴,往岁克敌,今又胜都。天奉多矣,又焉能进?是躗言也。役将班矣!”晋师乃还。饩臧石牛,大史谢之,曰:“以寡君之在行,牢礼不度,敢展谢之。”

  邾子又无道,越人执之以归,而立公子何。何亦无道。

  公子荆之母嬖,将以为夫人,使宗人衅夏献其礼。对曰:“无之。”公怒曰:“女为宗司,立夫人,国之大礼也,何故无之?”对曰:“周公及武公娶于薛,孝、惠娶于商,自桓以下娶于齐,此礼也则有。若以妾为夫人,则固无其礼也。”

  公卒立之,而以荆为大子。国人始恶之。

  闰月,公如越,得大子适郢,将妻公,而多与之地。公孙有山使告于季孙,季孙惧,使因大宰嚭而纳赂焉,乃止。

  

  

  !哀公二十五年

  【传】二十五年夏五月庚辰,卫侯出奔宋。卫侯为灵台于藉圃,与诸大夫饮酒焉。褚师声子袜而登席,公怒,辞曰:“臣有疾,异于人。若见之,君将之,是以不敢。”公愈怒,大夫辞之,不可。褚师出,公戟其手,曰:“必断而足。”闻之,褚师与司寇亥乘,曰:“今日幸而后亡。”公之入也,夺南氏邑,而夺司寇亥政。公使侍人纳公文懿子之车于池。

  初,卫人翦夏丁氏,以其帑赐彭封弥子。弥子饮公酒,纳夏戊之女,嬖,以为夫人。其弟期,大叔疾之从孙甥也,少畜于公,以为司徒。夫人宠衰,期得罪。

  公使三匠久。公使优狡盟拳弥,而甚近信之。故褚师比、公孙弥牟、公文要、司寇亥、司徒期因三匠与拳弥以作乱,皆执利兵,无者执斤。使拳弥入于公宫,而自大子疾之宫噪以攻公。鄄子士请御之。弥援其手,曰:“子则勇矣,将若君何?不见先君乎?君何所不逞欲?且君尝在外矣,岂必不反?当今不可,众怒难犯,休而易间也。”乃出。将适蒲,弥曰:“晋无信,不可。”将适鄄,弥曰:“齐、晋争我,不可。”将适泠,弥曰:“鲁不足与,请适城鉏以钩越,越有君。”乃适城锄。弥曰:“卫盗不可知也,请速,自我始。”乃载宝以归。

  公为支离之卒,因祝史挥以侵卫。卫人病之。懿子知之,见子之,请逐挥。

  文子曰:“无罪。”懿子曰:“彼好专利而妄。夫见君之入也,将先道焉。若逐之,必出于南门而适君所。夫越新得诸侯,将必请师焉。”挥在朝,使吏遣诸其室。挥出,信,弗内。五日,乃馆诸外里,遂有宠,使如越请师。

  六月,公至自越。季康子、孟武伯逆于五梧。郭重仆,见二子,曰:“恶言多矣,君请尽之。”公宴于五梧,武伯为祝,恶郭重,曰:“何肥也!”季孙曰:“请饮彘也。以鲁国之密迩仇雠,臣是以不获从君,克免于大行,又谓重也肥。”

  公曰:“是食言多矣,能无肥乎?”饮酒不乐,公与大夫始有恶。

  

  

  !哀公二十六年

  【传】二十六年夏五月,叔孙舒帅师会越皋如、后庸、宋乐茷,纳卫侯。

  文子欲纳之,懿子曰:“君愎而虐,少待之,必毒于民,乃睦于子矣。”师侵外州,大获。出御之,大败。掘褚师定子之墓,焚之于平庄之上。文子使王孙齐私于皋如,曰:“子将大灭卫乎,抑纳君而已乎?”皋如曰:“寡君之命无他,纳卫君而已。”文子致众而问焉,曰:“君以蛮夷伐国,国几亡矣。请纳之。”众曰:“勿纳。”曰:“弥牟亡而有益,请自北门出。”众曰:“勿出。”重赂越人,申开守陴而纳公,公不敢入。师还,立悼公,南氏相之,以城鉏与越人。公曰:“期则为此。”令苟有怨于夫人者,报之。司徒期聘于越。公攻而夺之币。

  期告王,王命取之。期以众取之。公怒,杀期之甥之为大子者。遂卒于越。

  宋景公无子,取公孙周之子得与启,畜诸公宫,未有立焉。于是皇缓为右师,皇非我为大司马,皇怀为司徒,灵不缓为左师,乐茷为司城,乐朱鉏为大司寇。六卿三族降听政,因大尹以达。大尹常不告,而以其欲称君命以令。国人恶之。司城欲去大尹,左师曰:“纵之,使盈其罪。重而无基,能无敝乎?”冬十月,公游于空泽。辛巳,卒于连中。大尹兴空泽之士千甲,奉公自空桐入,如沃宫。使召六子,曰:“闻下有师,君请六子画。”六子至,以甲劫之,曰:“君有疾病,请二三子盟。”乃盟于少寝之庭,曰:“无为公室不利。”大尹立启,奉丧殡于大宫。三日,而后国人知之。司城茷使宣言于国曰:“大尹惑蛊其君而专其利,今君无疾而死,死又匿之,是无他矣,大尹之罪也。”得梦启北首而寝于卢门之外,己为鸟而集于其上,咮加于南门,尾加于桐门。曰:“余梦美,必立。”大尹谋曰:“我不在盟,无乃逐我,复盟之乎?”使祝为载书,六子在唐盂。将盟之。祝襄以载书告皇非我,皇非我因子潞、门尹得、左师谋曰:“民与我,逐之乎?”皆归授甲,使徇于国曰:“大尹惑蛊其君,以陵虐公室。与我者,救君者也。”众曰:“与之。”大尹徇曰:“戴氏、皇氏将不利公室,与我者,无忧不富。”众曰:“无别。”戴氏、皇氏欲伐公,乐得曰:“不可。彼以陵公有罪,我伐公,则甚焉。”使国人施于大尹,大尹奉启以奔楚,乃立得。司城为上卿,盟曰:“三族共政,无相害也。”

  卫出公自城鉏使以弓问子赣,且曰:“吾其入乎?”子赣稽首受弓,对曰:“臣不识也。”私于使者曰:“昔成公孙于陈,宁武子、孙庄子为宛濮之盟而君入。献公孙于卫齐,子鲜、子展为夷仪之盟而君入。今君再在孙矣,内不闻献之亲,外不闻成之卿,则赐不识所由入也。《诗》曰:‘无竞惟人,四方其顺之。’若得其人,四方以为主,而国于何有?”

  

  !哀公二十七年

  【传】二十七年春,越子使后庸来聘,且言邾田,封于骀上。

  二月,盟于平阳,三子皆从。康子病之,言及子赣,曰:“若在此,吾不及此夫!”武伯曰:“然。何不召?”曰:“固将召之。”文子曰:“他日请念。”

  夏四月己亥,季康子卒。公吊焉,降礼。

  晋荀瑶帅师伐郑,次于桐丘。郑驷弘请救于齐。齐师将兴,陈成子属孤子,三日朝。设乘车两马,系五色焉。召颜涿聚之子晋,曰:“隰之役,而父死焉。

  以国之多难,未女恤也。今君命女以是邑也,服车而朝,毋废前劳。”乃救郑。

  及留舒,违谷七里,谷人不知。及濮,雨,不涉。子思曰:“大国在敝邑之宇下,是以告急。今师不行,恐无及也。”成子衣制,杖戈,立于阪上,马不出者,助之鞭之。知伯闻之,乃还,曰:“我卜伐郑,不卜敌齐。”使谓成子曰:“大夫陈子,陈之自出。陈之不祀,郑之罪也。故寡君使瑶察陈衷焉。谓大夫其恤陈乎?若利本之颠,瑶何有焉?”成子怒曰:“多陵人者皆不在,知伯其能久乎?”中行文子告成子曰:“有自晋师告寅者,将为轻车千乘,以厌齐师之门,则可尽也。”

  成子曰:“寡君命恒曰:‘无及寡,无畏众。’虽过千乘,敢辟之乎?将以子之命告寡君。”文子曰:“吾乃今知所以亡。君子之谋也,始衷终皆举之,而后入焉。今我三不知而入之,不亦难乎?”公患三桓之侈也,欲以诸侯去之。三桓亦患公之妄也,故君臣多间。公游于陵阪,遇孟武伯于孟氏之衢,曰:“请有问于子,余及死乎?”对曰:“臣无由知之。”三问,卒辞不对。公欲以越伐鲁,而去三桓。秋八月甲戌,公如公孙有陉氏,因孙于邾,乃遂如越。国人施公孙有山氏。

  悼之四年,晋荀瑶帅师围郑。未至,郑驷弘曰:“知伯愎而好胜,早下之,则可行也。”乃先保南里以待之。知伯入南里,门于桔柣之门。郑人俘酅魁垒,赂之以知政,闭其口而死。将门,知伯谓赵孟:“入之。”对曰:“主在此。”

  知伯曰:“恶而无勇,何以为子?”对曰:“以能忍耻,庶无害赵宗乎!”知怕不悛,赵襄子由是惎知伯,遂丧之。知伯贪而愎,故韩、魏反而丧之。
  《礼记哀公问》

  

  哀公问于孔子曰:“大礼何如?君子之言礼何其尊也?”孔子曰:“丘也小人,不足以知礼。”君曰:“否。吾子言之也。”孔子曰:“丘闻之:民之所由生,礼为大,非礼无以节事天地之神也,非礼无以辨君臣、上下、长幼之位也,非礼无以别男女、父子、兄弟之亲、昏姻、疏数之交也。君子以此之为尊敬然。然后以其所能教百姓,不废其会节。有成事,然后治其雕镂文章黼黻以嗣。其顺之,然后言其丧筭,备其鼎俎,设其豕腊,修其宗庙,岁时以敬祭祀,以序宗族。即安其居,节丑其衣服,卑其宫室。车不雕几,器不刻镂,食不贰味,以与民同利。昔之君子之行礼者如此。”公曰:“今之君子胡莫行之也?”孔子曰:“今之君子,好实无厌,淫德不倦,荒怠敖慢,固民是尽,午其众以伐有道,求得当欲不以其所。昔之用民者由前,今之用民者由后。今之君子莫为礼也。”

  

  孔子侍坐于哀公,哀公曰:“敢问人道谁为大?”孔子愀然作色而对曰:“君之及此言也,百姓之德也,固臣敢无辞而对?人道政为大。”公曰:“敢问何谓为政?”孔子对曰:“政者正也。君为正,则百姓从政矣。君之所为,百姓之所从也。君所不为,百姓何从?”公曰:“敢问为政如之何?”孔子对曰:“夫妇别,父子亲,君臣严,三者正则庶物从之矣。”公曰:“寡人虽无似也,愿闻所以行三言之道。可得闻乎?”孔子对曰:“古之为政,爱人为大。所以治爱人,礼为大。所以治礼,敬为大。敬之至矣。大昏为大,大昏至矣。大昏既至,冕而亲迎,亲之也。亲之也者,亲之也。是故君子兴敬为亲。舍敬,是遗亲也。弗爱不亲,弗敬不正,爱与敬,其政之本与?”公曰:“寡人愿有言然,冕而亲迎,不已重乎?”孔子愀然作色而对曰:“合二姓之好,以继先圣之后,以为天地宗庙社稷之主,君何谓已重乎?”公曰:“寡人固。不固,焉得闻此言也?寡人欲问不得其辞,请少进。”孔子曰:“天地不合,万物不生。大昏,万世之嗣也。君何谓已重焉?”孔子遂言曰:“内以治宗庙之礼,足以配天地之神明;出以治直言之礼,足以立上下之敬。物耻足以振之,国耻足以兴之,为政先礼,礼其政之本与?”孔子遂言曰:“昔三代明王之政,必敬其妻子也。有道:妻也者,亲之主也,敢不敬与?子也者,亲之后也,敢不敬与?君子无不敬也,敬身为大。身也者,亲之枝也,敢不敬与?不能敬其身,是伤其亲,伤其亲,是伤其本,伤其本,枝从而亡。三者百姓之象也。身以及身,子以及子,妃以及妃。君行此三者,则忾乎天下矣。大王之道也如此,则国家顺矣。”

  

  公曰:“敢问何谓敬身?”孔子对曰:“君子过言则民作辞,过动则民作则。君子言不过辞,动不过则,百姓不命而敬恭,如是则能敬其身。能敬其身则能成其亲矣。”

  

  公曰:“敢问何谓成亲?”孔子对曰:“君子也者,人之成名也。百姓归之名,谓之君子之子,是使其亲为君子也,是为成其亲之名也已。”孔子遂言曰:“古之为政,爱人为大。不能爱人,不能有其身。不能有其身,不能安土。不能安土,不能乐天。不能乐天,不能成其身。”

  

  公曰:“敢问何谓成身?”孔子对曰:“不过乎物。”

  

  公曰:“敢问君子何贵乎天道也?”孔子对曰:“贵其不已,如日月东西相从而不已也,是天道也,不闭其久,是天道也,无为而物成,是天道也,已成而明,是天道也。”

  

  公曰:“寡人惷愚冥烦,子志之心也。”孔子蹴然辟席而对曰:“仁人不过乎物,孝子不过乎物。是故仁人之事亲也如事天,事天如事亲。是故孝子成身。”公曰:“寡人既闻此言也,无如后罪何?”孔子对曰:“君之及此言也,是臣之福也。”

  

  
  八佾第三

  

  孔子谓季氏,“八佾舞于庭,是可忍也,孰不可忍也?”三家者,以《雍》彻。子曰:“‘相维辟公,天子穆穆’,奚取于三家之堂?”子曰:“人而不仁,如礼何?人而不仁,如乐何?”林放问礼之本。子曰:“大哉问!礼,与其奢也,宁俭;丧,与其易也,宁戚。”

  子曰:“夷狄之有君,不如诸夏之亡也。”

  季氏旅于泰山。子谓冉有曰:“女弗能救与?”对曰:“不能。”子曰:“呜呼!曾谓泰山不如林放乎?”子曰:“君子无所争,必也射乎!揖让而升,下而饮。其争也君子。”

  子夏问曰:“‘巧笑倩兮,美目盼兮,素以为绚兮。’何谓也?”子曰:“绘事后素。”曰:“礼后乎?”子曰:“起予者商也,始可与言《诗》已矣。”

  子曰:“夏礼,吾能言之,杞不足征也;殷礼,吾能言之,宋不足征也。文献不足故也。足,则吾能征之矣。”

  子曰:“禘自既灌而往者,吾不欲观之矣。”

  或问禘之说。子曰:“不知也。知其说者之于天下也,其如示诸斯乎!”指其掌。

  祭如在,祭神如神在。子曰:“吾不与祭,如不祭。”

  王孙贾问曰:“与其媚于奥,宁媚于灶,何谓也?”子曰:“不然!获罪于天,无所祷也。”

  子曰:“周监于二代,郁郁乎文哉!吾从周。”

  子入太庙,每事问。或曰:“孰谓鄹人之子知礼乎?入太庙,每事问。”子闻之,曰:“是礼也。”

  子曰:“射不主皮,为力不同科,古之道也。”

  子贡欲去告朔之饩羊。子曰:“赐也!尔爱其羊,我爱其礼。”

  子曰:“事君尽礼,人以为谄也。”

  定公问:“君使臣,臣事君,如之何?”孔子对曰:“君使臣以礼,臣事君以忠。”

  子曰:“《关雎》,乐而不淫,哀而不伤。”

  哀公问社于宰我。宰我对曰:“夏后氏以松,殷人以柏,周人以栗。”曰:“使民战栗。”子闻之曰:“成事不说,遂事不谏,既往不咎。”

  子曰:“管仲之器小哉!”或曰:“管仲俭乎?”曰:“管氏有三归,官事不摄,焉得俭?”“然则管仲知礼乎?”曰:“邦君树塞门,管氏亦树塞门。邦君为两君之好,有反坫,管氏亦有反坫。管氏而知礼,孰不知礼?”子语鲁大师乐,曰:“乐其可知也:始作,翕如也;从之,纯如也,皦如也,绎如也,以成。”

  仪封人请见,曰:“君子之至于斯也,吾未尝不得见也。”从者见之。出曰:“二三子何患于丧乎?天下之无道也久矣,天将以夫子为木铎。”

  子谓《韶》:“尽美矣,又尽善也。”谓《武》:“尽美矣,未尽善也。”

  子曰:“居上不宽,为礼不敬,临丧不哀,吾何以观之哉?”

  
  

  《礼记奔丧》

  

  奔丧之礼,始闻亲丧,以哭荅使者尽哀。问故,又哭尽哀。遂行,日行百里,不以夜行。唯父母之丧,见星而行,见星而舍。若未得行,则成服而后行。过国至竟哭,尽哀而止。哭辟市朝,望其国竟哭。至于家,入门左,升自西阶,殡东,西面坐,哭尽哀。括发袒,降堂东即位,西乡哭,成踊,袭绖于序东,绞带反位,拜宾成踊。送宾,反位。有宾后至者,则拜之成踊。送宾皆如初。众主人兄弟皆出门,出门哭止,阖门相者告就次。于又哭,括发袒成踊。于三哭,犹括发袒成踊。三日成服,拜宾送宾皆如初。

  

  奔丧者非主人,则主人为之拜宾送宾。奔丧者自齐衰以下,入门左,中庭北面,哭尽哀。免麻于序东,即位袒,与主人哭成踊。于又哭三哭,皆免袒。有宾,则主人拜宾送宾。丈夫妇人之待之也,皆如朝夕哭位,无变也。

  

  奔母之丧,西面哭尽哀,括发袒,降堂东即位,西乡哭成踊,袭免绖于序东。拜宾送宾,皆如奔父之礼。于又哭不括发。

  

  妇人奔丧,升自东阶,殡东,西面坐,哭尽哀。东髽即位,与主人拾踊。

  

  奔丧者不及殡,先之墓,北面坐,哭尽哀。主人之待之也,即位于墓左,妇人墓右,成踊尽哀。括发,东即主人位,绖绞带,哭成踊。拜宾,反位成踊。相者告事毕,遂冠。归入门左,北面哭尽哀,括发袒,成踊,东即位,拜宾成踊。宾出,主人拜送。有宾后至者,则拜之成踊。送宾如初,众主人兄弟皆出门,出门哭止,相者告就次。于又哭,括发成踊。于三哭,犹括发成踊。三日成服。于五哭,相者告事毕。为母所以异于父者,壹括发,其余免以终事。他如奔父之礼。

  

  齐衰以下,不及殡,先之墓,西面哭尽哀。免麻于东方,即位,与主人哭成踊,袭。有宾,则主人拜宾送宾。宾有后至者,拜之如初。相者告事毕,遂冠。归入门左,北面哭尽哀,免袒成踊。东即位,拜宾成踊。宾出,主人拜送。于又哭,免袒成踊。于三哭,犹免袒成踊。三日成服。于五哭,相者告事毕。

  

  闻丧不得奔丧,哭尽哀。问故,又哭尽哀。乃为位,括发袒成踊,袭绖绞带即位,拜宾,反位成踊。宾出主人拜送于门外,反位。若有宾后至者,拜之成踊,送宾如初。于又哭,括发袒成踊。于三哭,犹括发袒成踊。三日成服。于五哭,拜宾送宾如初。

  

  若除丧而后归,则之墓,哭成踊,东括发袒绖,拜宾成踊。送宾反位,又哭尽哀,遂除。于家不哭。主人之待之也,无变于服,与之哭不踊。

  

  自齐衰以下,所以异者免麻。

  

  凡为位,非亲丧,齐衰以下,皆即位,哭尽哀,而东免绖即位,袒成踊,袭。拜宾反位,哭成踊。送宾反位,相者告就次。三日五哭卒。主人出送宾,众主人兄弟皆出门,哭止。相者告事毕,成服拜宾,若所为位。家远,则成服而往。

  

  齐衰望乡而哭,大功望门而哭,小功至门而哭,缌麻即位而哭。

  

  哭父之党于庙,母妻之党于寝,师于庙门外,朋友于寝门外。所识于野,张帷,凡为位不奠。哭,天子九,诸侯七,卿大夫五,士三。大夫哭诸侯,不敢拜宾。诸臣在他国,为位而哭,不敢拜宾。与诸侯为兄弟,亦为位而哭。凡为位者壹袒。

  

  所识者吊,先哭于家而后之墓,皆为之成踊,从主人北面而踊。凡丧,父在,父为主,父没,兄弟同居,各主其丧。亲同,长者主之。不同,亲者主之。

  

  闻远兄弟之丧,既除丧而后闻丧,免袒成踊,拜宾则尚左手。

  

  无服而为位者,唯嫂叔。及妇人降而无服者麻。

  

  凡奔丧,有大夫至,袒拜之,成踊而后袭。于士,袭而后拜之。

  
关于编辑内容的几点说明(请点击编辑按钮看左栏内容):

!!1,不同段落之间要分行,正式显示出来的文本才不会混在一起。

!!2,一级标题的前方加一个 英文输入状态下的感叹号 ! 二级标题加两个!!,如下示范:

! 一级标题(前面的!是英文状态输入的)

!! 二级标题

!一级标题(错误示范,前面的!是中文状态输入的,无效)

!!关于创建链接

链接到内部文件:  [[显示的内容是这样的|Home]]  

也可以是这样的:[[Home]]

链接到网址:[[这样显示的|http://www.bolebook.com]]

英文状态下的[ [ , 还有]],内容中间用   |    竖线分隔开。

可以把上面的内容复制过去,然后修改  |  前后的内容。

图片链接的方法:  [img[这个地方替换为图片网址链接]]   

你可以在【工具】-【导入】这个地方导入你的图片,这样图片就会存在在文件里。

注:导入的图片请拼音命名,然后把文件名.jpg .jpeg填写到链接处。


示例(实在不会的话扫描联系我啊):

[img[yudade.jpg]]

  

  《礼记表记》

  

  子言之:“归乎!君子隐而显,不矜而庄,不厉而威,不言而信。”

  

  子曰:“君子不失足于人,不失色于人,不失口于人。是故君子貌足畏也,色足惮也,言足信也。甫刑曰:敬忌而罔有,择言在躬。”

  

  子曰:“裼袭之不相因也,欲民之毋相渎也。”

  

  子曰:“祭极敬,不继之以乐;朝极辨,不继之以倦。”

  

  子曰:“君子慎以辟祸,笃以不揜,恭以远耻。”

  

  子曰:“君子庄敬日强,安肆日偷,君子不以一日使其躬儳焉,如不终日。”

  

  子曰:“齐戒以事鬼神,择日月以见君,恐民之不敬也。”

  

  子曰:“狎侮死焉,而不畏也。”

  

  子曰:“无辞不相接也,无礼不相见也,欲民之毋相亵也。易曰:‘初筮告,再三渎,渎则不告。’”

  

  子言之:“仁者天下之表也,义者天下之制也,报者天下之利也。”

  

  子曰:“以德报德,则民有所劝;以怨报怨,则民有所惩。诗曰:‘无言不雠,无德不报。’大甲曰:‘民非后,无能胥以宁。后非民,无以辟四方。’”

  

  子曰:“以德报怨,则宽身之仁也;以怨报德,则刑戮之民也。”

  

  子曰:“无欲而好仁者,无畏而恶不仁者。天下一人而已矣,是故君子议道自已,而置法以民。”

  

  子曰:“仁有三,与仁同功而异情。与仁同功,其仁未可知也;与仁同过,然后其仁可知也。仁者安仁,知者利仁,畏罪者强仁。仁者右也,道者左也。仁者人也,道者义也。厚于仁者薄于义,亲而不尊。厚于义者薄于仁,尊而不亲。道有至,义有考。至道以王,义道以霸,考道以为无失。”

  

  子言之:“仁有数,义有长短小大。中心憯怛,爱人之仁也;率法而强之,资仁者也。诗云:‘丰水有芑,武王岂不仕。诒厥孙谋,以燕翼子。武王烝哉,数世之人也。’国风曰:‘我今不阅,皇恤我后。’终身之仁也。”

  

  子曰:“仁之为器重,其为道远,举者莫能胜也,行者莫能致也。取数多者,仁也。夫勉于仁者不亦难乎?是故君子以义度人,则难为人;以人望人,则贤者可知已矣。”

  

  子曰:“中心安仁者,天下一人而已矣。大雅曰:‘德輶如毛,民鲜克举之。我仪图之,惟仲山甫举之,爱莫助之。’小雅曰:‘高山仰止,景行行止。’”

  

  子曰:“诗之好仁如此,乡道而行,中道而废,忘身之老也不知年数之不足也。俛焉日有孳孳,毙而后已。”

  

  子曰:“仁之难成久矣。人人失其所好,故仁者之过易辞也。”

  

  子曰:“恭近礼,俭近仁,信近情。敬让以行,此虽有过,其不甚矣。夫恭寡过,情可信,俭易容也,以此失之者,不亦鲜乎?诗曰:‘温温恭人,惟德之基。’”

  

  子曰:“仁之难成久矣!惟君子能之。是故君子不以其所能者病人,不以人之所不能者愧人。是故圣人之制行也,不制以已,使民有所劝勉愧耻以行其言。礼以节之,信以结之,容貌以文之,衣服以移之,朋友以极之,欲民之有壹也。小雅曰:‘不愧于人,不畏于天。’是故君子服其服,则文以君子之容;有其容,则文以君子之辞;遂其辞,则实以君子之德。是故君子耻服其服而无其容,耻有其容而无其辞,耻有其辞而无其德,耻有其德而无其行。是故君子衰绖则有哀色,端冕则有敬色,甲胄则有不可辱之色。诗云:‘惟鹈在梁,不濡其翼。彼记之子,不称其服。’”

  

  子言之:“君子之所谓义者,贵贱皆有事于天下。天子亲耕,粢盛秬鬯,以事上帝,故诸侯勤以辅事于天子。”

  

  子曰:“下之事上也,虽有庇民之大德,不敢有君民之心,仁之厚也。是故君子恭俭以求役仁,信让以求役礼,不自尚其事,不自尊其身,俭于位而寡于欲,让于贤,卑己而尊人,小心而畏义。求以事君,得之自是,不得自是,以听天命。诗云:‘莫莫葛藟,施于条枚。凯弟君子,求福不回。’其舜、禹、文王、周公之谓与?有君民之大德,有事君之小心。诗云:‘惟此文王,小心翼翼,昭事上帝,聿怀多福。厥德不回,以受方国。’”

  

  子曰:“先王谥以尊名,节以壹惠,耻名之浮于行也。是故君子不自大其事,不自尚其功,以求处情;过行弗率,以求处厚;彰人之善而美人之功,以求下贤。是故君子虽自卑而民敬尊之。”

  

  子曰:“后稷天下之为烈也,岂一手一足哉?唯欲行之浮于名也,故自谓便人。”

  

  子言之:“君子之所谓仁者,其难乎?诗云:‘凯弟君子,民之父母。’凯以强教之,弟以说安之。乐而毋荒,有礼而亲,威庄而安,孝慈而敬,使民有父之尊,有母之亲。如此而后可以为民父母矣。非至德其孰能如此乎?今父之亲子也,亲贤而下无能;母之亲子也,贤则亲之,无能则怜之。母亲而不尊,父尊而不亲。水之于民也,亲而不尊,火尊而不亲;土之于民也,亲而不尊,天尊而不亲;命之于民也,亲而不尊,鬼尊而不亲。”

  

  子曰:“夏道尊命,事鬼敬神而远之,近人而忠焉。先禄而后威,先赏而后罚。亲而不尊。其民之敝,惷而愚,乔而野,朴而不文。殷人尊神,率民以事神,先鬼而后礼,先罚而后赏。尊而不亲,其民之敝,荡而不静,胜而无耻。周人尊礼尚施,事鬼敬神而远之,近人而忠焉,其赏罚用爵列。亲而不尊,其民之敝,利而巧,文而不惭,贼而蔽。”

  

  子曰:“夏道未渎辞,不求备,不大望于民,民未厌其亲。殷人未渎礼,而求备于民。周人强民,未渎神,而赏爵刑罚穷矣。”

  

  子曰:“虞夏之道,寡怨于民。殷周之道,不胜其敝。”

  

  子曰:“虞夏之质,殷周之文,至矣。虞夏之文,不胜其质;殷周之质,不胜其文。”

  

  子言之曰:“后世虽有作者,虞帝弗可及也已矣!君天下,生无私,死不厚其子,子民如父母,有憯怛之爱,有忠利之教,亲而尊,安而敬,威而爱,富而有礼,惠而能散。其君子尊仁畏义,耻费轻实,忠而不犯,义而顺,文而静,宽而有辨。甫刑曰:‘德威惟威,德明惟明。’非虞帝其孰能如此乎?”

  

  子言之:“事君先资其言,拜自献其身,以成其信。是故君有责于其臣,臣有死于其言。故其受禄不诬,其受罪益寡。”

  

  子曰:“事君大言入则望大利,小言入则望小利。故君子不以小言受大禄,不以大言受小禄。易曰:‘不家食,吉。’”

  

  子曰:“事君不下达,不尚辞,非其人弗自。小雅曰:‘靖共尔位,正直是与。神之听之,式谷以女。’”

  

  子曰:“事君远而谏,则讇也。近而不谏,则尸利也。”

  

  子曰:“迩臣守和,宰正百官,大臣虑四方。”

  

  子曰:“事君欲谏不欲陈。诗云:‘心乎爱矣,瑕不谓矣。中心藏之,何日忘之?’”

  

  子曰:“事君难进而易退,则位有序;易进而难退,则乱也。故君子三揖而进,一辞而退,以远乱也。”

  

  子曰:“事君三违而不出竟,则利禄也。人虽曰不要,吾弗信也。”

  

  子曰:“事君慎始而敬终。”

  

  子曰:“事君可贵可贱,可富可贫,可生可杀,而不可使为乱。”

  

  子曰:“事君,军旅不辟难,朝廷不辞贱。处其位而不履其事,则乱也。故君使其臣,得志则慎虑而从之,否则孰虑而从之。终事而退,臣之厚也。易曰:‘不事王侯,高尚其事。’”

  

  子曰:“唯天子受命于天,士受命于君。故君命顺,则臣有顺命。君命逆,则臣有逆命。诗曰:‘鹊之姜姜,鹑之贲贲。人之无良,我以为君。’”

  

  子曰:“君子不以辞尽人。故天下有道,则行有枝叶;天下无道,则辞有枝叶。是故君子于有丧者之侧,不能赙焉,则不问其所费。于有病者之侧,不能馈焉,则不问其所欲。有客不能馆,则不问其所舍。故君子之接如水,小人之接如醴。君子淡以成,小人甘以坏。小雅曰:‘盗言孔甘,乱是用餤。’”

  

  子曰:“君子不以口誉人,则民作忠。故君子问人之寒则衣之,问人之饥则食之,称人之美则爵之。国风曰:‘心之忧矣,于我归说。’”

  

  子曰:“口惠而实不至,怨菑及其身。是故君子与其有诺责也,宁有己怨。国风曰:‘言笑晏晏,信誓旦旦,不思其反,反是不思,亦已焉哉!’”

  

  子曰:“君子不以色亲人。情疏而貌亲,在小人则穿窬之盗也与?”

  

  子曰:“情欲信,辞欲巧。”

  

  子言之:“昔三代明王,皆事天地之神明,无非卜筮之用,不敢以其私亵事上帝。是故不犯日月,不违卜筮。卜筮不相袭也,大事有时日,小事无时日。有筮,外事用刚日,内事用柔日,不违龟筮。”

  

  子曰:“牲牷礼乐齐盛,是以无害乎。鬼神无怨乎百姓。”

  

  子曰:“后稷之祀易富也,其辞恭,其欲俭,其禄及子孙。诗曰:‘后稷兆祀,庶无罪悔,以迄于今。’”

  

  子曰:“大人之器威敬。天子无筮,诸侯有守筮。天子道以筮,诸侯非其国不以筮。卜宅寝室,天子不卜处大庙。”

  

  子曰:“君子敬则用祭器,是以不废日月,不违龟筮,以敬事其君长。是以上不渎于民,下不亵于上。”

  

  

  

  
  《礼记曾子问》

  曾子问曰:“君薨而世子生,如之何?”孔子曰:“卿大夫士从摄主,北面于西阶南,大祝裨冕,执束帛,升自西阶,尽等,不升堂,命毋哭,祝声三。告曰:‘某之子生,敢告。’升,奠币于殡东几上,哭降。众主人、卿、大夫、士、房中皆哭,不踊,尽一哀。反位,遂朝奠,小宰升,举币。三日,众主人、卿、大夫、士如初位,北面。大宰、大宗、大祝皆裨冕,少师奉子以衰,祝先,子从,宰宗人从,入门,哭者止,子升自西阶,殡前北面,祝立于殡东南隅。祝声三,曰:‘某之子某,从执事敢见。’子拜稽颡哭,祝、宰、宗人、众主人、卿、大夫、士哭踊,三者三,降东。反位,皆袒,子踊,房中亦踊,三者三。袭衰杖,奠出,大宰命祝史,以名遍告于五祀山川。”

  

  曾子问曰:“如已葬而世子生,则如之何?”孔子曰:“大宰、大宗从大祝而告于祢。三月,乃名于祢,以名遍告及社稷、宗庙、山川。”

  

  孔子曰:“诸侯适天子,必告于祖,奠于祢,冕而出视朝,命祝史告于社稷、宗庙、山川,乃命国家五官而后行。道而出,告者五日而遍,过是非礼也。凡告用牲币,反亦如之。诸侯相见,必告于祢,朝服而出视朝,命祝史告于五庙、所过山川,亦命国家五官,道而出。反,必亲告于祖祢。乃命祝史告至于前所告者,而后听朝而入。”

  

  曾子问曰:“并有丧,如之何?何先何后?”孔子曰:“葬,先轻而后重,其奠也,先重而后轻,礼也。自启及葬不奠,行葬不哀次,反葬奠,而后辞于殡,遂修葬事,其虞也,先重而后轻,礼也。”

  

  孔子曰:“宗子虽七十,无无主妇。非宗子,虽无主妇可也。”

  

  曾子问曰:“将冠子,冠者至,揖让而入,闻齐衰大功之丧,如之何?”孔子曰:“内丧则废,外丧则冠而不醴,彻馔而埽,即位而哭。如冠者未至,则废。”“如将冠子而未及期日,而有齐衰大功小功之丧,则因丧服而冠,除丧不改冠乎?”孔子曰:“天子赐诸侯大夫冕弁,服于大庙,归设奠,服赐服,于斯乎有冠醮。无冠醴,父没而冠,则已冠,埽地而祭于祢,已祭而见伯父叔父,而后飨冠者。”

  

  曾子问曰:“祭,如之何则不行旅酬之事矣?”孔子曰:“闻之小祥者:主人练祭而不旅,奠酬于宾,宾弗举,礼也。昔者鲁昭公练而举酬行旅,非礼也。孝公大祥,奠酬弗举,亦非礼也。”

  

  曾子问曰:“大功之丧,可以与于馈奠之事乎?”孔子曰:“岂大功耳,自斩衰以下,皆可礼也。”曾子曰:“不以轻服而重相为乎?”孔子曰:“非此之谓也。天子诸侯之丧斩衰者奠,大夫齐衰者奠士则朋友奠,不足则取于大功以下者,不足则反之。”曾子问曰:“小功可以与于祭乎?”孔子曰:“何必小功耳?自斩衰以下,与祭礼也。”曾子曰:“不以轻丧而重祭乎?”孔子曰:“天子诸侯之丧祭也,不斩衰者不与祭,大夫齐衰者与祭,士祭不足,则取于兄弟大功以下者。”

  

  曾子问曰:“相识有丧服,可以与于祭乎?”孔子曰:“缌不祭,又何助于人?”

  

  曾子问曰:“废丧服,可以与于馈奠之事乎?”孔子曰:“说衰与奠,非礼也。以摈相可也。”

  

  曾子问曰:“昏礼既纳币,有吉日,女之父母死,则如之何?”孔子曰:“婿使人吊。如婿之父母死,则女之家亦使人吊。父丧称父,母丧称母,父母不在,则称伯父世母。婿已葬,婿之伯父致命女氏曰:‘某之子有父母之丧,不得嗣为兄弟,使某致命。’女氏许诺而弗敢嫁,礼也。婿免丧,女之父母使人请,婿弗取而后嫁之,礼也。女之父母死,婿亦如之。”

  

  曾子问曰:“亲迎女在涂,而婿之父母死,如之何?”孔子曰:“女改服,布深衣,缟总,以趋丧。女在涂,而女之父母死,则女反。”“如婿亲迎,女未至,有齐衰大功之丧,则如之何?”孔子曰:“男不入,改服于外次,女入,改服于内次,然后即位而哭。”曾子问曰:“除丧则不复昏礼乎?”孔子曰:“祭,过时不祭,礼也。又何反于初?”

  

  孔子曰:“嫁女之家,三夜不息烛,思相离也。取妇之家,三日不举乐,思嗣亲也。三月而庙见,称来妇也。择日而祭于祢,成妇之义也。”

  

  曾子问曰:“女未庙见而死,则如之何?”孔子曰:“不迁于祖,不祔于皇姑,婿不杖,不菲,不次,归葬于女氏之党,示未成妇也。”

  

  曾子问曰:“取女有吉日,而女死,如之何?”孔子曰:“婿齐衰而吊,既葬而除之,夫死亦如之。”

  

  曾子问曰:“丧有二孤,庙有二主,礼与?”孔子曰:“天无二日,土无二王,尝禘郊社,尊无二上,未知其为礼也。昔者齐桓公亟举兵,作伪主以行,及反,藏诸祖庙,庙有二主,自桓公始也。丧之二孤,则昔者卫灵公适鲁,遭季桓子之丧,卫君请吊,哀公辞不得命,公为主,客入吊,康子立于门右,北面,公揖让,升自东阶,西乡,客升自西阶吊,公拜兴哭,康子拜稽颡于位,有司弗辩也。今之二孤,自季康子之过也。”

  

  曾子问曰:“古者师行,必以迁庙主行乎?”孔子曰:“天子巡守,以迁庙主行,载于齐车,言必有尊也。今也取七庙之主以行,则失之矣。当七庙五庙无虚主,虚主者,唯天子崩,诸侯薨,与去其国,与祫祭于祖,为无主耳。吾闻诸老聃曰:天子崩,国君薨,则祝取群庙之主而藏诸祖庙,礼也。卒哭成事,而后主各反其庙。君去其国,大宰取群庙之主以从,礼也。祫祭于祖,则祝迎四庙之主,主出庙入庙,必跸。老聃云。”

  

  曾子问曰:“古者师行无迁主,则何主?”孔子曰:“主命。”问曰:“何谓也?”孔子曰:“天子诸侯将出,必以币帛皮圭告于祖祢,遂奉以出,载于齐车以行。每舍奠焉,而后就舍。反必告,设奠卒,敛币玉,藏诸两阶之间,乃出。盖贵命也。”

  

  子游问曰:“丧慈母如母,礼与?”孔子曰:“非礼也。古者男子,外有傅,内有慈母,君命所使教子也,何服之有?昔者鲁昭公少丧其母,有慈母良,及其死也,公弗忍也,欲丧之,有司以闻曰:‘古之礼,慈母无服。今也君为之服,是逆古之礼而乱国法也。若终行之,则有司将书之,以遗后世,无乃不可乎?’公曰:‘古者天子练冠以燕居。’公弗忍也,遂练冠以丧慈母。丧慈母,自鲁昭公始也。”

  

  曾子问曰:“诸侯旅见天子,入门,不得终礼,废者几?”孔子曰:“四。”请问之,曰:“大庙火,日食,后之丧,雨沾服失容,则废。如诸侯皆在而日食,则从天子救日,各以其方色与其兵。大庙火,则从天子救火,不以方色与兵。”

  

  曾子问曰:“诸侯相见,揖让入门,不得终礼,废者几。”孔子曰:“六。”请问之,曰:“天子崩,大庙火,日食,后夫人之丧,雨沾服失容,则废。”

  

  曾子问曰:“天子尝禘郊社五祀之祭,簠簋既陈,天子崩,后之丧,如之何?”孔子曰:“废。”

  

  曾子问曰:“当祭而日食,大庙火,其祭也如之何?”孔子曰:“接祭而已矣。如牲至未杀,则废。”

  

  天子崩,未殡,五祀之祭不行,既殡而祭,其祭也,尸入,三饭不侑,酳不酢而已矣。自启至于反哭,五祀之祭不行,已葬而祭,祝毕献而已。

  

  曾子问曰:“诸侯之祭社稷,俎豆既陈,闻天子崩,后之丧,君薨,夫人之丧,如之何?”孔子曰:“废。自薨比至于殡,自启至于反哭,奉帅天子。”

  

  曾子问曰:“大夫之祭,鼎俎既陈,笾豆既设,不得成礼,废者几?”孔子曰:“九。”请问之,曰:“天子崩,后之丧,君薨,夫人之丧,君之大庙火,日食,三年之丧,齐衰,大功,皆废。外丧自齐衰以下,行也。其齐衰之祭也,尸入,三饭不侑,酳不酢而已矣。大功,酢而已矣。小功,缌,室中之事而已矣。士之所以异者,缌不祭,所祭,于死者无服,则祭。”

  

  曾子问曰:“三年之丧,吊乎?”孔子曰:“三年之丧,练不群立,不旅行。君子礼以饰情,三年之丧而吊哭,不亦虚乎?”

  

  曾子问曰:“大夫士有私丧,可以除之矣,而有君服焉,其除之也,如之何?”孔子曰:“有君丧,服于身,不敢私服,又何除焉?于是乎有过时而弗除也。君之丧服除,而后殷祭,礼也。”

  

  曾子问曰:“父母之丧,弗除可乎?”孔子曰:“先王制礼,过时弗举,礼也。非弗能勿除也,患其过于制也。故君子过时不祭,礼也。”

  

  曾子问曰:“君薨既殡,而臣有父母之丧,则如之何?”孔子曰:“归居于家,有殷事,则之君所,朝夕否。”曰:“君既启,而臣有父母之丧,则如之何?”孔子曰:“归哭而反送君。”曰:“君未殡,而臣有父母之丧,则如之何?”孔子曰:“归殡,反于君所,有殷事则归,朝夕否。大夫室老行事,士则子孙行事。大夫内子有殷事,亦之君所,朝夕否。”

  

  贱不诔贵,幼不诔长,礼也。唯天子称天以诔之。诸侯相诔,非礼也。

  

  曾子问曰:“君出疆,以三年之戒,以椑从,君薨其入,如之何?”孔子曰:“共殡服,则子麻弁绖,疏衰,菲,杖,入自阙,升自西阶。如小敛,则子免而从柩,入自门,升自阼阶。君大夫士一节也。”

  

  曾子问曰:“君之丧既引,闻父母之丧,如之何?”孔子曰:“遂既封而归,不俟子。”曾子问曰:“父母之丧既引,及涂,闻君薨,如之何?”孔子曰:“遂既封,改服而往。”

  

  曾子问曰:“宗子为士,庶子为大夫,其祭也如之何?”孔子曰:“以上牲祭于宗子之家,祝曰:孝子某,为介子某,荐其常事。若宗子有罪,居于他国,庶子为大夫,其祭也,祝曰:孝子某,使介子某,执其常事。摄主不厌祭,不旅不假,不绥祭,不配,布奠于宾,宾奠而不举,不归肉,其辞于宾曰:宗兄,宗弟,宗子,在他国,使某辞。”

  

  曾子问曰:“宗子去在他国,庶子无爵而居者,可以祭乎?”孔子曰:“祭哉!”“请问其祭如之何?”孔子曰:“望墓而为坛,以时祭。若宗子死,告于墓,而后祭于家。宗子死,称名不言孝,身没而已。子游之徒,有庶子祭者,以此,若义也。今之祭者,不首其义,故诬于祭也。”

  

  曾子问曰:“祭必有尸乎?若厌祭亦可乎?”孔子曰:“祭成丧者必有尸,尸必以孙,孙幼则使人抱之,无孙则取于同姓可也。祭殇必厌,盖弗成也。祭成丧而无尸,是殇之也。”孔子曰:“有阴厌,有阳厌。”曾子问曰:“殇不祔祭,何谓阴厌阳厌?”孔子曰:“宗子为殇而死,庶子弗为后也,其吉祭特牲,祭殇不举,无肵俎,无玄酒,不告利成,是谓阴厌。凡殇与无后者,祭于宗子之家,当室之白,尊于东房,是谓阳厌。”

  

  曾子问曰:“葬引至于堩,日有食之,则有变乎,且不乎?”孔子曰:“昔者吾从老聃助葬于巷党,及堩,日有食之,老聃曰:‘丘,止柩就道右,止哭以听变。’既明反,而后行,曰:‘礼也。’反葬而丘问之,曰:‘夫柩不可以反者也,日有食之,不知其已之迟数,则岂如行哉?’老聃曰:‘诸侯朝天子,见日而行,逮日而舍奠。大夫使,见日而行,逮日而舍。夫柩不蚤出,不莫宿,见星而行者,唯罪人与奔父母之丧者乎?日有食之,安知其不见星也?且君子行礼,不以人之亲痁患。’吾闻诸老聃云。”

  

  曾子问曰:“为君使而卒于舍,礼曰:‘公馆复,私馆不复。’凡所使之国,有司所授舍,则公馆己,何谓私馆不复也?”孔子曰:“善乎问之也!自卿大夫之家曰私馆,公馆与公所为曰公馆,公馆复,此之谓也。”

  

  曾子问曰:“下殇土周葬于园,遂舆机而往,涂迩故也。今墓远,则其葬也如之何?”孔子曰:“吾闻诸老聃曰:‘昔者史佚有子而死,下殇也,墓远,召公谓之曰:何以不棺敛于宫中?史佚曰:吾敢乎哉?召公言于周公,周公曰:岂不可?史佚行之。’下殇用棺衣棺.自史佚始也。”

  

  曾子问曰:“卿大夫将为尸于公,受宿矣,而有齐衰内丧,则如之何?”孔子曰:“出舍于公馆以待事,礼也。”孔子曰:“尸弁冕而出,卿大夫士皆下之,尸必式,必有前驱。”

  

  子夏问曰:“三年之丧卒哭,金革之事无辟也者,礼与?初有司与?”孔子曰:“夏后氏三年之丧,既殡而致事。殷人既葬而致事。记曰:‘君子不夺人之亲,亦不可夺亲也。’此之谓乎?”子夏曰:“金革之事无辟也者,非与?”孔子曰:“吾闻诸老聃曰:‘昔者鲁公伯禽,有为为之也。’今以三年之丧从其利者,吾弗知也。”

  成公(元年~十八年)

  

  !成公元年

  【经】元年春王正月,公即位。二月辛酉,葬我君宣公。无冰。三月,作丘甲。夏,臧孙许及晋侯盟于赤棘。秋,王师败绩于茅戎。冬十月。

  

  【传】元年春,晋侯使瑕嘉平戎于王,单襄公如晋拜成。刘康公徼戎,将遂伐之。叔服曰:“背盟而欺大国,此必败。背盟,不祥;欺大国,不义;神人弗助,将何以胜?”不听,遂伐茅戎。三月癸未,败绩于徐吾氏。

  为齐难故,作丘甲。

  闻齐将出楚师,夏,盟于赤棘。

  秋,王人来告败。

  冬,臧宣叔令修赋、缮完、具守备,曰:“齐、楚结好,我新与晋盟,晋、楚争盟,齐师必至。虽晋人伐齐,楚必救之,是齐、楚同我也。知难而有备,乃可以逞。”

  

  

  !成公二年

  【经】二年春,齐侯伐我北鄙。夏四月丙戌,卫孙良夫帅师及齐师战于新筑,卫师败绩。六月癸酉,季孙行父、臧孙许、叔孙侨如、公孙婴齐帅师会晋郤克、卫孙良夫、曹公子首及齐侯战于鞍,齐师败绩。秋七月,齐侯使国佐如师。己酉,及国佐盟于袁娄。八月壬卒。宋公鲍卒。庚寅,卫侯速卒。取汶阳田。冬,楚师、郑师侵卫。十有一月,公会楚公子婴齐于蜀。丙申,公及楚人、秦人、宋人、陈人、卫人、郑人、齐人、曹人、邾人、薛人、鄫人盟于蜀。

  

  【传】二年春,齐侯伐我北鄙,围龙。顷公之嬖人卢蒲就魁门焉,龙人囚之。

  齐侯曰:“勿杀!吾与而盟,无入而封。”弗听,杀而膊诸城上。齐侯亲鼓,士陵城,三日,取龙,遂南侵及巢丘。

  卫侯使孙良夫、石稷、宁相、向禽将侵齐,与齐师遇。石子欲还,孙子曰:“不可。以师伐人,遇其师而还,将谓君何?若知不能,则如无出。今既遇矣,不如战也。”

  夏,有。

  石成子曰:“师败矣。子不少须,众惧尽。子丧师徒,何以复命?”皆不对。

  又曰:“子,国卿也。陨子,辱矣。子以众退,我此乃止。”且告车来甚众。齐师乃止,次于鞫居。新筑人仲叔于奚救孙桓子,桓子是以免。

  既,卫人赏之以邑,辞。请曲县、繁缨以朝,许之。仲尼闻之曰:“惜也,不如多与之邑。唯器与名,不可以假人,君之所司也。名以出信,信以守器,器以藏礼,礼以行义,义以生利,利以平民,政之大节也。若以假人,与人政也。

  政亡,则国家从之,弗可止也已。”

  孙桓子还于新筑,不入,遂如晋乞师。臧宣叔亦如晋乞师。皆主郤献子。晋侯许之七百乘。郤子曰:“此城濮之赋也。有先君之明与先大夫之肃,故捷。克于先大夫,无能为役,请八百乘。”许之。郤克将中军,士燮佐上军,栾书将下军,韩厥为司马,以救鲁、卫。臧宣叔逆晋师,且道之。季文子帅师会之。及卫地,韩献子将斩人,郤献子驰,将救之,至则既斩之矣。郤子使速以徇,告其仆曰:“吾以分谤也。”

  师从齐师于莘。六月壬申,师至于靡笄之下。齐侯使请战,曰:“子以君师,辱于敝邑,不腆敝赋,诘朝请见。”对曰:“晋与鲁、卫,兄弟也。来告曰:‘大国朝夕释憾于敝邑之地。’寡君不忍,使群臣请于大国,无令舆师淹于君地。

  能进不能退,君无所辱命。”齐侯曰:“大夫之许,寡人之愿也;若其不许,亦将见也。”齐高固入晋师,桀石以投人,禽之而乘其车,系桑本焉,以徇齐垒,曰:“欲勇者贾余馀勇。”

  癸酉,师陈于鞍。邴夏御齐侯,逢丑父为右。晋解张御郤克,郑丘缓为右。

  齐侯曰:“余姑翦灭此而朝食。”不介马而驰之。郤克伤于矢,流血及屦,未绝鼓音,曰:“余病矣!”张侯曰:“自始合,而矢贯余手及肘,余折以御,左轮朱殷,岂敢言病。吾子忍之!”缓曰:“自始合,苟有险,余必下推车,子岂识之?然子病矣!”张侯曰:“师之耳目,在吾旗鼓,进退从之。此车一人殿之,可以集事,若之何其以病败君之大事也?擐甲执兵,固即死也。病未及死,吾子勉之!”左并辔,右援枹而鼓,马逸不能止,师从之。齐师败绩。逐之,三周华不注。

  韩厥梦子舆谓己曰:“且辟左右。”故中御而从齐侯。邴夏曰:“射其御者,君子也。”公曰:“谓之君子而射之,非礼也。”射其左,越于车下。射其右,毙于车中,綦毋张丧车,从韩厥,曰:“请寓乘。”从左右,皆肘之,使立于后。

  韩厥俯,定其右。逢丑父与公易位。将及华泉,骖絓于木而止。丑父寝于轏中,蛇出于其下,以肱击之,伤而匿之,故不能推车而及。韩厥执絷马前,再拜稽首,奉觞加璧以进,曰:“寡君使群臣为鲁、卫请,曰:‘无令舆师陷入君地。’下臣不幸,属当戎行,无所逃隐。且惧奔辟而忝两君,臣辱戎士,敢告不敏,摄官承乏。”丑父使公下,如华泉取饮。郑周父御佐车,宛伐为右,载齐侯以免。

  韩厥献丑父,郤献子将戮之。呼曰:“自今无有代其君任患者,有一于此,将为戮乎!”郤子曰:“人不难以死免其君。我戮之不祥,赦之以劝事君者。”乃免之。

  齐侯免,求丑父,三入三出。每出,齐师以帅退。入于狄卒,狄卒皆抽戈楯冒之。以入于卫师,卫师免之。遂自徐关入。齐侯见保者,曰:“勉之!齐师败矣。”辟女子,女子曰:“君免乎?”曰:“免矣。”曰:“锐司徒免乎?”曰:“免矣。”曰:“苟君与吾父免矣,可若何!”乃奔。齐侯以为有礼,既而问之,辟司徒之妻也。予之石窌。

  晋师从齐师,入自丘舆,击马陉。齐侯使宾媚人赂以纪甗、玉磬与地。不可,则听客之所为。宾媚人致赂,晋人不可,曰:“必以萧同叔子为质,而使齐之封内尽东其亩。”对曰:“萧同叔子非他,寡君之母也。若以匹敌,则亦晋君之母也。吾子布大命于诸侯,而曰:‘必质其母以为信。’其若王命何?且是以不孝令也。《诗》曰:‘孝子不匮,永锡尔类。’若以不孝令于诸侯,其无乃非德类也乎?先王疆理天下物土之宜,而布其利,故《诗》曰:‘我疆我理,南东其亩。’今吾子疆理诸侯,而曰‘尽东其亩’而已,唯吾子戎车是利,无顾土宜,其无乃非先王之命也乎?反先王则不义,何以为盟主?其晋实有阙。四王之王也,树德而济同欲焉。五伯之霸也,勤而抚之,以役王命。今吾子求合诸侯,以逞无疆之欲。《诗》曰‘布政优优,百禄是遒。’子实不优,而弃百禄,诸侯何害焉!不然,寡君之命使臣则有辞矣,曰:‘子以君师辱于敝邑,不腆敝赋,以犒从者。

  畏君之震,师徒桡败,吾子惠徼齐国之福,不泯其社稷,使继旧好,唯是先君之敝器、土地不敢爱。子又不许,请收合余烬,背城借一。敝邑之幸,亦云从也。

  况其不幸,敢不唯命是听。’”鲁、卫谏曰:“齐疾我矣!其死亡者,皆亲昵也。

  子若不许,仇我必甚。唯子则又何求?子得其国宝,我亦得地,而纾于难,其荣多矣!齐、晋亦唯天所授,岂必晋?”晋人许之,对曰:“群臣帅赋舆以为鲁、卫请,若苟有以藉口而复于寡君,君之惠也。敢不唯命是听。”

  禽郑自师逆公。

  秋七月,晋师及齐国佐盟于爰娄,使齐人归我汶阳之田。公会晋师于上鄍,赐三帅先路三命之服,司马、司空、舆帅、候正、亚旅,皆受一命之服。

  八月,宋文公卒。始厚葬,用蜃炭,益车马,始用殉。重器备,椁有四阿,棺有翰桧。

  君子谓:“华元、乐举,于是乎不臣。臣治烦去惑者也,是以伏死而争。今二子者,君生则纵其惑,死又益其侈,是弃君于恶也。何臣之为?”九月,卫穆公卒,晋二子自役吊焉,哭于大门之外。卫人逆之,妇人哭于门内,送亦如之。遂常以葬。

  楚之讨陈夏氏也,庄王欲纳夏姬,申公巫臣曰:“不可。君召诸侯,以讨罪也。今纳夏姬,贪其色也。贪色为淫,淫为大罚。《周书》曰:‘明德慎罚。’文王所以造周也。明德,务崇之之谓也;慎罚,务去之之谓也。若兴诸侯,以取大罚,非慎之也。君其图之!”王乃止。子反欲取之,巫臣曰:“是不祥人也!是夭子蛮,杀御叔,弑灵侯,戮夏南,出孔、仪,丧陈国,何不祥如是?人生实难,其有不获死乎?天下多美妇人,何必是?”子反乃止。王以予连尹襄老。襄老死于邲,不获其尸,其子黑要烝焉。巫臣使道焉,曰:“归!吾聘女。”又使自郑召之,曰:“尸可得也,必来逆之。”姬以告王,王问诸屈巫。对曰:“其信!知荦之父,成公之嬖也,而中行伯之季弟也,新佐中军,而善郑皇戌,甚爱此子。其必因郑而归王子与襄老之尸以求之。郑人惧于邲之役而欲求媚于晋,其必许之。”王遣夏姬归。将行,谓送者曰:“不得尸,吾不反矣。”巫臣聘诸郑,郑伯许之。及共王即位,将为阳桥之役,使屈巫聘于齐,且告师期。巫臣尽室以行。申叔跪从其父将适郢,遇之,曰:“异哉!夫子有三军之惧,而又有《桑中》之喜,宜将窃妻以逃者也。”及郑,使介反币,而以夏姬行。将奔齐,齐师新败,曰:“吾不处不胜之国。”遂奔晋,而因郤至,以臣于晋。晋人使为邢大夫。子反请以重币锢之,王曰:“止!其自为谋也,则过矣。其为吾先君谋也,则忠。忠,社稷之固也,所盖多矣。且彼若能利国家,虽重币,晋将可乎?若无益于晋,晋将弃之,何劳锢焉。”

  晋师归,范文子后入。武子曰:“无为吾望尔也乎?”对曰:“师有功,国人喜以逆之,先入,必属耳目焉,是代帅受名也,故不敢。”武子曰:“吾知免矣。”

  郤伯见,公曰:“子之力也夫!”对曰:“君之训也,二三子之力也,臣何力之有焉!”范叔见,劳之如郤伯,对曰:“庚所命也,克之制也,燮何力之有焉!”栾伯见,公亦如之,对曰:“燮之诏也,士用命也,书何力之有焉!”宣公使求好于楚。庄王卒,宣公薨,不克作好。公即位,受盟于晋,会晋伐齐。卫人不行使于楚,而亦受盟于晋,从于伐齐。故楚令尹子重为阳桥之役以求齐。将起师,子重曰:“君弱,群臣不如先大夫,师众而后可。《诗》曰:‘济济多士,文王以宁。’夫文王犹用众,况吾侪乎?且先君庄王属之曰:‘无德以及远方,莫如惠恤其民,而善用之。’”乃大户,已责,逮鳏,救乏,赦罪,悉师,王卒尽行。彭名御戎,蔡景公为左,许灵公为右。二君弱,皆强冠之。

  冬,楚师侵卫,遂侵我,师于蜀。使臧孙往,辞曰:“楚远而久,固将退矣。

  无功而受名,臣不敢。”楚侵及阳桥,孟孙请往,赂之以执斫、执针、织纴,皆百人。公衡为质,以请盟,楚人许平。

  十一月,公及楚公子婴齐、蔡侯、许男、秦右大夫说、宋华元、陈公孙宁、卫孙良夫、郑公子去疾及齐国之大夫盟于蜀。卿不书,匮盟也。于是乎畏晋而窃与楚盟,故曰匮盟。蔡侯、许男不书,乘楚车也,谓之失位。君子曰:“位其不可不慎也乎!蔡、许之君,一失其位,不得列于诸侯,况其下乎?《诗》曰:‘不解于位,民之攸塈。’其是之谓矣。”

  楚师及宋,公衡逃归。臧宣叔曰:“衡父不忍数年之不宴,以弃鲁国,国将若之何?谁居?后之人必有任是夫!国弃矣。”

  是行也,晋辟楚,畏其众也。君子曰:“众之不可以已也。大夫为政,犹以众克,况明君而善用其众乎?《大誓》所谓商兆民离,周十人同者众也。”

  晋侯使巩朔献齐捷于周,王弗见,使单襄公辞焉,曰:“蛮夷戎狄,不式王命,淫湎毁常,王命伐之,则有献捷,王亲受而劳之,所以惩不敬,劝有功也。

  兄弟甥舅,侵败王略,王命伐之,告事而已,不献其功,所以敬亲昵,禁淫慝也。

  今叔父克遂,有功于齐,而不使命卿镇抚王室,所使来抚余一人,而巩伯实来,未有职司于王室,又奸先王之礼,余虽欲于巩伯、其敢废旧典以忝叔父?夫齐,甥舅之国也,而大师之后也,宁不亦淫从其欲以怒叔父,抑岂不可谏诲?”士庄伯不能对。王使委于三吏,礼之如侯伯克敌使大夫告庆之礼,降于卿礼一等。王以巩伯宴,而私贿之。使相告之曰:“非礼也,勿籍。”

  

  

  !成公三年

  【经】三年春王正月,公会晋侯、宋公、卫侯、曹伯伐郑。辛亥,葬卫穆公。

  二月,公至自伐郑。甲子,新宫灾。三日哭。乙亥,葬宋文公。夏,公如晋。郑公子去疾帅师伐许。公至自晋。秋,叔孙侨如帅师围棘。大雩。晋郤克、卫孙良夫伐啬咎如。冬十有一月,晋侯使荀庚来聘。卫侯使孙良夫来聘。丙午,及荀庚盟。丁未,及孙良夫盟。郑伐许。

  

  【传】三年春,诸侯伐郑,次于伯牛,讨邲之役也,遂东侵郑。郑公子偃帅师御之,使东鄙覆诸鄤,败诸丘舆。皇戌如楚献捷。

  夏,公如晋,拜汶阳之田。

  许恃楚而不事郑,郑子良伐许。

  晋人归公子谷臣与连尹襄老之尸于楚,以求知罃。于是荀首佐中军矣,故楚人许之。王送知罃,曰:“子其怨我乎?”对曰:“二国治戎,臣不才,不胜其任,以为俘馘。执事不以衅鼓,使归即戮,君之惠也。臣实不才,又谁敢怨?”王曰:“然则德我乎?”对曰:“二国图其社稷,而求纾其民,各惩其忿以相宥也,两释累囚以成其好。二国有好,臣不与及,其谁敢德?”王曰:“子归,何以报我?”对曰:“臣不任受怨,君亦不任受德,无怨无德,不知所报。”王曰:“虽然,必告不谷。”对曰:“以君之灵,累臣得归骨于晋,寡君之以为戮,死且不朽。若从君之惠而免之,以赐君之外臣首;首其请于寡君而以戮于宗,亦死且不朽。若不获命,而使嗣宗职,次及于事,而帅偏师以修封疆,虽遇执事,其弗敢违。其竭力致死,无有二心,以尽臣礼,所以报也。”王曰:“晋未可与争。”

  重为之礼而归之。

  秋,叔孙侨如围棘,取汶阳之田。棘不服,故围之。

  晋郤克、卫孙良夫伐啬咎如,讨赤狄之余焉。啬咎如溃,上失民也。

  冬十一月,晋侯使荀庚来聘,且寻盟。卫侯使孙良夫来聘,且寻盟。公问诸臧宣叔曰:“中行伯之于晋也,其位在三。孙子之于卫也,位为上卿,将谁先?”对曰:“次国之上卿当大国之中,中当其下,下当其上大夫。小国之上卿当大国之下卿,中当其上大夫,下当其下大夫。上下如是,古之制也。卫在晋,不得为次国。晋为盟主,其将先之。”丙午,盟晋,丁未,盟卫,礼也。

  十二月甲戌,晋作六军。韩厥、赵括、巩朔、韩穿、荀骓、赵旃皆为卿,赏鞍之功也。

  齐侯朝于晋,将授玉。郤克趋进曰:“此行也,君为妇人之笑辱也,寡君未之敢任。”晋侯享齐侯。齐侯视韩厥,韩厥曰:“君知厥也乎?”齐侯曰:“服改矣。”韩厥登,举爵曰:“臣之不敢爱死,为两君之在此堂也。”

  荀罃之在楚也,郑贾人有将置诸褚中以出。既谋之,未行,而楚人归之。

  贾人如晋,荀罃善视之,如实出己,贾人曰:“吾无其功,敢有其实乎?吾小人,不可以厚诬君子。”遂适齐。

  

  

  !成公四年

  【经】四年春,宋公使华元来聘。三月壬申,郑伯坚卒。杞伯来朝。夏四月甲寅,臧孙许卒。公如晋。葬郑襄公。秋,公至自晋。冬,城郓。郑伯伐许。

  

  【传】四年春,宋华元来聘,通嗣君也。

  杞伯来朝,归叔姬故也。

  夏,公如晋,晋侯见公,不敬。季文子曰:“晋侯必不免。《诗》曰:‘敬之敬之!天惟显思,命不易哉!’夫晋侯之命在诸侯矣,可不敬乎?”秋,公至自晋,欲求成于楚而叛晋,季文子曰:“不可。晋虽无道,未可叛也。国大臣睦,而迩于我,诸侯听焉,未可以贰。史佚之《志》有之,曰:‘非我族类,其心必异。’楚虽大,非吾族也,其肯字我乎?”公乃止。

  冬十一月,郑公孙申帅师疆许田,许人败诸展陂。郑伯伐许,取任、泠敦之田。

  晋栾书将中军,荀首佐之,士燮佐上军,以救许伐郑,取氾、祭。楚子反救郑,郑伯与许男讼焉。皇戌摄郑伯之辞,子反不能决也,曰:“君若辱在寡君,寡君与其二三臣共听两君之所欲,成其可知也。不然,侧不足以知二国之成。”

  晋赵婴通于赵庄姬。

  

  

  !成公五年

  【经】五年春王正月,杞叔姬来归。仲孙蔑如宋。夏,叔孙侨如会晋荀首于谷。梁山崩。秋,大水。冬十有一月己酉,天王崩。十有二月己丑,公会晋侯、齐侯、宋公、卫侯、郑伯、曹伯、邾子、杞伯同盟于虫牢。

  

  【传】五年春,原、屏放诸齐。婴曰:“我在,故栾氏不作。我亡,吾二昆其忧哉!且人各有能有不能,舍我何害?”弗听。婴梦天使谓己:“祭余,余福女。”使问诸士贞伯,贞伯曰:“不识也。”既而告其人曰:“神福仁而祸淫,淫而无罚,福也。祭,其得亡乎?”祭之,之明日而亡。孟献子如宋,报华元也。

  孟献子如宋,报华元也。

  夏,晋荀首如齐逆女,故宣伯餫诸谷。

  梁山崩,晋侯以传召伯宗。伯宗辟重,曰:“辟传!”重人曰:“待我,不如捷之速也。”问其所,曰:“绛人也。”问绛事焉,曰:“梁山崩,将召伯宗谋之。”问:“将若之何?”曰:“山有朽壤而崩,可若何?国主山川。故山崩川竭,君为之不举,降服,乘缦,彻乐,出次,祝币,史辞以礼焉。其如此而已,虽伯宗若之何?”伯宗请见之,不可。遂以告而从之。

  许灵公愬郑伯于楚。六月,郑悼公如楚,讼,不胜。楚人执皇戌及子国。故郑伯归,使公子偃请成于晋。秋八月,郑伯及晋赵同盟于垂棘。

  宋公子围龟为质于楚而还,华元享之。请鼓噪以出,鼓噪以复入,曰:“习功华氏。”宋公杀之。

  冬,同盟于虫牢,郑服也。诸侯谋复会,宋公使向为人辞以子灵之难。

  十一月己酉,定王崩。

  

  

  !成公六年

  【经】六年春王正月,公至自会。二月辛巳,立武宫。取鄟。卫孙良夫帅师侵宋。夏六月,邾子来朝。公孙婴齐如晋。壬申,郑伯费卒。秋,仲孙蔑、叔孙侨如帅师侵宋。楚公子婴齐帅师伐郑。冬,季孙行父如晋。晋栾书帅师救郑。

  

  【传】六年春,郑伯如晋拜成,子游相,授玉于东楹之东。士贞伯曰:“郑伯其死乎?自弃也已!视流而行速,不安其位,宜不能久。”

  二月,季文子以鞍之功立武宫,非礼也。听于人以救其难,不可以立武。立武由己,非由人也。

  取鄟,言易也。

  三月,晋伯宗、夏阳说,卫孙良夫、宁相,郑人,伊、洛之戎,陆浑蛮氏侵宋,以其辞会也。师于针,卫人不保。说欲袭卫,曰:“虽不可入,多俘而归,有罪不及死。”伯宗曰:“不可。卫唯信晋,故师在其郊而不设备。若袭之,是弃信也。虽多卫俘,而晋无信,何以求诸侯?”乃止,师还,卫人登陴。

  晋人谋去故绛。诸大夫皆曰:“必居郇瑕氏之地,沃饶而近盬,国利君乐,不可失也。”韩献子将新中军,且为仆大夫。公揖而入。献子从。公立于寝庭,谓献子曰:“何如?”对曰:“不可。郇瑕氏土薄水浅,其恶易覯。易覯则民愁,民愁则垫隘,于是乎有沉溺重膇之疾。不如新田,土厚水深,居之不疾,有汾、浍以流其恶,且民从教,十世之利也。夫山、泽、林、盬,国之宝也。国饶,则民骄佚。近宝,公室乃贫,不可谓乐。”公说,从之。夏四月丁丑,晋迁于新田。

  六月,郑悼公卒。

  子叔声伯如晋。命伐宋。

  秋,孟献子、叔孙宣伯侵宋,晋命也。

  楚子重伐郑,郑从晋故也。

  冬,季文子如晋,贺迁也。

  晋栾书救郑,与楚师遇于绕角。楚师还,晋师遂侵蔡。楚公子申、公子成以申、息之师救蔡,御诸桑隧。赵同、赵括欲战,请于武子,武子将许之。知庄子、范文子、韩献子谏曰:“不可。吾来救郑,楚师去我,吾遂至于此,是迁戮也。

  戮而不已,又怒楚师,战必不克。虽克,不令。成师以出,而败楚之二县,何荣之有焉?若不能败,为辱已甚,不如还也。”乃遂还。

  于是,军帅之欲战者众,或谓栾武子曰:“圣人与众同欲,是以济事。子盍从众?子为大政,将酌于民者也。子之佐十一人,其不欲战者,三人而已。欲战者可谓众矣。《商书》曰:‘三人占,从二人。’众故也。”武子曰:“善钧,从众。夫善,众之主也。三卿为主,可谓众矣。从之,不亦可乎?”

  

  !成公七年

  【经】七年春王正月,鼷鼠食郊牛角,改卜牛。鼷鼠又食其角,乃免牛。吴伐郯。夏五月,曹伯来朝。不郊,犹三望。秋,楚公子婴齐帅师伐郑。公会晋侯、齐侯、宋公、卫侯、曹伯、莒子、邾子、杞伯救郑。八月戊辰,同盟于马陵。公至自会。吴入州来。冬,大雩。卫孙林父出奔晋。

  

  【传】七年春,吴伐郯,郯成。季文子曰:“中国不振旅,蛮夷入伐,而莫之或恤,无吊者也夫!《诗》曰:‘不吊昊天,乱靡有定。’其此之谓乎!有上不吊,其谁不受乱?吾亡无日矣!”君子曰:“如惧如是,斯不亡矣。”

  郑子良相成公以如晋,见,且拜师。

  夏,曹宣公来朝。

  秋,楚子重伐郑,师于汜。诸侯救郑。郑共仲、侯羽军楚师,囚郧公钟仪,献诸晋。

  八月,同盟于马陵,寻虫牢之盟,且莒服故也。

  晋人以钟仪归,囚诸军府。

  楚围宋之役,师还,子重请取于申、吕以为赏田,王许之。申公巫臣曰:“不可。此申、吕所以邑也,是以为赋,以御北方。若取之,是无申、吕也。晋、郑必至于汉。”王乃止。子重是以怨巫臣。子反欲取夏姬,巫臣止之,遂取以行,子反亦怨之。及共王即位,子重、子反杀巫臣之族子阎、子荡及清尹弗忌及襄老之子黑要,而分其室。子重取子阎之室,使沈尹与王子罢分子荡之室,子反取黑要与清尹之室。巫臣自晋遗二子书,曰:“尔以谗慝贪婪事君,而多杀不辜。余必使尔罢于奔命以死。”

  巫臣请使于吴,晋侯许之。吴子寿梦说之。乃通吴于晋。以两之一卒适吴,舍偏两之一焉。与其射御,教吴乘车,教之战陈,教之叛楚。置其子狐庸焉,使为行人于吴。吴始伐楚,伐巢、伐徐。子重奔命。马陵之会,吴入州来。子重自郑奔命。子重、子反于是乎一岁七奔命。蛮夷属于楚者,吴尽取之,是以始大,通吴于上国。

  卫定公恶孙林父。冬,孙林父出奔晋。卫侯如晋,晋反戚焉。

  

  

  !成公八年

  【经】八年春,晋侯使韩穿来言汶阳之田,归之于齐。晋栾书帅师侵蔡。公孙婴齐如莒。宋公使华元来聘。夏,宋公使公孙寿来纳币。晋杀其大夫赵同、赵括。秋七月,天子使召伯来赐公命。冬十月癸卯,杞叔姬卒。晋侯使士燮来聘。

  叔孙侨如会晋士燮、齐人、邾人代郯。卫人来媵。

  

  【传】八年春,晋侯使韩穿来言汶阳之田,归之于齐。季文子饯之,私焉,曰:“大国制义以为盟主,是以诸侯怀德畏讨,无有贰心。谓汶阳之田,敝邑之旧也,而用师于齐,使归诸敝邑。今有二命曰:‘归诸齐。’信以行义,义以成命,小国所望而怀也。信不可知,义无所立,四方诸侯,其谁不解体?《诗》曰:‘女也不爽,士贰其行。士也罔极,二三其德。’七年之中,一与一夺,二三孰甚焉!士之二三,犹丧妃耦,而况霸主?霸主将德是以,而二三之,其何以长有诸侯乎?《诗》曰:‘犹之未远,是用大简。’行父惧晋之不远犹而失诸侯也,是以敢私言之。”

  晋栾书侵蔡,遂侵楚,获申骊。楚师之还也,晋侵沈,获沈子揖初,从知、范、韩也。君子曰:“从善如流,宜哉!《诗》曰:‘恺悌君子,遐不作人。’求善也夫!作人,斯有功绩矣。”是行也,郑伯将会晋师,门于许东门,大获焉。

  声伯如莒,逆也。

  宋华元来聘,聘共姬也。

  夏,宋公使公孙寿来纳币,礼也。

  晋赵庄姬为赵婴之亡故,谮之于晋侯,曰:“原、屏将为乱。”栾、郤为征。

  六月,晋讨赵同、赵括。武从姬氏畜于公宫。以其田与祁奚。韩厥言于晋侯曰:“成季之勋,宣孟之忠,而无后,为善者其惧矣。三代之令王,皆数百年保天之禄。夫岂无辟王,赖前哲以免也。《周书》曰:‘不敢侮鳏寡。’所以明德也。”

  乃立武,而反其田焉。

  秋,召桓公来赐公命。

  晋侯使申公巫臣如吴,假道于莒。与渠丘公立于池上,曰:“城已恶!”莒子曰:“辟陋在夷,其孰以我为虞?”对曰:“夫狡焉思启封疆以利社稷者,何国蔑有?唯然,故多大国矣,唯或思或纵也。勇夫重闭,况国乎?”冬,杞叔姬卒。来归自杞,故书。

  晋士燮来聘,言伐郯也,以其事吴故。公赂之,请缓师,文子不可,曰:“君命无贰,失信不立。礼无加货,事无二成。君后诸侯,是寡君不得事君也。

  燮将复之。”季孙惧,使宣伯帅师会伐郯。

  卫人来媵共姬,礼也。凡诸侯嫁女,同姓媵之,异姓则否。

  

  

  !成公九年

  【经】九年春王正月,杞伯来逆叔姬之丧以归。公会晋侯、齐侯、宋公、卫侯、郑伯、曹伯、莒子、杞伯,同盟于蒲。公至自会。二月伯姬归于宋。夏,季孙行父如宋致女。晋人来媵。秋七月丙子,齐侯无野卒。晋人执郑伯。晋栾书帅师伐郑。冬十有一月,葬齐顷公。楚公子婴齐帅师伐莒。庚申,莒溃。楚人入郓。

  秦人、白狄伐晋。郑人围许。城中城。

  

  【传】九年春,杞桓公来逆叔姬之丧,请之也。杞叔姬卒,为杞故也。逆叔姬,为我也。

  为归汶阳之田故,诸侯贰于晋。晋人惧,会于蒲,以寻马陵之盟。季文子谓范文子曰:“德则不竞,寻盟何为?”范文子曰:“勤以抚之,宽以待之,坚强以御之,明神以要之,柔服而伐贰,德之次也。”是行也,将始会吴,吴人不至。

  二月,伯姬归于宋。

  楚人以重赂求郑,郑伯会楚公子成于邓。

  夏,季文子如宋致女,复命,公享之。赋《韩奕》之五章,穆姜出于房,再拜,曰:“大夫勤辱,不忘先君以及嗣君,施及未亡人。先君犹有望也!敢拜大夫之重勤。”又赋《绿衣》之卒章而入。

  晋人来媵,礼也。

  秋,郑伯如晋。晋人讨其贰于楚也,执诸铜鞮。

  栾书伐郑,郑人使伯蠲行成,晋人杀之,非礼也。兵交,使在其间可也。楚子重侵陈以救郑。

  晋侯观于军府,见钟仪,问之曰:“南冠而絷者,谁也?”有司对曰:“郑人所献楚囚也。”使税之,召而吊之。再拜稽首。问其族,对曰:“泠人也。”

  公曰:“能乐乎?”对曰:“先父之职官也,敢有二事?”使与之琴,操南音。

  公曰:“君王何如?”对曰:“非小人之所得知也。”固问之,对曰:“其为大子也,师保奉之,以朝于婴齐而夕于侧也。不知其他。”公语范文子,文子曰:“楚囚,君子也。言称先职,不背本也。乐操土风,不忘旧也。称大子,抑无私也。名其二卿,尊君也。不背本,仁也。不忘旧,信也。无私,忠也。尊君。敏也。仁以接事,信以守之,忠以成之,敏以行之。事虽大,必济。君盍归之,使合晋、楚之成。”公从之,重为之礼,使归求成。

  冬十一月,楚子重自陈伐莒,围渠丘。渠丘城恶,众溃,奔莒。戊申,楚入渠丘。莒人囚楚公子平,楚人曰:“勿杀!吾归而俘。”莒人杀之。楚师围莒。

  莒城亦恶,庚申,莒溃。楚遂入郓,莒无备故也。

  君子曰:“恃陋而不备,罪之大者也;备豫不虞,善之大者也。莒恃其陋,而不修城郭,浃辰之间,而楚克其三都,无备也夫!《诗》曰:‘虽有丝、麻,无弃菅、蒯;虽有姬、姜,无弃蕉萃。凡百君子,莫不代匮。’言备之不可以已也。”

  秦人、白狄伐晋,诸侯贰故也。

  郑人围许,示晋不急君也。是则公孙申谋之,曰:“我出师以围许,为将改立君者,而纾晋使,晋必归君。”

  城中城,书,时也。

  十二月,楚子使公子辰如晋,报钟仪之使,请修好结成。

  

  

  !成公十年

  【经】十年春,卫侯之弟黑背帅师侵郑。夏四月,五卜郊,不从,乃不郊。

  五月,公会晋侯、齐侯、宋公、卫侯、曹伯伐郑。齐人来媵。丙午,晋侯獳卒。

  秋七月,公如晋。冬十月。

  

  【传】十年春,晋侯使籴伐如楚,报大宰子商之使也。

  卫子叔黑背侵郑,晋命也。

  郑公子班闻叔申之谋。三月,子如立公子繻。夏四月,郑人杀繻,立髡顽。

  子如奔许。栾武子曰:“郑人立君,我执一人焉,何益?不如伐郑而归其君,以求成焉。”晋侯有疾。五月,晋立大子州蒲以为君,而会诸侯伐郑。郑子罕赂以襄钟,子然盟于修泽,子驷为质。辛巳,郑伯归。

  晋侯梦大厉,被发及地,搏膺而踊,曰:“杀余孙,不义。余得请于帝矣!”坏大门及寝门而入。公惧,入于室。又坏户。公觉,召桑田巫。巫言如梦。公曰:“何如?曰:“不食新矣。”公疾病,求医于秦。秦伯使医缓为之。未至,公梦疾为二竖子,曰:“彼,良医也。惧伤我,焉逃之?”其一曰:“居肓之上,膏之下,若我何?”医至,曰:“疾不可为也。在肓之上,膏之下,攻之不可,达之不及,药不至焉,不可为也。”公曰:“良医也。”厚为之礼而归之。六月丙午,晋侯欲麦,使甸人献麦,馈人为之。召桑田巫,示而杀之。将食,张,如厕,陷而卒。小臣有晨梦负公以登天,及日中,负晋侯出诸厕,遂以为殉。

  郑伯讨立君者,戊申,杀叔申、叔禽。君子曰:“忠为令德,非其人犹不可,况不令乎?”秋,公如晋。晋人止公,使送葬。于是籴伐未反。

  冬,葬晋景公。公送葬,诸侯莫在。鲁人辱之,故不书,讳之也。

  

  

  !成公十一年

  【经】十有一年春王三月,公至自晋。晋侯使郤犨来聘,己丑,及郤犨盟。

  夏,季孙行父如晋。秋,叔孙侨如如齐。冬十月。

  

  【传】十一年春,王三月,公至自晋。晋人以公为贰于楚,故止公。公请受盟,而后使归。

  郤犨来聘,且莅盟。

  声伯之母不聘,穆姜曰:“吾不以妾为姒。”生声伯而出之,嫁于齐管于奚。

  生二子而寡,以归声伯。声伯以其外弟为大夫,而嫁其外妹于施孝叔。郤犨来聘,求妇于声伯。声伯夺施氏妇以与之。妇人曰:“鸟兽犹不失俪,子将若何?”曰:“吾不能死亡。”妇人遂行,生二子于郤氏。郤氏亡,晋人归之施氏,施氏逆诸河,沉其二子。妇人怒曰:“己不能庇其伉俪而亡之,又不能字人之孤而杀之,将何以终?”遂誓施氏。

  夏,季文子如晋报聘,且莅盟也。

  周公楚恶惠、襄之逼也,且与伯与争政,不胜,怒而出。及阳樊,王使刘子复之,盟于鄄而入。三日,复出奔晋。

  秋,宣伯聘于齐,以修前好。

  晋郤至与周争鄇田,王命刘康公、单襄公讼诸晋。郤至曰:“温,吾故也,故不敢失。”刘子、单子曰:“昔周克商,使诸侯抚封,苏忿生以温为司寇,与檀伯达封于河。苏氏即狄,又不能于狄而奔卫。襄王劳文公而赐之温,狐氏、阳氏先处之,而后及子。若治其故,则王官之邑也,子安得之?”晋侯使郤至勿敢争。

  宋华元善于令尹子重,又善于栾武子。闻楚人既许晋籴伐成,而使归复命矣。

  冬,华元如楚,遂如晋,合晋、楚之成。

  秦、晋为成,将会于令狐。晋侯先至焉,秦伯不肯涉河,次于王城,使史颗盟晋侯于河东。晋郤犨盟秦伯于河西。范文子曰:“是盟也何益?齐盟,所以质信也。会所,信之始也。始之不从,其何质乎?”秦伯归而背晋成。

  

  

  !成公十二年

  【经】十有二年春,周公出奔晋。夏,公会晋侯、卫侯于琐泽。秋,晋人败狄于交刚。冬十月。

  

  【传】十二年春,王使以周公之难来告。书曰:“周公出奔晋。”凡自周无出,周公自出故也。

  宋华元克合晋、楚之成。夏五月,晋士燮会楚公子罢、许偃。癸亥,盟于宋西门之外,曰:“凡晋、楚无相加戎,好恶同之,同恤菑危,备救凶患。若有害楚,则晋伐之。在晋,楚亦如之。交贽往来,道路无壅,谋其不协,而讨不庭。

  有渝此盟,明神殛之,俾队其师,无克胙国。”郑伯如晋听成,会于琐泽,成故也。

  狄人间宋之盟以侵晋,而不设备。秋,晋人败狄于交刚。

  晋郤至如楚聘,且莅盟。楚子享之,子反相,为地室而县焉。郤至将登,金奏作于下,惊而走出。子反曰:“日云莫矣,寡君须矣,吾子其入也!”宾曰:“君不忘先君之好,施及下臣,贶之以大礼,重之以备乐。如天之福,两君相见,何以代此。下臣不敢。”子反曰:“如天之福,两君相见,无亦唯是一矢以相加遗,焉用乐?寡君须矣,吾子其入也!”宾曰:“若让之以一矢,祸之大者,其何福之为?世之治也,诸侯闹于天子之事,则相朝也,于是乎有享宴之礼。享以训共俭,宴以示慈惠。共俭以行礼,而慈惠以布政。政以礼成,民是以息。百官承事,朝而不夕,此公侯之所以扞城其民也。故《诗》曰:‘赳赳武夫,公侯干城。’及其乱也,诸侯贪冒,侵欲不忌,争寻常以尽其民,略其武夫,以为己腹心股肱爪牙。故《诗》曰:‘赳赳武夫,公侯腹心。’天下有道,则公侯能为民干城,而制其腹心。乱则反之。今吾子之言,乱之道也,不可以为法。然吾子,主也,至敢不从?”遂入,卒事。归,以语范文子。文子曰:“无礼必食言,吾死无日矣夫!”冬,楚公子罢如晋聘,且莅盟。十二月,晋侯及楚公子罢盟于赤棘。

  

  

  !成公十三年

  【经】十有三年春,晋侯使郤锜来乞师。三月,公如京师。夏五月,公自京师,遂会晋侯、齐侯、宋公、卫侯、郑伯、曹伯、邾人、滕人伐秦。曹伯卢卒于师。秋七月,公至自伐秦。冬,葬曹宣公。

  

  【传】十三年春,晋侯使郤锜来乞师,将事不敬。孟献子曰:“郤氏其亡乎!礼,身之干也。敬,身之基也。郤子无基。且先君之嗣卿也,受命以求师,将社稷是卫,而惰,弃君命也。不亡何为?”三月,公如京师。宣伯欲赐,请先使,王以行人之礼礼焉。孟献子从。王以为介,而重贿之。

  公及诸侯朝王,遂从刘康公、成肃公会晋侯伐秦。成子受脤于社,不敬。刘子曰:“吾闻之,民受天地之中以生,所谓命也。是以有动作礼义威仪之则,以定命也。能者养以之福,不能者败以取祸。是故君子勤礼,小人尽力,勤礼莫如致敬,尽力莫如敦笃。敬在养神,笃在守业。国之大事,在祀与戎,祀有执膰,戎有受脤,神之大节也。今成子惰,弃其命矣,其不反乎?”夏四月戊午,晋侯使吕相绝秦,曰:“昔逮我献公,及穆公相好,戮力同心,申之以盟誓,重之以昏姻。天祸晋国,文公如齐,惠公如秦。无禄,献公即世,穆公不忘旧德,俾我惠公用能奉祀于晋。又不能成大勋,而为韩之师。亦悔于厥心,用集我文公,是穆之成也。文公躬擐甲胄,跋履山川,逾越险阻,征东之诸侯,虞、夏、商、周之胤,而朝诸秦,则亦既报旧德矣。郑人怒君之疆埸,我文公帅诸侯及秦围郑。秦大夫不询于我寡君,擅及郑盟。诸侯疾之,将致命于秦。

  文公恐惧,绥静诸侯,秦师克还无害,则是我有大造于西也。无禄,文公即世,穆为不吊,蔑死我君,寡我襄公,迭我淆地,奸绝我好,伐我保城,殄灭我费滑,散离我兄弟,挠乱我同盟,倾覆我国家。我襄公未忘君之旧勋,而惧社稷之陨,是以有殽之师。犹愿赦罪于穆公,穆公弗听,而即楚谋我。天诱其衷,成王殒命,穆公是以不克逞志于我。穆、襄即世,康、灵即位。康公,我之自出,又欲阙翦我公室,倾覆我社稷,帅我蝥贼,以来荡摇我边疆。我是以有令狐之役。康犹不悛,入我河曲,伐我涑川,俘我王官,翦我羁马,我是以有河曲之战。东道之不通,则是康公绝我好也。

  及君之嗣也,我君景公引领西望曰:‘庶抚我乎!’君亦不惠称盟,利吾有狄难,入我河县,焚我箕、郜,芟夷我农功,虔刘我边陲。我是以有辅氏之聚。

  “君亦悔祸之延,而欲徼福于先君献、穆,使伯车来,命我景公曰:‘吾与女同好弃恶,复修旧德,以追念前勋,’言誓未就,景公即世,我寡君是以有令狐之会。君又不祥,背弃盟誓。白狄及君同州,君之仇仇,而我之昏姻也。君来赐命曰:‘吾与女伐狄。’寡君不敢顾昏姻,畏君之威,而受命于吏。君有二心于狄,曰:‘晋将伐女。’狄应且憎,是用告我。楚人恶君之二三其德也,亦来告我曰:‘秦背令狐之盟,而来求盟于我:“昭告昊天上帝、秦三公、楚三王曰:‘余虽与晋出入,余唯利是视。’不谷恶其无成德,是用宣之,以惩不壹。”诸侯备闻此言,斯是用痛心疾首,昵就寡人。寡人帅以听命,唯好是求。君若惠顾诸侯,矜哀寡人,而赐之盟,则寡人之愿也。其承宁诸侯以退,岂敢徼乱。君若不施大惠,寡人不佞,其不能以诸侯退矣。敢尽布之执事,俾执事实图利之!”秦桓公既与晋厉公为令狐之盟,而又召狄与楚,欲道以伐晋,诸侯是以睦于晋。晋栾书将中军,荀庚佐之。士燮将上军,郤锜佐之。韩厥将下军,荀罃佐之。

  赵旃将新军,郤至佐之。郤毅御戎,栾鍼为右。孟献子曰:“晋帅乘和,师必有大功。”五月丁亥,晋师以诸侯之师及秦师战于麻隧。秦师败绩,获秦成差及不更女父。曹宣公卒于师。师遂济泾,及侯丽而还。迓晋侯于新楚。

  成肃公卒于瑕。

  六月丁卯夜,郑公子班自訾求入于大宫,不能,杀子印、子羽。反军于市,己巳,予驷帅国人盟于大宫,遂从而尽焚之,杀子如、子駹、孙叔、孙知。

  曹人使公子负刍守,使公子欣时逆曹伯之丧。秋,负刍杀其大子而自立也。

  诸侯乃请讨之,晋人以其役之劳,请俟他年。冬,葬曹宣公。既葬,子臧将亡,国人皆将从之。成公乃惧,告罪,且请焉,乃反,而致其邑。

  

  

  !成公十四年

  【经】十有四年春王正月,莒子朱卒。夏,卫孙林父自晋归于卫。秋,叔孙侨如如齐逆女。郑公子喜帅师伐许。九月,侨如以夫人妇姜氏至自齐。冬十月庚寅,卫侯臧卒。秦伯卒。

  

  【传】十四年春,卫侯如晋,晋侯强见孙林父焉,定公不可。夏,卫侯既归,晋侯使郤犨送孙林父而见之。卫侯欲辞,定姜曰:“不可。是先君宗卿之嗣也,大国又以为请,不许,将亡。虽恶之,不犹愈于亡乎?君其忍之!安民而宥宗卿,不亦可乎?”卫侯见而复之。

  卫侯飨苦成叔,宁惠子相。苦成叔傲。宁子曰:“苦成家其亡乎!古之为享食也,以观威仪、省祸福也。故《诗》曰:‘兕觥其觩,旨酒思柔,彼交匪傲,万福来求。’今夫子傲,取祸之道也。”

  秋,宣伯如齐逆女。称族,尊君命也。

  八月,郑子罕伐许,败焉。戊戌,郑伯复伐许。庚子,入其郛。许人平以叔申之封。

  九月,侨如以夫人妇姜氏至自齐。舍族,尊夫人也。故君子曰:“《春秋》之称,微而显,志而晦,婉而成章,尽而不污,惩恶而劝善。非圣人谁能修之?”卫侯有疾,使孔成子、宁惠子立敬姒之子衎以为大子。冬十月,卫定公卒。

  夫人姜氏既哭而息,见大子之不哀也,不内酌饮。叹曰:“是夫也,将不唯卫国之败,其必始于未亡人!乌呼!天祸卫国也夫!吾不获鱄也使主社稷。”大夫闻之,无不耸惧。孙文子自是不敢舍其重器于卫,尽置诸戚,而甚善晋大夫。

  

  

  !成公十五年

  【经】十有五年春王二月,葬卫定公。三月乙巳,仲婴齐卒。癸丑,公会晋侯、卫侯、郑伯、曹伯、宋世子成、齐国佐,邾人同盟于戚。晋侯执曹伯归于京师。公至自会。夏六月,宋公固卒。楚子伐郑。秋八月庚辰,葬宋共公。宋华元出奔晋。宋华元自晋归于宋。宋杀其大夫山。宋鱼石出奔楚。冬十有一月,叔孙侨如会晋士燮、齐高无咎、宋华元、卫孙林父、郑公子、邾人会吴于钟离。

  许迁于叶。

  

  【传】十五年春,会于戚,讨曹成公也。执而归诸京师。书曰:“晋侯执曹伯。”不及其民也。凡君不道于其民,诸侯讨而执之,则曰某人执某侯。不然,则否。

  诸侯将见子臧于王而立之,子臧辞曰:“《前志》有之,曰:‘圣达节,次守节,下失节。’为君,非吾节也。虽不能圣,敢失守乎?”遂逃,奔宋。

  夏六月,宋共公卒。

  楚将北师。子囊曰:“新与晋盟而背之,无乃不可乎?”子反曰:“敌利则进,何盟之有?”申叔时老矣,在申,闻之,曰:“子反必不免。信以守礼,礼以庇身,信礼之亡,欲免得乎?”楚子侵郑,及暴隧,遂侵卫,及首止。郑子罕侵楚,取新石。栾武子欲报楚,韩献子曰:“无庸,使重其罪,民将叛之。无民,孰战?”秋八月,葬宋共公。于是华元为右师,鱼石为左师,荡泽为司马,华喜为司徒,公孙师为司城,向为人为大司寇,鳞朱为少司寇,向带为大宰,鱼府为少宰。

  荡泽弱公室,杀公子肥。华元曰:“我为右师,君臣之训,师所司也。今公室卑而不能正,吾罪大矣。不能治官,敢赖宠乎?”乃出奔晋。

  二华,戴族也;司城,庄族也;六官者,皆桓族也。鱼石将止华元,鱼府曰:“右师反,必讨,是无桓氏也。”鱼石曰:“右师苟获反,虽许之讨,必不敢。

  且多大功,国人与之,不反,惧桓氏之无祀于宋也。右师讨,犹有戌在,桓氏虽亡,必偏。”鱼石自止华元于河上。请讨,许之,乃反。使华喜、公孙师帅国人攻荡氏,杀子山。书曰:“宋杀大夫山。”言背其族也。

  鱼石、向为人、鳞朱、向带、鱼府出舍于睢上。华元使止之,不可。冬十月,华元自止之,不可。乃反。鱼府曰:“今不从,不得入矣。右师视速而言疾,有异志焉。若不我纳,今将驰矣。”登丘而望之,则驰。聘而从之,则决睢澨,闭门登陴矣。左师、二司寇、二宰遂出奔楚。华元使向戌为左师,老佐为司马,乐裔为司寇,以靖国人。

  晋三郤害伯宗,谮而杀之,及栾弗忌。伯州犁奔楚。韩献子曰:“郤氏其不免乎!善人,天地之纪也,而骤绝之,不亡何待?”初,伯宗每朝,其妻必戒之曰:“‘盗憎主人,民恶其上。’子好直言,必及于难。”

  十一月,会吴于钟离,始通吴也。

  许灵公畏逼于郑,请迁于楚。辛丑,楚公子申迁许于叶。

  

  

  !成公十六年

  【经】十有六年春王正月,雨,木冰。夏四月辛未,滕子卒。郑公子喜帅师侵宋。六月丙寅朔,日有食之。晋侯使栾黡来乞师。甲午晦,晋侯及楚子、郑伯战于鄢陵。楚子、郑师败绩。楚杀其大夫公子侧。秋,公会晋侯、齐侯、卫侯、宋华元、邾人于沙随,不见公。公至自会。公会尹子、晋侯、齐国佐、邾人伐郑。

  曹伯归自京师。九月,晋人执季孙行父,舍之于苕丘。冬十月乙亥,叔孙侨如出奔齐。十有二月乙丑,季孙行父及晋郤犨盟于扈。公至自会。乙酉,刺公子偃。

  

  【传】十六年春,楚子自武城使公子成以汝阴之田求成于郑。郑叛晋,子驷从楚子盟于武城。

  夏四月,滕文公卒。

  郑子罕伐宋,宋将鉏、乐惧败诸汋陂。退,舍于夫渠,不儆,郑人覆之,败诸汋陵,获将鉏、乐惧。宋恃胜也。

  卫侯伐郑,至于鸣雁,为晋故也。

  晋侯将伐郑,范文子曰:“若逞吾愿,诸侯皆叛,晋可以逞。若唯郑叛,晋国之忧,可立俟也。”栾武子曰:“不可以当吾世而失诸侯,必伐郑。”乃兴师。

  栾书将中军,士燮佐之。郤锜将上军,荀偃佐之。韩厥将下军,郤至佐新军,荀罃居守。郤犨如卫,遂如齐,皆乞师焉。栾黡来乞师,孟献子曰:“有胜矣。”

  戊寅,晋师起。

  郑人闻有晋师,使告于楚,姚句耳与往。楚子救郑,司马将中军,令尹将左,右尹子辛将右。过申,子反入见申叔时,曰:“师其何如?”对曰:“德、刑、详、义、礼、信,战之器也。德以施惠,刑以正邪,详以事神,义以建利,礼以顺时,信以守物。民生厚而德正,用利而事节,时顺而物成。上下和睦,周旋不逆,求无不具,各知其极。故《诗》曰:‘立我烝民,莫匪尔极。’是以神降之福,时无灾害,民生敦庞,和同以听,莫不尽力以从上命,致死以补其阙。此战之所由克也。今楚内弃其民,而外绝其好,渎齐盟,而食话言,奸时以动,而疲民以逞。民不知信,进退罪也。人恤所厎,其谁致死?子其勉之!吾不复见子矣。”

  姚句耳先归,子驷问焉,对曰:“其行速,过险而不整。速则失志,不整丧列。

  志失列丧,将何以战?楚惧不可用也。”

  五月,晋师济河。闻楚师将至,范文子欲反,曰:“我伪逃楚,可以纾忧。

  夫合诸侯,非吾所能也,以遗能者。我若群臣辑睦以事君,多矣。”武子曰:“不可。”

  六月,晋、楚遇于鄢陵。范文子不欲战,郤至曰:“韩之战,惠公不振旅。

  箕之役,先轸不反命,邲之师,荀伯不复从。皆晋之耻也。子亦见先君之事矣。

  今我辟楚,又益耻也。”文子曰:“吾先君之亟战也,有故。秦、狄、齐、楚皆强,不尽力,子孙将弱。今三强服矣,敌楚而已。唯圣人能外内无患,自非圣人,外宁必有内忧。盍释楚以为外惧乎?”甲午晦,楚晨压晋军而陈。军吏患之。范匄趋进,曰:“塞井夷灶,陈于军中,而疏行首。晋、楚唯天所授,何患焉?”文子执戈逐之,曰:“国之存亡,天也。童子何知焉?”栾书曰:“楚师轻窕,固垒而待之,三日必退。退而击之,必获胜焉。”郤至曰:“楚有六间,不可失也:其二卿相恶;王卒以旧;郑陈而不整;蛮军而不陈;陈不违晦;在陈而嚣,合而加嚣,各顾其后,莫有斗心。旧不必良,以犯天忌。我必克之。”

  楚子登巢车以望晋军,子重使大宰伯州犁侍于王后。王曰:“骋而左右,何也?”曰:“召军吏也。”“皆聚于军中矣!”曰:“合谋也。”“张幕矣。”

  曰:“虔卜于先君也。”“彻幕矣!”曰:“将发命也。”“甚嚣,且尘上矣!”曰:“将塞井夷灶而为行也。”“皆乘矣,左右执兵而下矣!”曰:“听誓也。”

  “战乎?”曰:“未可知也。”“乘而左右皆下矣!”曰:“战祷也。”伯州犁以公卒告王。苗贲皇在晋侯之侧,亦以王卒告。皆曰:“国士在,且厚,不可当也。”苗贲皇言于晋侯曰:“楚之良,在其中军王族而已。请分良以击其左右,而三军萃于王卒,必大败之。”公筮之,史曰:“吉。其卦遇《复》ⅱⅲ,曰:‘南国戚,射其元王中厥目。’国戚王伤,不败何待?”公从之。有淖于前,乃皆左右相违于淖。步毅御晋厉公,栾鍼为右。彭名御楚共王,潘党为右。石首御郑成公,唐苟为右。栾、范以其族夹公行,陷于淖。栾书将载晋侯,鍼曰:“书退!国有大任,焉得专之?且侵官,冒也;失官,慢也;离局,奸也。有三罪焉,不可犯也。”乃掀公以出于淖。

  癸巳,潘尫之党与养由基蹲甲而射之,彻七札焉。以示王,曰:“君有二臣如此,何忧于战?”王怒曰:“大辱国。诘朝,尔射,死艺。”吕锜梦射月,中之,退入于泥。占之,曰:“姬姓,日也。异姓,月也,必楚王也。射而中之,退入于泥,亦必死矣。”及战,射共王,中目。王召养由基,与之两矢,使射吕锜,中项,伏弢。以一矢复命。

  郤至三遇楚子之卒,见楚子,必下,免胄而趋风。楚子使工尹襄问之以弓,曰:“方事之殷也,有韎韦之跗注,君子也。识见不谷而趋,无乃伤乎?”郤至见客,免胄承命,曰:“君之外臣至,从寡君之戎事,以君之灵,间蒙甲胄,不敢拜命,敢告不宁君命之辱,为事之故,敢肃使者。”三肃使者而退。

  晋韩厥从郑伯,其御杜溷罗曰:“速从之!其御屡顾,不在马,可及也。”

  韩厥曰:“不可以再辱国君。”乃止。郤至从郑伯,其右茀翰胡曰:“谍辂之,余从之乘而俘以下。”郤至曰:“伤国君有刑。”亦止。石首曰:“卫懿公唯不去其旗,是以败于荧。”乃内旌于弢中。唐苟谓石首曰:“子在君侧,败者壹大。

  我不如子,子以君免,我请止。”乃死。

  楚师薄于险,叔山冉谓养由基曰:“虽君有命,为国故,子必射!”乃射。

  再发,尽殪。叔山冉搏人以投,中车,折轼。晋师乃止。囚楚公子茷。

  栾鍼见子重之旌,请曰:“楚人谓夫旌,子重之麾也。彼其子重也。日臣之使于楚也,子重问晋国之勇。臣对曰:‘好以众整。’曰:‘又何如?’臣对曰:‘好以暇。’今两国治戎,行人不使,不可谓整。临事而食言,不可谓暇。

  请摄饮焉。”公许之。使行人执榼承饮,造于子重,曰:“寡君乏使,使鍼御持矛。是以不得犒从者,使某摄饮。”子重曰:“夫子尝与吾言于楚,必是故也,不亦识乎!”受而饮之。免使者而复鼓。

  旦而战,见星未已。子反命军吏察夷伤,补卒乘,缮甲兵,展车马,鸡鸣而食,唯命是听。晋人患之。苗贲皇徇曰:“蒐乘补卒,秣马利兵,修陈固列,蓐食申祷,明日复战。”乃逸楚囚。王闻之,召子反谋。谷阳竖献饮于子反,子反醉而不能见。王曰:“天败楚也夫!余不可以待。”乃宵遁。晋入楚军,三日谷。

  范文子立于戎马之前,曰:“君幼,诸臣不佞,何以及此?君其戒之!《周书》曰‘唯命不于常’,有德之谓。”

  楚师还,及瑕,王使谓子反曰:“先大夫之覆师徒者,君不在。子无以为过,不谷之罪也。”子反再拜稽首曰:“君赐臣死,死且不朽。臣之卒实奔,臣之罪也。”子重复谓子反曰:“初陨师徒者,而亦闻之矣!盍图之?”对曰:“虽微先大夫有之,大夫命侧,侧敢不义?侧亡君师,敢忘其死。”王使止之,弗及而卒。

  战之日,齐国佐、高无咎至于师。卫侯出于卫,公出于坏隤。宣伯通于穆姜,欲去季、孟,而取其室。将行,穆姜送公,而使逐二子。公以晋难告,曰:“请反而听命。”姜怒,公子偃、公子鉏趋过,指之曰:“女不可,是皆君也。”公待于坏隤,申宫儆备,设守而后行,是以后。使孟献子守于公宫。

  秋,会于沙随,谋伐郑也。宣伯使告郤犨曰:“鲁侯待于坏隤以待胜者。”

  郤犨将新军,且为公族大夫,以主东诸侯。取货于宣伯而诉公于晋侯,晋侯不见公。

  曹人请于晋曰:“自我先君宣公即位,国人曰:‘若之何忧犹未弭?’而又讨我寡君,以亡曹国社稷之镇公子,是大泯曹也。先君无乃有罪乎?若有罪,则君列诸会矣。君唯不遗德刑,以伯诸侯。岂独遗诸敝邑?敢私布之。”

  七月,公会尹武公及诸侯伐郑。将行,姜又命公如初。公又申守而行。诸侯之师次于郑西。我师次于督扬,不敢过郑。子叔声伯使叔孙豹请逆于晋师。为食于郑郊。师逆以至。声伯四日不食以待之,食使者而后食。

  诸侯迁于制田。知武子佐下军,以诸侯之师侵陈,至于鸣鹿。遂侵蔡。未反,诸侯迁于颍上。戊午,郑子罕宵军之,宋、齐、卫皆失军。

  曹人复请于晋,晋侯谓子臧:“反,吾归而君。”子臧反,曹伯归。子臧尽致其邑与卿而不出。

  宣伯使告郤犨曰:“鲁之有季、孟,犹晋之有栾、范也,政令于是乎成。今其谋曰:‘晋政多门,不可从也。宁事齐、楚,有亡而已,蔑从晋矣。’若欲得志于鲁,请止行父而杀之,我毙蔑也而事晋,蔑有贰矣。鲁不贰,小国必睦。不然,归必叛矣。”

  九月,晋人执季文子于苕丘。公还,待于郓。使子叔声伯请季孙于晋,郤犨曰:“苟去仲孙蔑而止季孙行父,吾与子国,亲于公室。”对曰:“侨如之情,子必闻之矣。若去蔑与行父,是大弃鲁国而罪寡君也。若犹不弃,而惠徼周公之福,使寡君得事晋君。则夫二人者,鲁国社稷之臣也。若朝亡之,鲁必夕亡。以鲁之密迩仇雠,亡而为仇,治之何及?”郤犨曰:“吾为子请邑。”对曰:“婴齐,鲁之常隶也,敢介大国以求厚焉!承寡君之命以请,若得所请,吾子之赐多矣。又何求?”范文子谓栾武子曰:“季孙于鲁,相二君矣。妾不衣帛,马不食粟,可不谓忠乎?信谗慝而弃忠良,若诸侯何?子叔婴齐奉君命无私,谋国家不贰,图其身不忘其君。若虚其请,是弃善人也。子其图之!”乃许鲁平,赦季孙。

  冬十月,出叔孙侨如而盟之,侨如奔齐。

  十二月,季孙及郤犨盟于扈。归,刺公子偃,召叔孙豹于齐而立之。

  齐声孟子通侨如,使立于高、国之间。侨如曰:“不可以再罪。”奔卫,亦间于卿。

  晋侯使郤至献楚捷于周,与单襄公语,骤称其伐。单子语诸大夫曰:“温季其亡乎!位于七人之下,而求掩其上。怨之所聚,乱之本也。多怨而阶乱,何以在位?《夏书》曰:‘怨岂在明?不见是图。’将慎其细也。今而明之,其可乎?”

  

  !成公十七年

  【经】十有七年春,卫北宫括帅师侵郑。夏,公会尹子、单子、晋侯、齐侯、宋公、卫侯、曹伯、邾人伐郑。六月乙酋,同盟于柯陵。秋,公至自会。齐高无咎出奔莒。九月辛丑,用郊。晋侯使荀罃来乞师。冬,公会单子、晋侯、宋公、卫侯、曹伯、齐人、邾人伐郑。十有一月,公至自伐郑。壬申,公孙婴卒于貍脤。

  十有二月丁巳朔,日有食之。邾子玃且卒。晋杀其大夫郤锜、郤犨、郤至。楚人灭舒庸。

  

  【传】十七年春,王正月,郑子驷侵晋虚、滑。卫北宫括救晋,侵郑,至于高氏。

  夏五月,郑大子髡顽、侯孺为质于楚,楚公子成、公子寅戍郑。公会尹武公、单襄公及诸侯伐郑,自戏童至于曲洧。

  晋范文子反自鄢陵,使其祝宗祈死,曰:“君骄侈而克敌,是天益其疾也。

  难将作矣!爱我者惟祝我,使我速死,无及于难,范氏之福也。”六月戊辰,士燮卒。

  乙酉,同盟于柯陵,寻戚之盟也。

  楚子重救郑,师于首止。诸侯还。

  齐庆克通于声孟子,与妇人蒙衣乘辇而入于闳。鲍牵见之,以告国武子,武子召庆克而谓之。庆克久不出,而告夫人曰:“国子谪我!”夫人怒。国子相灵公以会,高、鲍处守。及还,将至,闭门而索客。孟子诉之曰:“高、鲍将不纳君,而立公子角。国子知之。”秋七月壬寅,刖鲍牵而逐高无咎。无咎奔莒,高弱以卢叛。齐人来召鲍国而立之。

  初,鲍国去鲍氏而来为施孝叔臣。施氏卜宰,匡句须吉。施氏之宰,有百室之邑。与匡句须邑,使为宰。以让鲍国,而致邑焉。施孝叔曰:“子实吉。”对曰:“能与忠良,吉孰大焉!”鲍国相施氏忠,故齐人取以为鲍氏后。仲尼曰:“鲍庄子之知不如葵,葵犹能卫其足。”

  冬,诸侯伐郑。十月庚午,围郑。楚公子申救郑,师于汝上。十一月,诸侯还。

  初,声伯梦涉洹,或与己琼瑰,食之,泣而为琼瑰,盈其怀。从而歌之曰:“济洹之水,赠我以琼瑰。归乎!归乎!琼瑰盈吾怀乎!”惧不敢占也。还自郑,壬申,至于狸脤而占之,曰:“余恐死,故不敢占也。今众繁而从余三年矣,无伤也。”言之,之莫而卒。

  齐侯使崔杼为大夫,使庆克佐之,帅师围卢。国佐从诸侯围郑,以难请而归。

  遂如卢师,杀庆克,以谷叛。齐侯与之盟于徐关而复之。十二月,卢降。使国胜告难于晋,待命于清。

  晋厉公侈,多外嬖。反自鄢陵,欲尽去群大夫,而立其左右。胥童以胥克之废也,怨郤氏,而嬖于厉公。郤锜夺夷阳五田,五亦嬖于厉公。郤犨与长鱼矫争田,执而梏之,与其父母妻子同一辕。既,矫亦嬖于厉公。栾书怨郤至,以其不从己而败楚师也,欲废之。使楚公子伐告公曰:“此战也,郤至实召寡君。以东师之未至也,与军帅之不具也,曰:‘此必败!吾因奉孙周以事君。’”公告栾书,书曰:“其有焉!不然,岂其死之不恤,而受敌使乎?君盍尝使诸周而察之?”郤至聘于周,栾书使孙周见之。公使觇之,信。遂怨郤至。

  厉公田,与妇人先杀而饮酒,后使大夫杀。郤至奉豕,寺人孟张夺之,郤至射而杀之。公曰:“季子欺余。”

  厉公将作难,胥童曰:“必先三郤,族大多怨。去大族不逼,敌多怨有庸。”

  公曰:“然。”郤氏闻之,郤锜欲攻公,曰:“虽死,君必危。”郤至曰:“人所以立,信、知、勇也。信不叛君,知不害民,勇不作乱。失兹三者,其谁与我?死而多怨,将安用之?君实有臣而杀之,其谓君何?我之有罪,吾死后矣!若杀不辜,将失其民,欲安,得乎?待命而已!受君之禄,是以聚党。有党而争命,罪孰大焉!”壬午,胥童、夷羊五帅甲八百,将攻郤氏。长鱼矫请无用众,公使清沸魋助之,抽戈结衽,而伪讼者。三郤将谋于榭。矫以戈杀驹伯、苦成叔于其位。温季曰:“逃威也!”遂趋。矫及诸其车,以戈杀之,皆尸诸朝。

  胥童以甲劫栾书、中行偃于朝。矫曰:“不杀二子,忧必及君。”公曰:“一朝而尸三卿,余不忍益也。”对曰:“人将忍君。臣闻乱在外为奸,在内为轨。御奸以德,御轨以刑。不施而杀,不可谓德。臣逼而不讨,不可谓刑。德刑不立,奸轨并至。臣请行。”遂出奔狄。公使辞于二子,曰:“寡人有讨于郤氏,既伏其辜矣。大夫无辱,其复职位。”皆再拜稽首曰:“君讨有罪,而免臣于死,君之惠也。二臣虽死,敢忘君德。”乃皆归。公使胥童为卿。

  公游于匠丽氏,栾书、中行偃遂执公焉。召士匄,士匄辞。召韩厥,韩厥辞,曰:“昔吾畜于赵氏,孟姬之谗,吾能违兵。古人有言曰:‘杀老牛莫之敢尸。’而况君乎?二三子不能事君,焉用厥也!”舒庸人以楚师之败也,道吴人围巢,伐驾,围厘、虺,遂恃吴而不设备。楚公子櫜师袭舒庸,灭之。

  闰月乙卯晦,栾书、中行偃杀胥童。民不与郤氏,胥童道君为乱,故皆书曰:“晋杀其大夫。”

  

  

  !成公十八年

  【经】十有八年春王正月,晋杀其大夫胥童。庚申,晋弑其君州蒲。齐杀其大夫国佐。公如晋。夏,楚子、郑伯伐宋。宋鱼石复入于彭城。公至自晋。晋侯使士匄来聘。秋,杞伯来朝。八月,邾子来朝,筑鹿囿。己丑,公薨于路寝。冬,楚人、郑人侵宋。晋侯使士鲂来乞师。十有二月,仲孙蔑会晋侯、宋公、卫侯、邾子、齐崔杼同盟于虚朾。丁未,葬我君成公。

  

  【传】十八年春,王正月庚申,晋栾书、中行偃使程滑弑厉公,葬之于翼东门之外,以车一乘。使荀罃、士鲂逆周子于京师而立之,生十四年矣。大夫逆于清原,周子曰:“孤始愿不及此。虽及此,岂非天乎!抑人之求君,使出命也,立而不从,将安用君?二三子用我今日,否亦今日,共而从君,神之所福也。”

  对曰:“群臣之愿也,敢不唯命是听。”庚午,盟而入,馆于伯子同氏。辛巳,朝于武宫,逐不臣者七人。周子有兄而无慧,不能辨菽麦,故不可立。

  齐为庆氏之难故,甲申晦,齐侯使士华免以戈杀国佐于内宫之朝。师逃于夫人之宫。书曰:“齐杀其大夫国佐。”弃命,专杀,以谷叛故也。使清人杀国胜。

  国弱来奔,王湫奔莱。庆封为大夫,庆佐为司寇。既,齐侯反国弱,使嗣国氏,礼也。

  二月乙酉朔,晋悼公即位于朝。始命百官,施舍、己责,逮鳏寡,振废滞,匡乏困,救灾患,禁淫慝,薄赋敛,宥罪戾,节器用,时用民,欲无犯时。使魏相、士鲂、魏颉、赵武为卿。荀家、荀会、栾黡、韩无忌为公族大夫,使训卿之子弟共俭孝弟。使士渥浊为大傅,使修范武子之法。右行辛为司空,使修士蒍之法。弁纠御戎,校正属焉,使训诸御知义。荀宾为右,司士属焉,使训勇力之士时使。卿无共御,立军尉以摄之。祁奚为中军尉,羊舌职佐之,魏绛为司马,张老为候奄。铎遏寇为上军尉,籍偃为之司马,使训卒乘亲以听命。程郑为乘马御,六驺属焉,使训群驺知礼。凡六官之长,皆民誉也。举不失职,官不易方,爵不逾德,师不陵正,旅不逼师,民无谤言,所以复霸也。

  公如晋,朝嗣君也。

  夏六月,郑伯侵宋,及曹门外。遂会楚子伐宋,取朝郏。楚子辛、郑皇辰侵城郜,取幽丘,同伐彭城,纳宋鱼石、向为人、鳞朱、向带、鱼府焉,以三百乘戍之而还。书曰“复入”,凡去其国,国逆而立之,曰“入”;复其位,曰“复归”;诸侯纳之,曰“归”。以恶曰复入。宋人患之。西鉏吾曰:“何也?若楚人与吾同恶,以德于我,吾固事之也,不敢贰矣。大国无厌,鄙我犹憾。不然,而收吾憎,使赞其政,以间吾衅,亦吾患也。今将崇诸侯之奸,而披其地,以塞夷庚。逞奸而携服,毒诸侯而惧吴、晋。吾庸多矣,非吾忧也。且事晋何为?晋必恤之。”

  公至自晋。晋范宣子来聘,且拜朝也。君子谓:“晋于是乎有礼。”

  秋,杞桓公来朝,劳公,且问晋故。公以晋君语之。杞伯于是骤朝于晋而请为昏。

  七月,宋老佐、华喜围彭城,老佐卒焉。

  八月,邾宣公来朝,即位而来见也。

  筑鹿囿,书,不时也。

  己丑,公薨于路寝,言道也。

  冬十一月,楚子重救彭城,伐宋,宋华元如晋告急。韩献子为政,曰:“欲求得人,必先勤之,成霸安强,自宋始矣。”晋侯师于台谷以救宋,遇楚师于靡角之谷。楚师还。

  晋士鲂来乞师。季文子问师数于臧武仲,对曰:“伐郑之役,知伯实来,下军之佐也。今彘季亦佐下军,如伐郑可也。事大国,无失班爵而加敬焉,礼也。”

  从之。

  十二月,孟献子会于虚朾,谋救宋也。宋人辞诸侯而请师以围彭城。孟献子请于诸侯,而先归会葬。

  丁未,葬我君成公,书,顺也。

 
![[春秋左传]]

![[春秋公羊传]]

![[春秋谷梁传]]
春秋公羊传

  

  [周]公羊高

  

  公羊传隐公

  

  !隐公(经一一)元年

  元年春,王正月。

  (传)元年者何?君之始年也。春者何?岁之始也。王者孰谓?谓文王也。曷为先言王而后言正月?王正月也。何言乎王正月?大一统也。公何以不言即位?成公意也。何成乎公之意?公将平国而反之桓。曷为反之桓?桓幼而贵,隐长而卑,其为尊卑也微,国人莫知。隐长又贤,诸大夫扳隐而立之。隐于是焉而辞立,则未知桓之将必得立也。且如桓立,则恐诸大夫之不能相幼君也,故凡隐之立为桓立也。隐长又贤,何以不宜立?立适以长不以贤,立子以贵不以长。桓何以贵?母贵也。母贵则子何以贵?子以母贵,母以子贵。

  (经一二)三月,公及邾娄仪父盟于眛。

  (传)及者何?与也,会及暨皆与也。曷为或言会,或言及,或言暨?会犹最也;及犹汲汲也;暨犹暨暨也。及我欲之,暨不得已也。仪父者何?邾娄之君也。何以名?字也。曷为称字?褒之也。曷为褒之?为其与公盟也。与公盟者众矣,曷为独褒乎此?因其可褒而褒之。此其为可褒奈何?渐进也。眛者何?地期也。

  (经一三)夏,五月,郑伯克段于鄢。

  (传)克之者何?杀之也。杀之则曷为谓之克?大郑伯之恶也。曷为大郑伯之恶?母欲立之,己杀之,如勿与而已矣。段者何?郑伯之弟也。何以不称弟?当国也。其地何?当国也。齐人杀无知何以不地?在内也。在内虽当国不地也。不当国虽在外亦不地也。

  (经一四)秋,七月,天王使宰咺来归惠公仲子之赗。

  (传)宰者何?官也。咺者何?名也。曷为以官氏?宰士也。惠公者何?隐之考也。仲子者何?桓之母也。何以不称夫人?桓未君也。赗者何?丧事有赗。赗者盖以马,以乘马束帛。车马曰赗,货财曰赙,衣被曰襚。桓未君则诸侯曷为来赗之?隐为桓立,故以桓母之丧告于诸侯。然则何言尔?成公意也。其言来何?不及事也。其言惠公仲子何?兼之,兼之非礼也。何以不言及仲子?仲子微也。

  (经一五)九月,及宋人盟于宿。

  (传)孰及之?内之微者也。

  (经一六)冬,十有二月,祭伯来。

  (传)祭伯者何?天子之大夫也。何以不称使?奔也。奔则曷为不言奔?王者无外,言奔则有外之辞也。

  (经一七)公子益师卒。

  (传)何以不日?远也。所见异辞,所闻异辞,所传闻异辞。

  !隐公(经二一)二年

  春,公会戎于潜。(经二二)夏,五月,莒人入向。

  (传)入者何?得而不居也。

  (经二三)无骇帅师入极。

  (传)无骇者何?展无骇也。何以不氏?贬。曷为贬?疾始灭也。始灭昉于此乎?前此矣。前此则曷为始乎此?托始焉尔。曷为托始焉尔?《春秋》之始也。此灭也,其言入何?内大恶,讳也。

  (经二四)秋,八月庚辰,公及戎盟于唐。

  (经二五)九月,纪履緰来逆女。

  (传)纪履緰者何?纪大夫也。何以不称使?婚礼不称主人。然则曷称?称诸父兄师友。宋公使公孙寿来纳币,则其称主人何?辞穷也。辞穷者何?无母也。然则纪有母乎?曰有。有则何以不称母?母不通也。外逆女不书,此何以书?讥。何讥尔?讥始不亲迎也。始不亲迎昉于此乎?前此矣。前此则曷为始乎?此托始焉尔。曷为托始焉尔?《春秋》之始也。女曷为或称女,或称妇,或称夫人?女在其国称女,在涂称妇,入国称夫人。

  (经二六)冬,十月,伯姬归于纪。

  (传)伯姬者何?内女也。其言归何?妇人谓嫁曰归。

  (经二七)纪子伯、莒子盟于密。

  (传)纪子伯者何?无闻焉尔。

  (经二八)十有二月乙卯,夫人子氏薨。郑人伐卫。

  (传)夫人子氏者何?隐公之母也。何以不书葬?成公意也。何成乎公之意?子将不终为君,故母亦不终为夫人也。

  !隐公(经三一)三年

  春,王二月己巳,日有食之。

  (传)何以书?记异也。日食则曷为或日或不日?或言朔或不言朔?曰「某月某日朔,日有食之」者,食正朔也;其或日或不日,或失之前,或失之后。失之前者,朔在前也;失之后者,朔在后也。

  (经三二)三月庚戌,天王崩。

  (传)何以不书葬?天子记崩不记葬,必其时也。诸侯记卒记葬,有天子存,不得必其时也。曷为或言崩或言薨?天子曰崩,诸侯曰薨,大夫曰卒,士曰不禄。

  (经三三)夏,四月辛卯,尹氏卒。

  (传)尹氏者何?天子之大夫也。其称尹氏何?贬。曷为贬?讥世卿,世卿非礼也。外大夫不卒,此何以卒?天王崩,诸侯之主也。

  (经三四)秋,武氏子来求赙。

  (传)武氏子者何?天子之大夫也。其称武氏子何?讥。何讥尔?父卒子未命也。何以不称使?当丧未君也。武氏子来求赙,何以书?讥。何讥尔?丧事无求,求赙非礼也,盖通于下。

  (经三五)八月庚辰,宋公和卒。

  (经三六)冬,十有二月,齐侯、郑伯盟于石门。癸未,葬宋缪公。

  (传)葬者曷为或日或不日?不及时而日,渴葬也;不及时而不日,慢葬也。过时而日,隐之也;过时而不日,谓之不能葬也。当时而不日,正也。当时而日,危不得葬也。此当时何危尔?宣公谓缪公曰:「以吾爱与夷,则不若爱女;以为社稷宗庙主,则与夷不若女,盍终为君矣?」宣公死,缪公立,缪公逐其二子庄公冯与左师勃,曰:「尔为吾子,生毋相见,死毋相哭。」与夷复曰:「先君之所为不与臣国而纳国乎君者,以君可以为社稷宗庙主也。今君逐君之二子而将致国乎与夷,此非先君之意也。且使子而可逐,则先君其逐臣矣。」缪公曰:「先君之不尔逐可知矣,吾立乎此摄也。」终致国乎与夷。庄公冯弒与夷。故君子大居正,宋之祸宣公为之也。

  !隐公(经四一)四年

  春,王二月,莒人伐杞,取牟娄。

  (传)牟娄者何?杞之邑也。外取邑不书,此何以书?疾始取邑也。

  (经四二)戊申,卫州吁弒其君完。

  (传)曷为以国氏?当国也。

  (经四三)夏,公及宋公遇于清。

  (传)遇者何?不期也。一君出,一君要之也。

  (经四四)宋公、陈侯、蔡人、卫人伐郑。秋,翚帅师会宋公、陈侯、蔡人、卫人伐郑。

  (传)翚者何?公子翚也。何以不称公子?贬。曷为贬?与弒公也。其与弒公奈何?公子翚谄乎隐公,谓隐公曰:「百姓安子,诸侯说子,盍终为君矣?」隐曰:「吾否,吾使修涂裘,吾将老焉。」公子翚恐若其言闻乎桓,于是谓桓曰:「吾为子口隐矣。隐曰:『吾不反也。』」桓曰:「然则奈何?」曰:「请作难,弒隐公。」于钟巫之祭焉弒隐公也。

  (经四五)九月,卫人杀州吁于濮。

  (传)其称人何?讨贼之辞也。

  (经四六)冬,十有二月,卫人立晋。

  (传)晋者何?公子晋也。立者何?立者不宜立也。其称人何?众立之之辞也。然则孰立之?石碏立之。石碏立之,则其称人何?众之所欲立也。众虽欲立之,其立之非也。

  !隐公(经五一)五年

  春,公观鱼于棠。

  (传)何以书?讥。何讥尔?远也。公曷为远而观鱼?登来之也。百金之鱼公张之,登来之者何?美大之之辞也。棠者何?济上之邑也。

  (经五二)夏,四月,葬卫桓公。

  (经五三)秋,卫师入盛。

  (传)曷为或言率师或不言率师?将尊师众称某率师,将尊师少称将;将卑师众称师,将卑师少称人。君将不言率师,书其重者也。

  (经五四)九月,考仲子之宫。

  (传)考宫者何?考犹入室也,始祭仲子也。桓未君则曷为祭仲子?隐为桓立,故为桓祭其母也。然则何言尔?成公意也。

  (经五五)初献六羽。

  (传)初者何?始也。六羽者何?舞也。初献六羽何以书?讥。何讥尔?讥始僭诸公也。六羽之为僭奈何?天子八佾,诸公六,诸侯四。诸公者何?诸侯者何?天子三公称公,王者之后称公,其余大国称侯,小国称伯、子、男。天子三公者何?天子之相也。天子之相则何以三?自陜而东者,周公主之;自陜而西者,召公主之,一相处乎内。始僭诸公昉于此乎?前此矣。前此则曷为始乎?此僭诸公犹可言也,僭天子不可言也。

  (经五六)邾娄人、郑人伐宋。

  (经五七)螟。(传)何以书?记灾也。

  (经五八)冬,十有二月辛巳,公子彄卒。宋人伐郑,围长葛。

  (传)邑不言围,此其言围何?强也。

  !隐公(经六一)六年

  春,郑人来输平。

  (传)输平者何?输平犹堕成也。何言乎堕成?败其成也,曰:「吾成败矣」,吾与郑人末有成也。吾与郑人则曷为末有成?狐壤之战,隐公获焉。然则何以不言战?讳获也。

  (经六二)夏,五月辛酉,公会齐侯,盟于艾。

  (经六三)秋,七月。

  (传)此无事,何以书?《春秋》虽无事,首时过则书。首时过则何以书?《春秋》编年,四时具然后为年。

  (经六四)冬,宋人取长葛。

  (传)外取邑不书,此何以书?久也。

  !隐公(经七一)七年

  春,王三月,叔姬归于纪。滕侯卒。

  (传)何以不名?微国也。微国则其称侯何?不嫌也。《春秋》贵贱不嫌同号,美恶不嫌同辞。

  (经七二)夏,城中丘。

  (传)中丘者何?内之邑也。城中丘,何以书?以重书也。

  (经七三)齐侯使其弟年来聘。

  (传)其称弟何?母弟称弟,母兄称兄。

  (经七四)秋,公伐邾娄。

  (经七五)冬,天王使凡伯来聘,戎伐凡伯于楚丘以归。

  (传)凡伯者何?天子之大夫也。此聘也,其言伐之何?执之也。执之则其言伐之何?大之也。曷为大之?不与夷狄之执中国也。其地何?大之也。

  !隐公(经八一)八年

  春,宋公、卫侯遇于垂。三月,郑伯使宛来归邴。

  (传)宛者何?郑之微者也。邴者何?郑汤沐之邑也。天子有事于泰山,诸侯皆从。泰山之下,诸侯皆有汤沐之邑焉。

  (经八二)庚寅,我入邴。

  (传)其言入何?难也。其日何?难也。其言我何?言我者非独我也,齐亦欲之。

  (经八三)夏,六月己亥,蔡侯考父卒。辛亥,宿男卒。

  (经八四)秋,七月庚午,宋公、齐侯、卫侯盟于瓦屋。八月,葬蔡宣公。

  (传)卒何以名而葬不名?卒从正,而葬从主人。卒何以日而葬不日?卒赴,而葬不告。

  (经八七)九月辛卯,公及莒人盟于包来。

  (传)公曷为与微者盟?称人则从不疑也。

  (经八八)螟。

  (经八九)冬,十有二月,无骇卒。

  (传)此展无骇也,何以不氏?疾始灭也,故终其身不氏。

  !隐公(经九一)九年

  春,天王使南季来聘。

  (经九二)三月癸酉,大雨,震电。

  (传)何以书?记异也。何异尔?不时也。

  (经九三)庚辰,大雨雪。

  (传)何以书?记异也。何异尔?俶甚也。

  (经九四)侠卒。

  (传)侠者何?吾大夫之未命者也。

  (经九五)夏,城郎。

  (经九六)秋,七月。

  (经九七)冬,公会齐侯于邴。

  !隐公(经十一)十年

  春,王二月,公会齐侯、郑伯于中丘。

  (经十二)夏,翚帅师会齐人、郑人伐宋。

  (传)此公子翚也,何以不称公子?贬。曷为贬?隐之罪人也,故终隐之篇贬也。

  (经十三)六月壬戌,公败宋师于菅。辛未取郜,辛巳取防。

  (传)取邑不日,此何以日?一月而再取也。何言乎一月而再取?甚之也。内大恶讳,此其言甚之何?《春秋》录内而略外,于外大恶书,小恶不书,于内大恶讳,小恶书。

  (经十四)秋,宋人、卫人入郑。宋人、蔡人、卫人伐载,郑伯伐取之。

  (传)其言伐取之何?易也。其易奈何?因其力也。因谁之力?因宋人、蔡人、卫人之力也。

  (经十五)冬,十月壬午,齐人、郑人入盛。

  !隐公(经十一一)十有一年

  春,滕侯、薛侯来朝。

  (传)其言朝何?诸侯来曰朝,大夫来曰聘。其兼言之何?微国也。

  (经十八)夏,五月,公会郑伯于祁黎。

  (经十九)秋,七月壬午,公及齐侯、郑伯入许。

  (经十十)冬,十有一月壬辰,公薨。

  (传)何以不书葬?隐之也。何隐尔?弒也。弒则何以不书葬?《春秋》君弒,贼不讨,不书葬,以为无臣子也。子沈子曰:「君弒,臣不讨贼,非臣也。子不复雠,非子也。葬,生者之事也。《春秋》君弒,贼不讨,不书葬,以为不系乎臣子也。」公薨何以不地?不忍言也。隐何以无正月?隐将让乎桓,故不有其正月也。

  公羊传桓公

  !桓公(经一一)元年

  春,王正月,公即位。

  (传)继弒君不言即位,此其言即位何?如其意也。

  (经一二)三月,公会郑伯于垂。郑伯以璧假许田。

  (传)其言以璧假之何?易之也。易之则其言假之何?为恭也。曷为为恭?有天子存,则诸侯不得专地也。许田者何?鲁朝宿之邑也。诸侯时朝乎天子,天子之郊,诸侯皆有朝宿之邑焉。此鲁朝宿之邑也,则曷为谓之许田?讳取周田也。讳取周田则曷为谓之许田?系之许也。曷为系之许?近许也。此邑也,其称田何?田多邑少称田,邑多田少称邑。

  (经一三)夏,四月丁未,公及郑伯盟于越。

  (经一四)秋,大水。

  (传)何以书?记灾也。

  (经一五)冬,十月。

  !桓公(经二一)二年

  春,王正月戊申,宋督弒其君与夷及其大夫孔父。

  (传)及者何?累也。弒君多矣,舍此无累者乎?曰:有,仇牧,荀息,皆累也。舍仇牧、荀息,无累者乎?曰:有。有则此何以书?贤也。何贤乎孔父?孔父可谓义形于色矣。其义形于色奈何?督将弒殇公,孔父生而存,则殇公不可得而弒也,故于是先攻孔父之家。殇公知孔父死,己必死,趋而救之,皆死焉。孔父正色而立于朝,则人莫敢过而致难于其君者,孔父可谓义形于色矣。

  (经二二)滕子来朝。三月,公会齐侯、陈侯、郑伯于稷,以成宋乱。

  (传)内大恶讳,此其目言之何?远也。所见异辞,所闻异辞,所传闻异辞。隐亦远矣,曷为为隐讳?隐贤而桓贱也。

  (经二三)夏,四月,取郜大鼎于宋。

  (传)此取之宋,其谓之郜鼎何?器从名,地从主人。器何以从名?地何以从主人?器之与人,非有即尔。宋始以不义取之,故谓之郜鼎;至乎地之与人则不然,俄而可以为其有矣。然则为取可以为其有乎?曰:否。何者?若楚王之妻媦,无时焉可也。

  (经二四)戊申,纳于太庙。

  (传)何以书?讥。何讥尔?遂乱受赂,纳于太庙,非礼也。

  (经二五)秋,七月,纪侯来朝。蔡侯、郑伯会于邓。

  (传)离不言会,此其言会何?盖邓与会尔。

  (经二六)九月,入杞。公及戎盟于唐。

  (经二七)冬,公至自唐。

  !桓公(经三一)三年

  春,正月,公会齐侯于嬴。

  (经三二)夏,齐侯、卫侯胥命于蒲。

  (传)胥命者何?相命也。何言乎相命?近正也。此其为近正奈何?古者不盟,结言而退。

  (经三三)六月,公会纪侯于盛。

  (经三四)秋,七月壬辰朔,日有食之,既。

  (传)既者何?尽也。

  (经三五)公子翚如齐逆女。九月,齐侯送姜氏于讙。

  (传)何以书?讥。何讥尔?诸侯越竟送女,非礼也。此入国矣,何以不称夫人?自我言齐,父母之于子,虽为邻国夫人,犹曰吾姜氏。

  (经三六)公会齐侯于讙,夫人姜氏至自齐。

  (传)翚何以不致?得见乎公矣。

  (经三七)冬,齐侯使其弟年来聘。有年。

  (传)有年,何以书?以喜书也。大有年,何以书?亦以喜书也。此其曰有年何?仅有年也。彼其曰大有年何?大丰年也。仅有年亦足以当喜乎?恃有年也。

  !桓公(经四一)四年

  春,正月,公狩于郎。

  (传)狩者何?田狩也,春曰苗,秋曰搜,冬曰狩。常事不书,此何以书?讥。何讥尔?远也。诸侯曷为必田狩?一曰干豆,二曰宾客,三百充君之庖。

  (经四二)夏,天王使宰渠伯纠来聘。

  (传)宰渠伯纠者何?天子之大夫也。其称宰渠伯纠何?下大夫也。

  !桓公(经五一)五年

  春,正月甲戌、己丑,陈侯鲍卒。

  (传)曷为以二日卒之?怴也。甲戌之日亡、己丑之日死而得,君子疑焉,故以二日卒之也。

  (经五二)夏,齐侯、郑伯如纪。

  (传)外相如不书,此何以书?离不言会。

  (经五三)天王使仍叔之子来聘。

  (传)仍叔之子者何?天子之大夫也。其称仍叔之子何?讥。何讥尔?讥父老子代从政也。

  (经五四)葬陈桓公。

  (经五五)城祝丘。

  (经五六)秋,蔡人、卫人、陈人从王伐郑。

  (传)其言从王伐郑何?从王正也。

  (经五七)大雩。

  (传)大雩者何?旱祭也。然则何以不言旱?言雩则旱见;言旱则雩不见。何以书?记灾也。

  (经五八)螽。

  (传)何以书?记灾也。

  (经五九)冬,州公如曹。

  (传)外相如不书,此何以书?过我也。

  !桓公(经六一)六年

  春,正月,寔来。

  (传)寔来者何?犹曰是人来也。孰谓?谓州公也。曷为谓之寔来?慢之也。曷为慢之?化我也。

  (经六二)夏,四月,公会纪侯于成。

  (经六三)秋,八月壬午,大阅。

  (传)大阅者何?简车徒也。何以书?盖以罕书也。

  (经六四)蔡人杀陈佗。

  (传)陈佗者何?陈君也。陈君则曷为谓之陈佗?绝也。曷为绝之?贱也。其贱奈何?外淫也。恶乎淫?淫于蔡,蔡人杀之。

  (经六五)九月丁卯,子同生。

  (传)子同生者孰谓?谓庄公也。何言乎子同生?喜有正也。未有言喜有正者,此其言喜有正何?久无正也。子公羊子曰:「其诸以病桓与?」

  (经六六)冬,纪侯来朝。

  !桓公(经七一)七年

  春,二月己亥,焚咸丘。

  (传)焚之者何?樵之也。樵之者何?以火攻也。何言乎以火攻?疾始以火攻也。咸丘者何?邾娄之邑也。曷为不系乎邾娄?国之也。曷为国之?君存焉尔。

  (经七二)夏,谷伯绥来朝。邓侯吾离来朝。

  (传)皆何以名?失地之君也。其称侯朝何?贵者无后,待之以初也。

  !桓公(经八一)八年

  春,正月己卯,烝。

  (传)烝者何?冬祭也。春曰祠,夏曰礿,秋曰尝,冬曰烝。常事不书,此何以书?讥。何讥尔?讥亟也。亟则黩,黩则不敬。君子之祭也,敬而不黩。疏则怠,怠则忘。士不及兹四者,则冬不裘,夏不葛。

  (经八二)天王使家父来聘。

  (经八三)夏,五月丁丑,烝。

  (传)何以书?讥亟也。

  (经八三)秋,伐邾娄。

  (经八四)冬,十月,雨雪。

  (传)何以书?记异也。何异尔?不时也。

  (经八五)祭公来,遂逆王后于纪。

  (传)祭公者何?天子之三公也。何以不称使?婚礼不称主人。遂者何?生事也。大夫无遂事,此其言遂何?成使乎我也。其成使乎我奈何?使我为媒可,则因用是往逆矣。女在其国称女,此其称王后何?王者无外,其辞成矣。

  !桓公(经九一)九年

  春,纪季姜归于京师。

  (传)其辞成矣,则其称纪季姜何?自我言,纪父母之于子,虽为天王后,犹曰吾季姜。京师者何?天子之居也。京者何?大也。师者何?众也。天子之居,必以众大之辞言之。

  (经九二)夏,四月。

  (经九三)秋,七月。

  (经九四)冬,曹伯使其世子射姑来朝。

  (传)诸侯来曰朝。此世子也,其言朝何?《春秋》有讥父老子代从政者,则未知其在齐与?曹与?

  !桓公(经十一)十年

  春,王正月庚申,曹伯终生卒。

  (经十二)夏,五月,葬曹桓公。

  (经十三)秋,公会卫侯于桃丘,弗遇。

  (传)会者何?期辞也。其言弗遇何?公不见要也。

  (经十四)冬,十有二月丙午,齐侯、卫侯、郑伯来战于郎。

  (传)郎者何?吾近邑也。吾近邑则其言来战于郎何?近也。恶乎近?近乎围也。此偏战也,何以不言师败绩?内不言战,言战乃败矣。

  !桓公(经十一一)十有一年

  春,正月,齐人、卫人、郑人盟于恶曹。

  (经十一二)夏,五月癸未,郑伯寤生卒。

  (经十一三)秋,七月,葬郑庄公。九月,宋人执郑祭仲。

  (传)祭仲者何?郑相也。何以不名?贤也。何贤乎祭仲?以为知权也。其为知权奈何?古者郑国处于留。先郑伯有善于郐公者,通乎夫人,以取其国而迁郑焉,而野留。庄公死已葬,祭仲将往省于留,涂出于宋,宋人执之,谓之曰:「为我出忽而立突。」祭仲不从其言,则君必死、国必亡;从其言,则君可以生易死,国可以存易亡。少辽缓之,则突可故出,而忽可故反,是不可得则病,然后有郑国。古人之有权者,祭仲之权是也。权者何?权者反于经,然后有善者也。权之所设,舍死亡无所设。行权有道,自贬损以行权,不害人以行权。杀人以自生,亡人以自存,君子不为也。

  (经十一四)突归于郑。

  (传)突何以名?挈乎祭仲也。其言归何?顺祭仲也。

  (经十一五)郑忽出奔卫。

  (传)忽何以名?《春秋》伯、子、男一也,辞无所贬。

  (经十一六)柔会宋公、陈侯、蔡叔盟于折。

  (传)柔者何?吾大夫之未命者也。

  (经十一七)公会宋公于夫童。

  (经十一八)冬,十有二月,公会宋公于阚。

  !桓公(经十二一)十有二年

  春,正月。

  (经十二二)夏,六月壬寅,公会纪侯、莒子,盟于殴蛇。

  (经十二三)秋,七月丁亥,公会宋公、燕人,盟于谷丘。

  (经十二四)八月,壬辰,陈侯跃卒。公会宋公于郯。

  (经十二五)冬,十有一月,公会宋公于龟。丙戌,公会郑伯,盟于武父。

  (经十二六)丙戌,卫侯晋卒。

  (经十二六)十有二月,及郑师伐宋。丁未,战于宋。

  (传)战不言伐,此其言伐何?辟嫌也。恶乎嫌?嫌与郑人战也。此偏战也,何以不言师败绩?内不言战,言战乃败矣!

  !桓公(经十三一)十有三年

  春,二月,公会纪侯、郑伯。己巳,及齐侯、宋公、卫侯、燕人战,齐师、宋师、卫师、燕师败绩。

  (传)曷为后日?恃外也。其恃外奈何?得纪侯、郑伯,然后能为日也。内不言战,此其言战何?从外也。曷为从外?恃外故从外也。何以不地?近也。恶乎近?近乎围。郎亦近矣,郎何以地?郎犹可以地也。

  (经十三二)三月,葬卫宣公。

  (经十三三)夏,大水。

  (经十三四)秋,七月。

  (经十三五)冬,十月。

  !桓公(经十四一)十有四年

  春,正月,公会郑伯于曹。

  (经十四二)无冰。

  (传)何以书?记异也。

  (经十四三)夏,五。郑伯使其弟语来盟。

  (传)夏五者何?无闻焉尔。

  (经十四四)秋,八月壬申,御廪灾。

  (传)御廪者何?粢盛委之所藏也。御廪灾,何以书?记灾也。

  (经十四五)乙亥,尝。

  (传)常事不书,此何以书?讥。何讥尔?讥尝也。曰:犹尝乎!御廪灾,不如勿尝而已矣!

  (经十四六)冬,十有二月丁巳,齐侯禄父卒。

  (经十四七)宋人以齐人、卫人、蔡人、陈人伐郑。以者何?行其意也。

  !桓公(经十五一)十有五年

  春,二月,天王使家父来求车。

  (传)何以书?讥。何讥尔?王者无求;求车,非礼也。

  (经十五二)三月乙未,天王崩。

  (经十五三)夏,四月己巳,葬齐僖公。

  (经十五四)五月,郑伯突出奔蔡。

  (传)突何以名?夺正也。

  (经十五五)郑世子忽复归于郑。

  (传)其称世子何?复正也。曷为或言归?或言复归?复归者,出恶,归无恶;复入者,出无恶,入有恶。入者,出入恶。归者,出入无恶。

  (经十五六)许叔入于许。公会齐侯于鄗。邾娄人、牟人、葛人来朝。

  (传)皆何以称人?夷狄之也。

  (经十五七)秋,九月,郑伯突入于栎。

  (传)栎者何?郑之邑。曷为不言入于郑?末言尔。曷为末言尔?祭仲亡矣。然则曷为不言忽之出奔?言忽为君之微也。祭仲存则存矣,祭仲亡则亡矣!

  (经十五八)冬,十有一月,公会齐侯、宋公、卫侯、陈侯于侈,伐郑。

  !桓公(经十六一)十有六年

  春,正月,公会宋公、蔡侯、卫侯于曹。

  (经十六二)夏,四月,公会宋公、卫侯、陈侯、蔡侯伐郑。

  (经十六三)秋,七月,公至自伐郑。

  (经十六四)冬,城向。十有一月,卫侯朔出奔齐。

  (传)卫侯朔何以名?绝。曷为绝之?得罪于天子也。其得罪于天子奈何?见使守卫朔,而不能使卫小众,越在岱阴齐。属负兹舍,不即罪尔。

  !桓公(经十七一)十有七年

  春,正月丙辰,公会齐侯、纪侯盟于黄。

  (经十七二)二月丙午,公及邾娄仪父盟于趡。

  (经十七三)五月丙午,及齐师战于奚。

  (经十七四)六月丁丑,蔡侯封人卒。

  (经十七五)秋,八月,蔡季自陈归于蔡。癸巳,葬蔡桓侯。及宋人、卫人伐邾娄。

  (经十七六)冬,十月朔,日有食之。

  !桓公(经十八一)十有八年

  春,王正月,公会齐侯于泺。公与夫人姜氏遂如齐。

  (传)公何以不言及夫人?夫人外也。夫人外者何?内辞也,其实夫人外公也。

  (经十八二)夏,四月丙子,公薨于齐。丁酉,公之丧至自齐。

  (经十八三)秋,七月。

  (经十八四)冬,十有二月己丑,葬我君桓公。

  (传)贼未讨,何以书葬?雠在外也。雠在外则何以书葬?君子辞也。

  公羊传庄公

  !庄公(经一一)元年

  春,王正月。

  (传)公何以不言即位?《春秋》君弒,子不言即位。君弒则子何以不言即位?隐之也。孰隐?隐子也。

  (经一二)三月,夫人孙于齐。

  (传)孙者何?孙犹孙也。内讳奔谓之孙。夫人固在齐矣,其言孙于齐何?念母也。正月以存君,念母以首事。夫人何以不称姜氏?贬。曷为贬?与弒公也。其与弒公奈何?夫人谮公于齐侯,公曰:「同非吾子,齐侯之子也。」齐侯怒,与之饮酒。于其出焉,使公子彭生送之。于其乘焉,搚干而杀之。念母者,所善也,则曷为于其念母焉贬?不与念母也。

  (经一三)夏,单伯逆王姬。

  (传)单伯者何?吾大夫之命乎天子者也。何以不称使?天子召而使之也。逆之者何?使我主之也。曷为使我主之?天子嫁女乎诸侯,必使诸侯同姓者主之。诸侯嫁女于大夫,必使大夫同姓者主之。

  (经一四)筑王姬之馆于外。

  (传)何以书?讥。何讥尔?筑之,礼也;于外,非礼也。于外何以非礼?筑于外,非礼也。其筑之何以礼?主王姬者必为之改筑。主王姬者曷为必为之改筑?于路寝则不可,小寝则嫌,群公子之舍则以卑矣,其道必为之改筑者也。

  (经一五)冬,十月乙亥,陈侯林卒。王使荣叔来锡桓公命。

  (传)锡者何?赐也。命者何?加我服也。其言桓公何?追命也。

  (经一六)王姬归于齐。

  (传)何以书?我主之也。

  (经一七)齐师迁纪、郱、鄑、郚。

  (传)迁之者何?取之也。取之则曷为不言取之也?为襄公讳也。外取邑不书,此何以书?大之也。何大尔?自是始灭也。

  !庄公(经二一)二年

  春,王二月,葬陈庄公。

  (经二二)夏,公子庆父帅师伐于余丘。

  (传)于余丘者何?邾娄之邑也。曷为不系乎邾娄?国之也。曷为国之?君存焉尔。

  (经二三)秋,七月,齐王姬卒。

  (传)外夫人不卒,此何以卒?录焉尔。曷为录焉尔?我主之也。

  (经二四)冬,十有二月,夫人姜氏会齐侯于郜。乙酉,宋公冯卒。

  !庄公(经三一)三年

  春,王正月,溺会齐师伐卫。

  (传)溺者何?吾大夫之未命者也。

  (经三二)夏,四月,葬宋庄公。

  (经三三)葬桓王。

  (传)此未有言崩者,何以书葬?盖改葬也。

  (经三四)秋,纪季以酅入于齐。

  (传)纪季者何?纪侯之弟也。何以不名?贤也。何贤乎纪季?服罪也。其服罪奈何?鲁子曰:「请后五庙以存姑姊妹。」

  (经三五)冬,公次于郎。

  (传)其言公次于郎何?刺欲救纪而后不能也。

  !庄公(经四一)四年

  春,王二月,夫人姜氏飨齐侯于祝丘。三月,纪伯姬卒。

  (经四二)夏,齐侯、陈侯、郑伯遇于垂。

  (经四三)纪侯大去其国。

  (传)大去者何?灭也。孰灭之?齐灭之。曷为不言齐灭之?为襄公讳也。《春秋》为贤讳。何贤乎襄公?复雠也。何雠尔?远祖也。哀公亨乎周,纪侯谮之。以襄公之为于此焉者,事祖祢之心尽矣。尽者何?襄公将复雠乎纪,卜之曰:「师丧分焉。寡人死之,不为不吉也。」远祖者,几世乎?九世矣。九世犹可以复雠乎?虽百世可也。家亦可乎?曰:不可。国何以可?国君一体也;先君之耻犹今君之耻也,今君之耻犹先君之耻也。国君何以为一体?国君以国为体,诸侯世,故国君为一体也。今纪无罪,此非怒与?曰:非也。古者有明天子,则纪侯必诛,必无纪者。纪侯之不诛,至今有纪者,犹无明天子也。古者诸侯必有会聚之事、相朝聘之道,号辞必称先君以相接,然则齐、纪无说焉,不可以并立乎天下。故将去纪侯者,不得不去纪也。有明天子,则襄公得为若行乎?曰:不得也。不得则襄公曷为为之?上无天子,下无方伯,缘恩疾者可也。

  (经四四)六月乙丑,齐侯葬纪伯姬。

  (传)外夫人不书葬,此何以书?隐之也。何隐尔?其国亡矣,徒葬于齐尔。此复雠也,曷为葬之?灭其可灭,葬其可葬。此其为可葬奈何?复雠者非将杀之,逐之也。以为虽遇纪侯之殡,亦将葬之也。

  (经四五)秋,七月。

  (经四六)冬,公及齐人狩于郜。

  (传)公曷为与微者狩?齐侯也。齐侯则其称人何?讳与雠狩也。前此者有事矣,后此者有事矣,则曷为读于此焉讥?于雠者将壹讥而已,故择其重者而讥焉,莫重乎其与雠狩也。于雠者则曷为将壹讥而已?雠者无时,焉可与通;通则为大讥,不可胜讥,故将壹讥而已,其余从同。

  !庄公(经五一)五年

  春,王正月。

  (经五二)夏,夫人姜氏如齐师。

  (经五三)秋,倪黎来来朝。

  (传)倪者何?小邾娄也。小邾娄则曷为谓之倪?未能以其名通也。黎来者何?名也。其名何?微国也。

  (经五四)冬,公会齐人、宋人、陈人、蔡人,伐卫。

  (传)此伐卫何?纳朔也。曷为不言纳卫侯朔?辟王也。

  !庄公(经六一)六年

  春,王三月,王人子突救卫。

  (传)王人者何?微者也。子突者何?贵也。贵则其称人何?系诸人也。曷为系诸人?王人耳。

  (经六二)夏,六月,卫侯朔入于卫。

  (传)卫侯朔何以名?绝。曷为绝之?犯命也。其言入何?篡辞也。

  (经六三)秋,公至自伐卫。

  (传)曷为或言致会?或言致伐?得意致会,不得意致伐。卫侯朔入于卫,何以致伐?不敢胜天子也。

  (经六四)螟。

  (经六五)冬,齐人来归卫宝。

  (传)此卫宝也,则齐人曷为来归之?卫人归之也。卫人归之,则其称齐人何?让乎我也。其让乎我奈何?齐侯曰:「此非寡人之力,鲁侯之力也。」

  !庄公(经七一)七年

  春,夫人姜氏会齐侯于防。

  (经七二)夏,四月,辛卯夜,恒星不见,夜中星霣如雨。

  (传)恒星者何?列星也。列星不见,则何以知?夜之中星反也。如雨者何?如雨者非雨也。非雨则曷为谓之如雨?不修《春秋》曰:「雨星不及地尺而复。」君子修之曰:「星霣如雨。」何以书?记异也。

  (经七三)秋,大水。无麦、苗。

  (传)无苗,则曷为先言无麦,而后言无苗?一灾不书,待无麦,然后书无苗。何以书?记灾也。

  (经七四)冬,夫人姜氏会齐侯于谷。

  !庄公(经八一)八年

  春,王正月,师次于郎,以俟陈人、蔡人。

  (传)次不言俟,此其言俟何?托不得已也。

  (经八二)甲午,祠兵。

  (传)祠兵者何?出曰祠兵,入曰振旅,其礼一也,皆习战也。何言乎祠兵?为久也。曷为为久?吾将以甲午之日,然后祠兵于是。

  (经八三)夏,师及齐师围成,成降于齐师。

  (传)成者何?盛也。盛则曷为谓之成?讳灭同姓也。曷为不言降吾师?辟之也。

  (经八四)秋,师还。

  (传)还者何?善辞也。此灭同姓何善尔?病之也,曰:师病矣!曷为病之?非师之罪也!

  (经八五)冬,十有一月癸未,齐无知弒其君诸儿。

  !庄公(经九一)九年

  春,齐人杀无知。公及齐大夫盟于暨。

  (传)公曷为与大夫盟?齐无君也。然则何以不名?其讳与大夫盟也,使若众然。

  (经九二)夏,公伐齐纳纠。

  (传)纳者何?入辞也。其言伐之何?伐而言纳者,犹不能纳也。纠者何?公子纠也。何以不称公子?君前臣名也。

  (经九三)齐小白入于齐。

  (传)曷为以国氏?当国也。其言入何?篡辞也。

  (经九四)秋,七月丁酉,葬齐襄公。

  (经九五)八月庚申,及齐师战于干时,我师败绩。

  (传)内不言败,此其言败何?伐败也。曷为伐败?复雠也。此复雠乎大国,曷为使微者?公也。公则曷为不言公?不与公复雠也。曷为不与公复雠?复雠者在下也。

  (经九六)九月,齐人取子纠杀之。

  (传)其言取之何?内辞也;胁我,使我杀之也。其称子纠何?贵也。其贵奈何?宜为君者也。

  (经九七)冬,浚洙。

  (传)洙者何?水也。浚之者何?深之也。曷为深之?畏齐也。曷为畏齐也?辞杀子纠也。

  !庄公(经十一)十年

  春,王正月,公败齐师于长勺。

  (经十二)二月,公侵宋。

  (传)曷为或言侵?或言伐?粗者曰侵,精者曰伐。战不言伐,围不言战,入不言围,灭不言入--书其重者也。

  (经十三)三月,宋人迁宿。

  (传)迁之者何?不通也,以地迁之也。子沈子曰:「不通者,盖因而臣之也。」

  (经十四)夏,六月,齐师、宋师次于郎,公败宋师于乘丘。

  (传)其言次于郎何?伐也。伐则其言次何?齐与伐而不与战,故言伐也。我能败之,故言次也。

  (经十五)秋,九月,荆败蔡师于莘,以蔡侯献舞归。

  (传)荆者何?州名也。州不若国,国不若氏,氏不若人,人不若名,名不若字,字不若子。蔡侯献舞何以名?绝。曷为绝之?获也。曷为不言其获?不与夷狄之获中国也。

  (经十六)冬,十月,齐师灭谭,谭子奔莒。

  (传)何以不言出?国以灭矣,无所出也。

  !庄公(经十一一)十有一年

  春,王正月。

  (经十一二)夏,五月戊寅,公败宋师于鄑。

  (经十一三)秋,宋大水。

  (传)何以书?记灾也。外灾不书,此何以书?及我也。

  (经十一四)冬,王姬归于齐。

  (传)何以书?过我也。

  !庄公(经十二一)十有二年

  春,王三月,纪叔姬归于酅。

  (传)其言归于酅何?隐之也。何隐尔?其国亡矣,徒归于叔尔也。

  (经十二二)夏,四月。

  (经十二三)秋,八月甲午,宋万弒其君接及其大夫仇牧。

  (传)及者何?累也。弒君多矣,舍此无累者乎?孔父、荀息皆累也。舍孔父、荀息,无累者乎?曰:有。有则此何以书?贤也。何贤乎仇牧?仇牧可谓不畏强御矣!其不畏强御奈何?万尝与庄公战,获乎庄公;庄公归,散舍诸宫中,数月,然后归之。归反为大夫于宋。与闵公博,妇人皆在侧。万曰:「甚矣,鲁侯之淑,鲁侯之美也!天下诸侯宜为君者,唯鲁侯尔!」闵公矜此妇人,妒其言,顾曰:「此虏也!尔虏焉故,鲁侯之美恶乎至?」万怒,搏闵公,绝其脰。仇牧闻君弒,趋而至,遇之于门,手剑而叱之。万辟杀仇牧,碎其首,齿着乎门阖。仇牧可谓不畏强御矣!(经十二四)冬,十月,宋万出奔陈。!庄公(经十三一)十有三年

  春,齐侯、宋人、陈人、蔡人、邾娄人会于北杏。

  (经十三二)夏,六月,齐人灭遂。

  (经十三三)秋,七月。

  (经十三四)冬,公会齐侯,盟于柯。

  (传)何以不日?易也。其易奈何?桓之盟不日,其会不致,信之也。其不日何以始乎此?庄公将会乎桓,曹子进曰:「君之意何如?」庄公曰:「寡人之生,则不若死矣!」曹子曰:「然则君请当其君,臣请当其臣。」庄公曰:「诺。」于是会乎桓。庄公升坛,曹子手剑而从之。管子进曰:「君何求乎?」曹子曰:「城坏压竟,君不图与?」管子曰:「然则君将何求?」曹子曰:「愿请汶阳之田。」管子顾曰:「君许诺。」桓公曰:「诺。」曹子请盟,桓公下与之盟。已盟,曹子摽剑而去之。要盟可犯,而桓公不欺;曹子可雠,而桓公不怨。桓公之信着乎天下,自柯之盟始焉。

  !庄公(经十四一)十有四年

  春,齐人、陈人、曹人伐宋。

  (经十四二)夏,单伯会伐宋。

  (传)其言会伐宋何?后会也。

  (经十四三)秋,七月,荆入蔡。

  (经十四四)冬,单伯会齐侯、宋公、卫侯、郑伯于鄄。

  !庄公(经十五一)十有五年

  春,齐侯、宋公、陈侯、卫侯、郑伯会于鄄。

  (经十五二)夏,夫人姜氏如齐。

  (经十五三)秋,宋人、齐人、邾娄人伐儿。郑人侵宋。

  (经十五四)冬,十月。

  !庄公(经十六一)十有六年

  春,王正月。

  (经十六二)夏,宋人、齐人、卫人伐郑。

  (经十六三)荆伐郑。

  (经十六四)冬,十有二月,公会齐侯、宋公、陈侯、卫侯、郑伯、许男、曹伯、滑伯、滕子,同盟于幽。

  (传)同盟者何?同欲也。

  (经十六五)邾娄子克卒。

  !庄公(经十七一)十有七年

  春,齐人执郑瞻。

  (传)郑瞻者何?郑之微者也。此郑之微者,何言乎齐人执之?书甚佞也。

  (经十七二)夏,齐人瀸于遂。

  (传)瀸者何?瀸,积也,众杀戍者也。

  (经十七三)秋,郑瞻自齐逃来。

  (传)何以书?书甚佞也。曰:佞人来矣!佞人来矣!

  (经十七四)冬,多糜。

  (传)何以书?记异也。

  !庄公(经十八一)十有八年

  春,王三月,日有食之。

  (经十八二)夏,公追戎于济西。

  (传)此未有言伐者,其言追何?大其为中国追也。此未有伐中国者,则其言为中国追何?大其未至而豫御之也。其言于济西何?大之也。

  (经十八三)秋,有蜮。

  (传)何以书?记异也。

  (经十八四)冬,十月。

  !庄公(经十九一)十有九年

  春,王正月。

  (经十九二)夏,四月。

  (经十九三)秋,公子结媵陈人之妇于鄄,遂及齐侯、宋公盟。

  (传)媵者何?诸侯娶一国,则贰国往媵之,以侄娣从。侄者何?兄之子也。娣者何?弟也。诸侯壹聘九女,诸侯不再娶。媵不书,此何以书?为其有遂事书。大夫无遂事,此其言遂何?聘礼:大夫受命不受辞,出竟有可以安社稷、利国家者,则专之可也。

  (经十九四)夫人姜氏如莒。

  (经十九五)冬,齐人、宋人、陈人伐我西鄙。

  !庄公(经二十一)二十年

  春,王二月,夫人姜氏如莒。

  (经二十二)夏,齐大灾。

  (传)大灾者何?大瘠也。大瘠者何?疠也。何以书?记灾也。外灾不书,此何以书?及我也。

  (经二十三)秋,七月。

  (经二十四)冬,齐人伐戎。

  !庄公(经二一一)二十有一年

  春,王正月。

  (经二一二)夏,五月辛酉,郑伯突卒。

  (经二一三)秋,七月戊戌,夫人姜氏薨。

  (经二一四)冬,十有二月,葬郑厉公。

  !庄公(经二二一)二十有二年

  春,王正月,肆大省。

  (传)肆者何?跌也。大省者何?灾省也。肆大省,何以书?讥。何讥尔?讥始忌省也。

  (经二二二)癸丑,葬我小君文姜。

  (传)文姜者何?庄公之母也。

  (经二二三)陈人杀其公子御寇。

  (经二二四)夏,五月。

  (经二二五)秋,七月丙申,及齐高傒盟于防。

  (传)齐高傒者何?贵大夫也。曷为就吾微者而盟?公也。公则曷为不言公?讳与大夫盟也。

  (经二二六)冬,公如齐纳币。

  (传)纳币不书,此何以书?讥。何讥尔?亲纳币,非礼也。

  !庄公(经二三一)二十有三年

  春,公至自齐。

  (传)桓之盟不日,其会不致,信之也;此之桓国何以致?危之也。何危尔?公一陈佗也。

  (经二三二)蔡叔来聘。

  (经二三三)夏,公如齐观社。

  (传)何以书?讥。何讥尔?诸侯越竟观社,非礼也。

  (经二三四)公至自齐。

  (经二三五)荆人来聘。

  (传)荆何以称人?始能聘也。

  (经二三六)公及齐侯遇于谷。萧叔朝公。

  (传)其言朝公何?公在外也。

  (经二三七)秋,丹桓宫楹。

  (传)何以书?讥。何讥尔?丹桓宫楹,非礼也。

  (经二三八)冬,十有一月,曹伯射姑卒。

  (经二三九)十有二月甲寅,公会齐侯盟于扈。

  (传)桓之盟不日,此何以日?危之也。何危尔?我贰也。鲁子曰:「我贰者,非彼然,我然也。」

  !庄公(经二四一)二十有四年

  春,王三月,刻桓宫桷。

  (传)何以书?讥。何讥尔?刻桓宫桷,非礼也。

  (经二四二)葬曹庄公。

  (经二四三)夏,公如齐逆女。

  (传)何以书?亲迎礼也。

  (经二四四)秋,公至自齐。八月丁丑,夫人姜氏入。

  (传)其言入何?难也。其言日何?难也。其难奈何?夫人不偻不可使入;与公有所约,然后入。

  (经二四五)戊寅,大夫、宗妇觌用币。

  (传)宗妇者何?大夫之妻也。觌者何?见也。用者何?用者不宜用也;见用币,非礼也。然则曷用?枣、栗云乎!腶、修云乎!

  (经二四六)大水。

  (经二四七)冬,戎侵曹,曹羁出奔陈。

  (传)曹羁者何?曹大夫也。曹无大夫,此何以书?贤也。何贤乎曹羁?戎将侵曹,曹羁谏曰:「戎众以无义,君请勿自敌也。」曹伯曰:「不可。」三谏,不从,遂去之,故君子以为得君臣之义也。

  (经二四八)赤归于曹郭公。

  (传)赤者何?曹无赤者,盖郭公也。郭公者何?失地之君也。

  !庄公(经二五一)二十有五年

  春,陈侯使女叔来聘。

  (经二五二)夏,五月癸丑,卫侯朔卒。

  (经二五三)六月辛未朔,日有食之,鼓、用牲于社。

  (传)食之则曷为鼓、用牲于社?求乎阴之道也,以朱丝营社,或曰胁之,或曰闇之,恐人犯之,故营之。

  (经二五四)伯姬归于杞。

  (经二五五)秋,大水,鼓、用牲于社于门。

  (传)其言于社于门何?于社,礼也;于门,非礼也。

  (经二五六)冬,公子友如陈。

  !庄公(经二六一)二十有六年

  春,公伐戎。

  (经二六二)夏,公至自伐戎。

  (经二六三)曹杀其大夫。

  (传)何以不名?众也。曷为众杀之?不死于曹君者也。君死乎位曰灭,曷为不言其灭?为曹羁讳也。此盖战也,何以不言战?为曹羁讳也。

  (经二六四)秋,公会宋人、齐人伐徐。

  (经二六五)冬,十有二月癸亥朔,日有食之。

  !庄公(经二七一)二十有七年

  春,公会齐伯姬于洮。

  (经二七二)夏,六月,公会齐侯、宋公、陈侯、郑伯,同盟于幽。

  (经二七三)秋,公子友如陈,葬原仲。

  (传)原仲者何?陈大夫也。大夫不书葬,此何以书?通乎季子之私行也。何通乎季子之私行?辟内难也。君子辟内难而不辟外难。内难者何?公子庆父、公子牙、公子友皆庄公之母弟也。公子庆父、公子牙通乎夫人以胁公,季子起而治之,则不得与于国政,坐而视之则亲亲。因不忍见也,故于是复请至于陈,而葬原仲也。

  (经二七四)冬,杞伯姬来。

  (传)其言来何?直来曰来,大归曰来归。

  (经二七五)莒庆来逆叔姬。

  (传)莒庆者何?莒大夫也。莒无大夫,此何以书?讥。何讥尔?大夫越竟逆女,非礼也。

  (经二七六)杞伯来朝。

  (经二七七)公会齐侯于城濮。

  !庄公(经二八一)二十有八年

  春,王三月甲寅,齐人伐卫,卫人及齐人战,卫人败绩。

  (传)伐不日,此何以日?至之日也。战不言伐,此其言伐何?至之日也。《春秋》伐者为客,伐者为主,故使卫主之也。曷为使卫主之?卫未有罪尔。败者称师,卫何以不称师?未得乎师也。

  (经二八二)夏,四月丁未,邾娄子琐卒。

  (经二八三)秋,荆伐郑,公会齐人、宋人、邾娄人救郑。

  (经二八四)冬,筑微。大无麦、禾。

  (传)既见无麦、禾矣,曷为先言筑微,而后言无麦、禾?讳以凶年造邑也。

  (经二八五)臧孙辰告籴于齐。

  (传)告籴者何?请籴也。何以不称使?以为臧孙辰之私行也。曷为以为臧孙辰之私行?君子之为国也,必有三年之委;一年不熟,告籴,讥也。

  !庄公(经二九一)二十有九年

  春,新延厩。

  (传)新延厩者何?修旧也。修旧不书,此何以书?讥。何讥尔?凶年不修。

  (经二九二)夏,郑人侵许。

  (经二九三)秋,有蜚。

  (传)何以书?记异也。

  (经二九四)冬,十有二月,纪叔姬卒。

  (经二九五)城诸及防。

  !庄公(经三十一)三十年

  春,王正月。(经三十二)夏,师次于成。

  (经三十三)秋,七月,齐人降鄣。

  (传)鄣者何?纪之遗邑也。降之者何?取之也。取之则曷为不言取之?为桓公讳也。外取邑不书,此何以书?尽也。

  (经三十四)八月癸亥,葬纪叔姬。

  (传)外夫人不书葬,此何以书?隐之也。何隐尔?其国亡矣,徒葬乎叔尔。

  (经三十五)九月庚午朔,日有食之,鼓、用牲于社。

  (经三十六)冬,公及齐侯遇于鲁济。

  (经三十七)齐人伐山戎。

  (传)此齐侯也,其称人何?贬。曷为贬?子司马子曰:「盖以操之为已蹙以矣!」此盖战也,何以不言战?《春秋》敌者言战,桓公之与戎狄,驱之尔。

  !庄公(经三一一)三十有一年

  春,筑台于郎。

  (传)何以书?讥。何讥尔?临民之所漱浣也。

  (经三一二)夏,四月,薛伯卒。

  (经三一三)筑台于薛。

  (传)何以书?讥。何讥尔?远也。

  (经三一四)六月,齐侯来献戎捷。

  (传)齐,大国也,曷为亲来献戎捷?威我也。其威我奈何?旗获而过我也。

  (经三一五)秋,筑台于秦。

  (传)何以书?讥。何讥尔?临国也。

  (经三一六)冬,不雨。

  (传)何以书?记异也。

  !庄公(经三二一)三十有二年

  春,城小谷。

  (经三二二)夏,宋公、齐侯遇于梁丘。

  (经三二三)秋,七月癸巳,公子牙卒。

  (传)何以不称弟?杀也。杀则曷为不言刺?为季子讳杀也。曷为为季子讳杀?季子之遏恶也,不以为国狱,缘季子之心而为之讳。季子之遏恶奈何?庄公并将死,以病召季子,季子至而授之以国政,曰:「寡人即不起此病,吾将焉致乎鲁国?」季子曰:「般也存,君何忧焉?」公曰:「庸得若是乎?牙谓我曰:『鲁一生一及,君已知之矣。』庆父也存。」季子曰:「夫何敢?是将为乱乎!夫何敢!」俄而,牙弒械成。季子和药而饮之,曰:「公子从吾言而饮此,则必可以无为天下戮笑,必有后乎鲁国。不从吾言而不饮此,则必为天下戮笑,必无后乎鲁国。」于是从其言而饮之,饮之无傫氏,至乎王堤而死。公子牙今将尔,辞曷为与亲弒者同?君亲无将,将而诛焉。然则善之与?曰:然。杀世子母弟,直称君者,甚之也。季子杀母兄,何善尔?诛不得辟兄,君臣之义也。然则曷为不直诛,而酖之?行诸乎兄,隐而逃之,使托若以疾死然,亲亲之道也。

  (经三二四)八月癸亥,公薨于路寝。

  (传)路寝者何?正寝也。

  (经三二五)冬,十月乙未,子般卒。

  (传)子卒云子卒,此其称子般卒何?君存称世子,君薨称子某,既葬称子,逾年称公。子般卒,何以不书葬?未逾年之君也。有子则庙,庙则书葬;无子不庙,不庙则不书葬。

  (经三二六)公子庆父如齐。狄伐邢。

  公羊传闵公

  !闵公(经一一)元年

  春,王正月。

  (传)公何以不言即位?继弒君不言即位。孰继?继子般也。孰弒子般?庆父也。杀公子牙,今将尔,季子不免。庆父弒君,何以不诛?将而不免遏恶也。既而不可及,因狱有所归,不探其情而诛焉,亲亲之道也。恶乎归狱?归狱仆人邓扈乐。曷为归狱仆人邓扈乐?庄公存之时,乐曾淫于宫中,子般执而鞭之。庄公死,庆父谓乐曰:「般之辱尔,国人莫不知,盍弒之矣?」使弒子般,然后诛邓扈乐而归狱焉,季子至而不变也。

  (经一二)齐人救邢。夏,六月辛酉,葬我君庄公。

  (经一三)秋,八月,公及齐侯盟于洛姑。季子来归。

  (传)其称季子何?贤也。其言来归何?喜之也。

  (经一四)冬,齐仲孙来。

  (传)齐仲孙者何?公子庆父也。公子庆父,则曷为谓之齐仲孙?系之齐也。曷为系之齐?外之也。曷为外之?春秋为尊者讳,为亲者讳,为贤者讳。子女子曰:「以『春秋』为《春秋》,齐无仲孙,其诸吾仲孙与?」

  !闵公(经二一)二年

  春,王正月,齐人迁阳。

  (经二二)夏,五月乙酉,吉禘于庄公。

  (传)其言吉何?言吉者,未可以吉也。曷为未可以吉?未三年也。三年矣,曷为谓之未三年?三年之丧,实以二十五月。其言于庄公何?未可以称宫庙也。曷为未可以称宫庙?在三年之中矣。吉禘于庄公,何以书?讥。何讥尔?讥始不三年也。

  (经二三)秋,八月辛丑,公薨。

  (传)公薨何以不地?隐之也。何隐尔?弒也。孰弒之?庆父也。杀公子牙,今将尔,季子不免。庆父弒二君,何以不诛?将而不免,遏恶也;既而不可及,缓追逸贼,亲亲之道也。

  (经二四)九月,夫人姜氏孙于邾娄。

  (经二五)公子庆父出奔莒。

  (经二六)冬,齐高子来盟。

  (传)高子者何?齐大夫也。何以不称使?我无君也。然则何以不名?喜之也。何喜尔?正我也。其正我奈何?庄公死,子般弒,闵公弒,比三君死,旷年无君。设以齐取鲁,曾不兴师,徒以言而已矣。桓公使高子将南阳之甲,立僖公而城鲁,或曰自鹿门至于争门者是也,或曰自争门至于吏门者是也。鲁人至今以为美谈,曰:「犹望高子也。」

  (经二七)十有二月,狄入卫。郑弃其师。

  (传)郑弃其师者何?恶其将也。郑伯恶高克,使之将逐而不纳,弃师之道也。

  公羊传僖公

  !僖公(经一一)元年

  春,王正月。

  (传)公何以不言即位?继弒君,子不言即位。此非子也,其称子何?臣、子一例也。

  (经一二)齐师、宋师、曹师次于聂北,救邢。

  (传)救不言次,此其言次何?不及事也。不及事者何?邢已亡矣。孰亡之?盖狄灭之。曷为不言狄灭之?为桓公讳也。曷为为桓公讳?上无天子,下无方伯,天下诸侯有相灭亡者,桓公不能救,则桓公耻之。曷为先言次而后言救?君也。君则其称师何?不与诸侯专封也。曷为不与?实与而文不与。文曷为不与?诸侯之义不得专封也。诸侯之义不得专封,则其曰实与之何?上无天子,下无方伯,天下诸侯有相灭亡者,力能救之,则救之可也。

  (经一三)夏,六月,邢迁于陈仪。

  (传)迁者何?其意也。迁之者何?非其意也。

  (经一四)齐师、宋师、曹师城邢。

  (传)此一事也,曷为复言齐师、宋师、曹师?不复言师,则无以知其为一事也。

  (经一五)秋,七月戊辰,夫人姜氏薨于夷,齐人以归。

  (传)夷者何?齐地也。齐地,则其言齐人以归何?夫人薨于夷,则齐人以归。夫人薨于夷,则齐人曷为以归?桓公召而缢杀之。

  (经一六)楚人伐郑。八月,公会齐侯、宋公、郑伯、曹伯、邾娄人于朾。九月,公败邾娄师于缨。

  (经一七)冬,十月壬午,公子友帅师,败莒师于犁,获莒挐。

  (传)莒挐者何?莒大夫也。莒无大夫,此何以书?大季子之获也。何大乎季子之获?季子治内难以正,御外难以正。其御外难以正奈何?公子庆父弒闵公,走而之莒,莒人逐之,将由乎齐,齐人不纳,却反舍于汶水之上,使公子奚斯入请。季子曰:「公子不可以入,入则杀矣!」奚斯不忍反命于庆父,自南涘,北面而哭。庆父闻之曰:「嘻!此奚斯之声也,诺已。」曰:「吾不得入矣!」于是抗辀经而死。莒人闻之曰:「吾已得子之贼矣!」以求赂乎鲁。鲁人不与,为是兴师而伐鲁,季子待之以偏战。

  (经一八)十有二月丁巳,夫人氏之丧至自齐。

  (传)夫人何以不称姜氏?贬。曷为贬?与弒公也。然则曷为不于弒焉贬?贬必于其重者,莫重乎其以丧至也。

  !僖公(经二一)二年

  春,王正月,城楚丘。

  (传)孰城之?城卫也。曷为不言城卫?灭也。孰灭之?盖狄灭之。曷为不言狄灭之?为桓公讳也。曷为为桓公讳?上无天子,下无方伯,天下诸侯有相灭亡者,桓公不能救,则桓公耻之也。然则孰城之?桓公城之。曷为不言桓公城之?不与诸侯专封也。曷为不与?实与而文不与。文曷为不与?诸侯之义,不得专封。诸侯之义不得专封,则其曰实与之何?上无天子,下无方伯,天下诸侯有相灭亡者,力能救之,则救之可也。

  (经二二)夏,五月辛巳,葬我小君哀姜。

  (传)哀姜者何?庄公之夫人也。

  (经二三)虞师、晋师灭夏阳。

  (传)虞,微国也,曷为序乎大国之上?使虞首恶也。曷为使虞首恶?虞受赂,假灭国者道,以取亡焉。其受赂奈何?献公朝诸大夫而问焉,曰:「寡人夜者寝而不寐,其意也何?」诸大夫有进对者曰:「寝不安与?其诸侍御有不在侧者与?」献公不应。荀息进曰:「虞郭见与?」献公揖而进之,遂与之入而谋曰:「吾欲攻郭,则虞救之;攻虞,则郭救之,如之何?愿与子虑之。」荀息对曰:「君若用臣之谋,则今日取郭,而明日取虞尔,君何忧焉?」献公曰:「然则奈何?」荀息曰:「请以屈产之乘与垂棘之白璧,往必可得也。则宝出之内藏,藏之外府;马出之内厩,系之外厩尔,君何丧焉?」献公曰:「诺。虽然,宫之奇存焉,如之何?」荀息曰:「宫之奇知则知矣!虽然,虞公贪而好宝,见宝必不从其言,请终以往。」于是终以往,虞公见宝许诺。宫之奇果谏:「记曰:『唇亡则齿寒。』虞、郭之相救,非相为赐,则晋今日取郭,而明日虞从而亡尔。君请勿许也。」虞公不从其言,终假之道以取郭。还,四年,反取虞。虞公抱宝牵马而至。荀息见曰:「臣之谋何如?」献公曰:「子之谋则已行矣,宝则吾宝也,虽然,吾马之齿亦已长矣!」盖戏之也。夏阳者何?郭之邑也。曷为不系于郭?国之也。曷为国之?君存焉尔。

  (经二四)秋,九月,齐侯、宋公、江人、黄人盟于贯泽。(传)江人、黄人者何?远国之辞也。远国至矣,则中国曷为独言齐、宋至尔?大国言齐、宋,远国言江、黄,则以其余为莫敢不至也。

  (经二五)冬,十月,不雨。

  (传)何以书?记异也。(经二六)楚人侵郑。

  !僖公(经三一)三年

  春,王正月,不雨。

  (经三二)夏,四月,不雨。

  (传)何以书?记异也。

  (经三三)徐人取舒。

  (传)其言取之何?易也。

  (经三四)六月,雨。

  (传)其言六月雨何?上雨而不甚也。

  (经三五)秋,齐侯、宋公、江人、黄人会于阳谷。

  (传)此大会也,曷为末言尔?桓公曰:「无障谷,无贮粟,无易树子,无以妾为妻。」

  (经三六)冬,公子友如齐莅盟。

  (传)莅盟者何?往盟乎彼也。其言来盟者何?来盟于我也。(经三七)楚人伐郑。

  !僖公(经四一)四年

  春,王正月,公会齐侯、宋公、陈侯、卫侯、郑伯、许男、曹伯侵蔡,蔡溃。

  (传)溃者何?下叛上也。国曰溃,邑曰叛。

  (经四二)遂伐楚,次于陉。

  (传)其言次于陉何?有俟也。孰俟?俟屈完也。

  (经四三)夏,许男新臣卒。楚屈完来盟于师,盟于召陵。

  (传)屈完者何?楚大夫也。何以不称使?尊屈完也。曷为尊屈完?以当桓公也。其言盟于师、盟于召陵何?师在召陵也。师在召陵,则曷为再言盟?喜服楚也。何言乎喜服楚?楚有王者则后服,无王者则先叛。夷狄也,而亟病中国,南夷与北狄交。中国不绝若线,桓公救中国,而攘夷狄,卒帖荆,以此为王者之事也。其言来何?与桓为主也。前此者有事矣,后此者有事矣,则曷为独于此焉?与桓公为主,序绩也。

  (经四四)齐人执陈袁涛涂。

  (传)涛涂之罪何?辟军之道也。其辟军之道奈何?涛涂谓桓公曰:「君既服南夷矣,何不还师滨海而东,服东夷且归?」桓公曰:「诺。」于是还师滨海而东,大陷于沛泽之中。顾而执涛涂。执者曷为或称侯?或称人?称侯而执者,伯讨也。称人而执者,非伯讨也。此执有罪,何以不得为伯讨?古者周公东征则西国怨,西征则东国怨。桓公假涂于陈而伐楚,则陈人不欲其反由己者,师不正故也。不修其师而执涛涂,古人之讨,则不然也。

  (经四五)秋,及江人、黄人伐陈。八月,公至自伐楚。

  (传)楚已服矣,何以致伐楚?叛盟也。

  (经四六)葬许缪公。冬,十有二月,公孙慈帅师会齐人、宋人、卫人、郑人、许人、曹人侵陈。

  !僖公(经五一)五年

  春,晋侯杀其世子申生。

  (传)曷为直称晋侯以杀?杀世子母弟直称君者,甚之也。

  (经五二)杞伯姬来朝其子。

  (传)其言来朝其子何?内辞也,与其子俱来朝也。

  (经五三)夏,公孙慈如牟。公及齐侯、宋公、陈侯、卫侯、郑伯、许男、曹伯会王世子于首戴。

  (传)曷为殊会王世子?世子贵也。世子,犹世世子也。

  (经五四)秋,八月,诸侯盟于首戴。

  (传)诸侯何以不序?一事而再见者,前目而后凡也。

  (经五五)郑伯逃归不盟。

  (传)其言逃归不盟者何?不可使盟也。不可使盟,则其言逃归何?鲁子曰:「盖不以寡犯众也。」

  (经五六)楚人灭弦。弦子奔黄。

  (经五七)九月戊申朔,日有食之。

  (经五八)冬,晋人执虞公。

  (传)虞已灭矣,其言执之何?不与灭也。曷为不与灭?灭者亡国之善辞也。灭者,上下之同力者也。

  !僖公(经六一)六年

  春,王正月。

  (经六二)夏,公会齐侯、宋公、陈侯、卫侯、曹伯伐郑,围新城。

  (传)邑不言围,此其言围何?强也。

  (经六三)秋,楚人围许,诸侯遂救许。

  (经六四)冬,公至自伐郑。

  !僖公(经七一)七年

  春,齐人伐郑。

  (经七二)夏,小邾娄子来朝。郑杀其大夫申侯。

  (传)其称国以杀何?称国以杀者,君杀大夫之辞也。

  (经七三)秋,七月,公会齐侯、宋公、陈世子款、郑世子华,盟于宁毋。

  (经七四)曹伯般卒。

  (经七五)公子友如齐。

  (经七六)冬,葬曹昭公。

  !僖公(经八一)八年

  春,王正月,公会王人、齐侯、宋公、卫侯、许男、曹伯、陈世子款、郑世子华,盟于洮。

  (传)王人者何?微者也。曷为序乎诸侯之上?先王命也。

  (经八二)郑伯乞盟。

  (传)乞盟者何?处其所而请与也。其处其所而请与奈何?盖酌之也。

  (经八三)夏,狄伐晋。

  (经八四)秋,七月,禘于太庙,用致夫人。

  (传)用者何?用者不宜用也。致者何?致者不宜致也。禘用致夫人,非礼也。夫人何以不称姜氏?贬。曷为贬?讥以妾为妻也。其言以妾为妻奈何?盖胁于齐媵女之先至者也。

  (经八五)冬,十有二月丁未,天王崩。

  !僖公(经九一)九年

  春,王三月丁丑,宋公御说卒。

  (传)何以不书葬?为襄公讳也。

  (经九二)夏,公会宰周公、齐侯、宋子、卫侯、郑伯、许男、曹伯于葵丘。

  (传)宰周公者何?天子之为政者也。

  (经九三)秋,七月乙酉,伯姬卒。

  (传)此未适人,何以卒?许嫁矣。妇人许嫁,字而笄之,死则以成人之丧治之。

  (经九四)九月戊辰,诸侯盟于葵丘。

  (传)桓之盟不日,此何以日?危之也。何危尔?贯泽之会,桓公有忧中国之心,不召而至者,江人、黄人也。葵丘之会,桓公震而矜之,叛者九国。震之者何?犹曰振振然。矜之者何?犹曰莫若我也。

  (经九五)甲戌,晋侯诡诸卒。冬,晋里克弒其君之子奚齐。

  (传)此未逾年之君,其言弒其君之子奚齐何?杀未逾年君之号也。

  !僖公(经十一)十年

  春,王正月,公如齐。狄灭温。温子奔卫。

  (经十二)晋里克弒其君卓子及其大夫荀息。

  (传)及者何?累也。弒君多矣,舍此无累者乎?曰:有,孔父、仇牧皆累也。舍孔父、仇牧无累者乎?曰:有。有则此何以书?贤也。何贤乎荀息?荀息可谓不食其言矣。其不食其言奈何?奚齐、卓子者,骊姬之子也,荀息傅焉。骊姬者,国色也。献公爱之甚,欲立其子,于是杀世子申生。申生者,里克傅之。献公病将死,谓荀息曰:「士何如则可谓之信矣?」荀息对曰:「使死者反生,生者不愧乎其言,则可谓信矣。」献公死,奚齐立。里克谓荀息曰:「君杀正而立不正,废长而立幼,如之何?愿与子虑之。」荀息曰:「君尝讯臣矣,臣对曰:『使死者反生,生者不愧乎其言,则可谓信矣。』」里克知其不可与谋,退,弒奚齐。荀息立卓子,里克弒卓子,荀息死之。荀息可谓不食其言矣!

  (经十三)夏,齐侯、许男伐北戎。晋杀其大夫里克。

  (传)里克弒二君,则曷为不以讨贼之辞言之?惠公之大夫也。然则孰立惠公?里克也。里克弒奚齐、卓子,逆惠公而入。里克立惠公,则惠公曷为杀之?惠公曰:「尔既杀夫二孺子矣,又将图寡人,为尔君者,不亦病乎?」于是杀之。然则曷为不言惠公之入?晋之不言出入者,踊为文公讳也。齐小白入于齐,则曷为不为桓公讳?桓公之享国也长,美见乎天下,故不为之讳本恶也。文公之享国也短,美未见乎天下,故为之讳本恶也。

  (经十四)秋,七月。

  (经十五)冬,大雨雹。

  (传)何以书?记异也。

  !僖公(经十一一)十有一年

  春,晋杀其大夫丕郑父。

  (经十一二)夏,公及夫人姜氏会齐侯于阳谷。

  (经十一三)秋,八月,大雩。

  (经十一四)冬,楚人伐黄。

  !僖公(经十二一)十有二年

  春,王三月庚午,日有食之。

  (经十二二)夏,楚人灭黄。

  (经十二三)秋,七月。

  (经十二四)冬,十有二月丁丑,陈侯处臼卒。

  !僖公(经十三一)十有三年

  春,狄侵卫。

  (经十三二)夏,四月,葬陈宣公。公会齐侯、宋公、陈侯、卫侯、郑伯、许男、曹伯于咸。

  (经十三三)秋,九月,大雩。

  (经十三四)冬,公子友如齐。

  !僖公(经十四一)十有四年

  春,诸侯城缘陵。

  (传)孰城之?城杞也。曷为城杞?灭也。孰灭之?盖徐、莒胁之。曷为不言徐、莒胁之?为桓公讳也。曷为为桓公讳?上无天子,下无方伯,天下诸侯有相灭亡者,桓公不能救,则桓公耻之也。然则孰城之?桓公城之。曷为不言桓公城之?不与诸侯专封也。曷为不与?实与而文不与。文曷为不与?诸侯之义不得专封也。诸侯之义不得专封,则其曰实与之何?上无天子,下无方伯,天下诸侯有相灭亡者,力能救之,则救之可也。

  (经十四二)夏,六月,季姬及鄫子遇于防,使鄫子来朝。

  (传)鄫子曷为使乎季姬来朝?内辞也。非使来朝,使来请己也。

  (经十四三)秋,八月辛卯,沙鹿崩。

  (传)沙鹿者何?河上之邑也。此邑也,其言崩何?袭邑也。沙鹿崩,何以书?记异也。外异不书,此何以书?为天下记异也。

  (经十四四)狄侵郑。

  (经十四五)冬,蔡侯肸卒。

  !僖公(经十五一)十有五年

  春,王正月,公如齐。

  (经十五二)楚人伐徐。

  (经十五三)三月,公会齐侯、宋公、陈侯、郑伯、许男、曹伯盟于牡丘,遂次于匡。

  (经十五四)公孙敖率师及诸侯之大夫救徐。

  (经十五五)夏,五月,日有食之。

  (经十五六)秋,七月,齐师、曹师伐厉。

  (经十五七)八月,螽。

  (经十五八)九月,公至自会。

  (传)桓公之会不致,此何以致?久也。

  (经十五九)季姬归于鄫。己卯,晦,震夷伯之庙。

  (传)晦者何?冥也。震之者何?雷电击夷伯之庙者也。夷伯者,曷为者也?季氏之孚也。季氏之孚则微者,其称夷伯何?大之也。曷为大之?天戒之,故大之也。何以书?记异也。

  (经十五十)冬,宋人伐曹。楚人败徐于娄林。

  (经十五十一)十有一月,壬戌,晋侯及秦伯战于韩,获晋侯。

  (传)此偏战也,何以不言师败绩?君获,不言师败绩也。

  !僖公(经十六一)十有六年

  春,王正月戊申朔,陨石于宋五。是月,六鹢退飞,过宋都。

  (传)曷为先言陨而后言石?陨石记闻,闻其嗔然,视之则石,察之则五。是月者何?仅逮是月也。何以不日?晦日也。晦则何以不言晦?《春秋》不书晦也。朔有事则书,晦虽有事不书。曷为先言六而后言鹢?六鹢退飞,记见也,视之则六,察之则鹢,徐而察之则退飞。五石六鹢,何以书?记异也。外异不书,此何以书?为王者之后,记异也。

  (经十六二)三月壬申,公子季友卒。

  (传)其称季友何?贤也。

  (经十六三)夏,四月丙申,鄫季姬卒。

  (经十六四)秋,七月甲子,公孙慈卒。

  (经十六五)冬,十有二月,公会齐侯、宋公、陈侯、卫侯、郑伯、许男、邢侯、曹伯于淮。

  !僖公(经十七一)十有七年

  春,齐人、徐人伐英氏。

  (经十七二)夏,灭项。

  (传)孰灭之?齐灭之。曷为不言齐灭之?为桓公讳也。《春秋》为贤者讳。此灭人之国,何贤尔?君子之恶恶也疾始,善善也乐终。桓公尝有继绝,存亡之功,故君子为之讳也。

  (经十七三)秋,夫人姜氏会齐于卞。

  (经十七四)九月,公至自会。

  (经十七五)十有二月乙亥,齐侯小白卒。

  !僖公(经十八一)十有八年

  春,王正月,宋公会曹伯、卫人、邾娄人伐齐。

  (经十八二)夏,师救齐。五月戊寅,宋师及齐师战于甗,齐师败绩。

  (传)战不言伐,此其言伐何?宋公与伐而不与战,故言伐。《春秋》伐者为客,伐者为主。曷为不使齐主之?与襄公之征齐也。曷为与襄公之征齐?桓公死,竖刁、易牙争权不葬,为是故伐之也。

  (经十八三)狄救齐。

  (经十八四)秋,八月丁亥,葬齐桓公。

  (经十八五)冬,邢人、狄人伐卫。

  !僖公(经十九一)十有九年

  春,王三月,宋人执滕子婴齐。

  (经十九二)夏,六月,宋人、曹人、邾娄人盟于曹南。鄫子会盟于邾娄。

  (传)其言会盟何?后会也。

  (经十九三)己酉,邾娄人执鄫子用之。

  (传)恶乎用之?用之社也。其用之社奈何?盖叩其鼻以血社也。

  (经十九四)秋,宋人围曹。

  (经十九五)卫人伐邢。

  (经十九六)冬,公会陈人、蔡人、楚人、郑人盟于齐。梁亡。

  (传)此未有伐者,其言梁亡何?自亡也。其自亡奈何?鱼烂而亡也。

  !僖公(经二十一)二十年

  春,新作南门。

  (传)何以书?讥。何讥尔?门有古常也。

  (经二十二)夏,郜子来朝。

  (传)郜子者何?失地之君也。何以不名?兄弟辞也。

  (经二十三)五月乙巳,西宫灾。

  (传)西宫者何?小寝也。小寝则曷为谓之西宫?有西宫则有东宫矣。鲁子曰:「以有西宫,亦知诸侯之有三宫也。」西宫灾,何以书?记灾也。

  (经二十四)郑人入滑。

  (经二十五)秋,齐人、狄人盟于邢。

  (经二十六)冬,楚人伐随。

  !僖公(经二一一)二十有一年

  春,狄侵卫。宋人、齐人、楚人盟于鹿上。

  (经二一二)夏,大旱。

  (传)何以书?记灾也。

  (经二一三)秋,宋公、楚子、陈侯、蔡侯、郑伯、许男、曹伯会于霍,执宋公以伐宋。

  (传)孰执之?楚子执之。曷为不言楚子执之?不与夷狄之执中国也。

  (经二一四)冬,公伐邾娄。

  (经二一五)楚人使宜申来献捷。

  (传)此楚子也,其称人何?贬。曷为贬?为执宋公贬。曷为为执宋公贬?宋公与楚子期以乘车之会,公子目夷谏曰:「楚,夷国也,强而无义,请君以兵车之会往。」宋公曰:「不可。吾与之约以乘车之会,自我为之,自我堕之,曰不可。」终以乘车之会往,楚人果伏兵车,执宋公以伐宋。宋公谓公子目夷曰:「子归守国矣。国,子之国也。吾不从子之言,以至乎此。」公子目夷复曰:「君虽不言国,国固臣之国也。」于是归设守械而守国。楚人谓宋人曰:「子不与我国,吾将杀子君矣。」宋人应之曰:「吾赖社稷之神灵,吾国已有君矣。」楚人知虽杀宋公,犹不得宋国,于是释宋公。宋公释乎执,走之卫。公子目夷复曰:「国为君守之,君曷为不入?」然后逆襄公归。恶乎捷?捷乎宋。曷为不言捷乎宋?为襄公讳也。此围辞也,曷为不言其围?为公子目夷讳也。

  (经二一六)十有二月癸丑,公会诸侯盟于薄。释宋公。

  (传)执未有言释之者,此其言释之何?公与为尔也。公与为尔奈何?公与议尔也。

  !僖公(经二二一)二十有二年

  春,公伐邾娄,取须朐。

  (经二二二)夏,宋公、卫侯、许男、滕子伐郑。

  (经二二三)秋,八月丁未,及邾娄人战于升陉。

  (经二二四)冬,十有一月己巳朔,宋公及楚人战于泓,宋师败绩。

  (传)偏战者日尔,此其言朔何?《春秋》辞繁而不杀者,正也。何正尔?宋公与楚人期,战于泓之阳。楚人济泓而来。有司复曰:「请迨其未毕济而系之。」宋公曰:「不可。吾闻之也:君子不厄人。吾虽丧国之余,寡人不忍行也。」既济,未毕陈,有司复曰:「请迨其未毕陈而击之。」宋公曰:「不可。吾闻之也:君子不鼓不成列。」已陈,然后襄公鼓之,宋师大败。故君子大其不鼓不成列,临大事而不忘大礼,有君而无臣,以为虽文王之战,亦不过此也。

  !僖公(经二三一)二十有三年

  春,齐侯伐宋围缗。

  (传)邑不言围,此其言围何?疾重故也。

  (经二三二)夏,五月庚寅,宋公慈父卒。

  (传)何以不书葬?盈乎讳也。

  (经二三三)秋,楚人伐陈。

  (经二三四)冬,十有一月,杞子卒。

  !僖公(经二四一)二十有四年

  春,王正月。

  (经二四二)夏,狄伐郑。

  (经二四三)秋,七月。

  (经二四四)冬,天王出居于郑。

  (传)王者无外,此其言出何?不能乎母也。鲁子曰:「是王也,不能乎母者,其诸此之谓与?」

  (经二四五)晋侯夷吾卒。

  !僖公(经二五一)二十有五年

  春,王正月丙午,卫侯毁灭邢。

  (传)卫侯毁,何以名?绝。曷为绝之?灭同姓也。

  (经二五二)夏,四月癸酉,卫侯毁卒。宋荡伯姬来逆妇。

  (传)宋荡伯姬者何?荡氏之母也。其言来逆妇何?兄弟辞也。其称妇何?有姑之辞也。

  (经二五三)宋杀其大夫。

  (传)何以不名?宋三世无大夫,三世内娶也。

  (经二五四)秋,楚人围陈,纳顿子于顿。

  (传)何以不言遂?两之也。

  (经二五五)葬卫文公。

  (经二五六)冬,十有二月癸亥,公会卫子、莒庆,盟于洮。

  !僖公(经二六一)二十有六年

  春,王正月己未,公会莒子、卫宁遬,盟于向。

  (经二六二)齐人侵我西鄙。公追齐师至酅,弗及。

  (传)其言「至酅,弗及」何?侈也。

  (经二六三)夏,齐人伐我北鄙。卫人伐齐。公子遂如楚乞师。

  (传)乞者何?卑辞也。曷为以外内同若辞?重师也。曷为重师?师出不正反,战不正胜也。

  (经二六四)秋,楚人灭隗,以隗子归。

  (经二六五)冬,楚人伐宋,围缗。

  (传)邑不言围,此其言围何?刺道用师也。

  (经二六六)公以楚师伐齐,取谷。公至自伐齐。

  (传)此已取谷矣,何以致伐?未得乎取谷也。曷为未得乎取谷?曰:患之起,必自此始也。

  !僖公(经二七一)二十有七年

  春,杞子来朝。

  (经二七二)夏,六月庚寅,齐侯昭卒。

  (经二七三)秋,八月乙未,葬齐孝公。

  (经二七四)乙巳,公子遂帅师入杞。

  (经二七五)冬,楚人、陈侯、蔡侯、郑伯、许男围宋。

  (传)此楚子也,其称人何?贬。曷为贬?为执宋公贬,故终僖之篇贬也。

  (经二七六)十有二月甲戌,公会诸侯盟于宋。

  !僖公(经二八一)二十有八年

  春,晋侯侵曹,晋侯伐卫。

  (传)曷为再言晋侯?非两之也。然则何以不言遂?未侵曹也。未侵曹则其言侵曹何?致其意也。其意侵曹,则曷为伐卫?晋侯将侵曹,假涂于卫,卫曰不可得,则固将伐之也。

  (经二八二)公子买戍卫,不卒戍,刺之。

  (传)不卒戍者何?不卒戍者,内辞也,不可使往也。不可使往,则其言戍卫何?遂公意也。刺之者何?杀之也。杀之则曷为谓之刺之?内讳杀大夫,谓之刺之也。

  (经二八三)楚人救卫。三月丙午,晋侯入曹,执曹伯、畀宋人。

  (传)畀者何?与也。其言畀宋人何?与使听之也。曹伯之罪何?甚恶也。其甚恶奈何?不可以一罪言也。

  (经二八四)夏,四月己巳,晋侯、齐师、宋师、秦师及楚人战于城濮,楚师败绩。

  (传)此大战也,曷为使微者?子玉得臣也。子玉得臣则其称人何?贬。曷为贬?大夫不敌君也。

  (经二八五)楚杀其大夫得臣。

  (经二八六)卫侯出奔楚。

  (经二八七)五月,癸丑,公会晋侯、齐侯、宋公、蔡侯、郑伯、卫子、莒子,盟于践土。陈侯如会。

  (传)其言如会何?后会也。

  (经二八八)公朝于王所。

  (传)曷为不言公如京师?天子在是也。天子在是,则曷为不言天子在是?不与致天子也。

  (经二八九)六月,卫侯郑自楚复归于卫。

  (经二八十)卫元咺出奔晋。

  (经二八十一)陈侯款卒。

  (经二八十二)秋,杞伯姬来。

  (经二八十三)公子遂如齐。

  (经二八十四)冬,公会晋侯、齐侯、宋公、蔡侯、郑伯、陈子、莒子、邾娄子、秦人于温。天王狩于河阳。

  (传)狩不书,此何以书?不与再致天子也。鲁子曰:「温近而践土远也。」

  (经二八十五)壬申,公朝于王所。

  (传)其日何?录乎内也。

  (经二八十六)晋人执卫侯归之于京师。

  (传)归之于者何?归于者何?归之于者罪已定矣,归于者罪未定也。罪未定,则何以得为伯执?归之于者,执之于天子之侧者也,罪定不定,已可知矣。归于者,非执之于天子之侧者也,罪定不定,未可知也。卫侯之罪何?杀叔武也。何以不书?为叔武讳也。《春秋》为贤者讳。何贤乎叔武?让国也。其让国奈何?文公逐卫侯而立叔武,叔武辞立而他人立,则恐卫侯之不得反也,故于是已立,然后为践土之会,治反卫侯。卫侯得反,曰:「叔武篡我。」元咺争之曰:「叔武无罪。」终杀叔武,元咺走而出。此晋侯也,其称人何?贬。曷为贬?卫之祸,文公为之也。文公为之奈何?文公逐卫侯而立叔武,使人兄弟相疑,放乎杀母弟者,文公为之也。

  (经二八十七)卫元咺自晋复归于卫。

  (传)自者何?有力焉者也。此执其君,其言自何?为叔武争也。

  (经二八十八)诸侯遂围许。曹伯襄复归于曹。遂会诸侯围许。

  !僖公(经二九一)二十有九年

  春,介葛卢来。

  (传)介葛卢者何?夷狄之君也。何以不言朝?不能乎朝也。

  (经二九二)公至自围许。

  (经二九三)夏,六月,公会王人、晋人、宋人、齐人、陈人、蔡人、秦人,盟于狄泉。

  (经二九四)秋,大雨雹。

  (经二九五)冬,介葛卢来。

  !僖公(经三十一)三十年

  春,王正月。

  (经三十二)夏,狄侵齐。

  (经三十三)秋,卫杀其大夫元咺及公子瑕。

  (传)卫侯未至,其称国以杀何?道杀也。

  (经三十四)卫侯郑归于卫。

  (传)此杀其大夫,其言归何?归恶乎元咺也。曷为归恶乎元咺?元咺之事君也,君出则己入,君入则己出,以为不臣也。

  (经三十五)晋人、秦人围郑。

  (经三十六)介人侵萧。

  (经三十七)冬,天王使宰周公来聘。

  (经三十八)公子遂如京师,遂如晋。

  (传)大夫无遂事,此其言遂何?公不得为政尔。

  !僖公(经三一一)三十有一年

  春,取济西田。

  (传)恶乎取之?取之曹也。曷为不言取之曹?讳取同姓之田也。此未有伐曹者,则其言取之曹何?晋侯执曹伯,班其所取侵地于诸侯也。晋侯执曹伯,班其所取侵地于诸侯,则何讳乎取同姓之田?久也。

  (经三一二)公子遂如晋。夏,四月,四卜郊不从,乃免牲,犹三望。

  (传)曷为或言三卜?或言四卜?三卜,礼也;四卜,非礼也。三卜何以礼?四卜何以非礼?求吉之道三。禘、尝不卜,郊何以卜?卜郊,非礼也。卜郊何以非礼?鲁郊,非礼也。鲁郊何以非礼?天子祭天,诸侯祭土。天子有方望之事,无所不通。诸侯山川有不在其封内者,则不祭也。曷为或言免牲?或言免牛?免牲,礼也;免牛,非礼也。免牛何以非礼?伤者曰牛。三望者何?望祭也。然则曷祭?祭泰山、河海。曷为祭泰山、河海?山川有能润于百里者,天子秩而祭之。触石而出,肤寸而合,不崇朝而遍雨乎天下者,唯泰山尔。河海润于千里。犹者何?通可以已也。何以书?讥不郊而望祭也。

  (经三一三)秋,七月。

  (经三一四)冬,杞伯姬来求妇。

  (传)其言来求妇何?兄弟辞也。其称妇何?有姑之辞也。

  (经三一五)狄围卫。

  (经三一六)十有二月,卫迁于帝丘。

  !僖公(经三二一)三十有二年

  春,王正月。

  (经三二二)夏,四月己丑,郑伯接卒。

  (经三二三)卫人侵狄。

  (经三二四)秋,卫人及狄盟。

  (经三二五)冬,十有二月己卯,晋侯重耳卒。

  !僖公(经三三一)三十有三年

  春,王二月,秦人入滑。齐侯使国归父来聘。

  (经三三二)夏,四月辛巳,晋人及姜戎败秦于殽。

  (传)其谓之秦何?夷狄之也。曷为夷狄之?秦伯将袭郑,百里子与蹇叔子谏曰:「千里而袭人,未有不亡者也。」秦伯怒曰:「若尔之年者,宰上之木拱矣,尔曷知!」师出,百里子与蹇叔子送其子而戒之曰:「尔即死,必于殽之嵚岩,是文王之所辟风雨者也,吾将尸尔焉。」子揖师而行。百里子与蹇叔子从其子而哭之。秦伯怒曰:「尔曷为哭吾师?」对曰:「臣非敢哭君师,哭臣之子也。」弦高者,郑商也,遇之殽,矫以郑伯之命而犒师焉,或曰往矣,或曰反矣。然而晋人与姜戎要之殽而击之,匹马轮无反者。其言及姜戎何?姜戎微也,称人亦微者也。何言乎姜戎之微?先轸也,或曰襄公亲之。襄公亲之,则其称人何?贬。曷为贬?君在乎殡而用师危,不得葬也。诈战不日,此何以日?尽也。

  (经三三三)癸巳,葬晋文公。

  (经三三四)狄侵齐。

  (经三三五)公伐邾娄,取丛。

  (经三三六)秋,公子遂率师伐邾娄。

  (经三三七)晋人败狄于箕。

  (经三三八)冬,十月,公如齐。

  (经三三九)十有二月,公至自齐。

  (经三三十)乙巳,公薨于小寝。

  (经三三十一)陨霜不杀草,李、梅实。

  (传)何以书?记异也。何异尔?不时也。

  (经三三六)晋人、陈人、郑人伐许。

  公羊传文公

  !文公(经一一)元年

  春,王正月,公即位。

  (经一二)二月癸亥朔,日有食之。

  (经一三)天王使叔服来会葬。

  (传)其言来会葬何?会葬礼也。

  (经一四)夏,四月丁巳,葬我君僖公。天王使毛伯来锡公命。

  (传)锡者何?赐也。命者何?加我服也。

  (经一五)晋侯伐卫。

  (经一六)叔孙得臣如京师。

  (经一七)卫人伐晋。

  (经一八)秋,公孙敖会晋侯于戚。

  (经一九)冬,十月丁未,楚世子商臣弒其君髡。

  (经一十)公孙敖如齐。

  !文公(经二一)二年

  春,王二月甲子,晋侯及秦师战于彭衙,秦师败绩。

  (经二二)丁丑,作僖公主。

  (传)作僖公主者何?为僖公作主也。主者曷用?虞主用桑,练主用栗。用栗者,藏主也。作僖公主,何以书?讥。何讥尔?不时也。其不时奈何?欲久丧而后不能也。

  (经二三)三月乙巳,及晋处父盟。

  (传)此晋阳处父也,何以不氏?讳与大夫盟也。

  (经二四)夏,六月,公孙敖会宋公、陈侯、郑伯、晋士縠,盟于垂敛。

  (经二五)自十有二月不雨,至于秋七月。

  (传)何以书?记异也。大旱以灾书,此亦旱也,曷为以异书?大旱之日短而云灾,故以灾书;此不雨之日长而无灾,故以异书也。

  (经二六)八月丁卯,大事于太庙,跻僖公。

  (传)大事者何?大祫也。大祫者何?合祭也。其合祭奈何?毁庙之主,陈于太祖;未毁庙之主皆升,合食于太祖,五年而再殷祭。跻者何?升也。何言乎升僖公?讥。何讥尔?逆祀也。其逆祀奈何?先祢而后祖也。

  (经二七)冬,晋人、宋人、陈人、郑人伐秦。

  (经二八)公子遂如齐纳币。

  (传)纳币不书,此何以书?讥。何讥尔?讥丧娶也。娶在三年之外,则何讥乎丧娶?三年之内不图婚。吉禘于庄公,讥。然则曷为不于祭焉讥?三年之恩疾矣,非虚加之也,以人心为皆有之。以人心为皆有之,则曷为独于娶焉讥?娶者,大吉也,非常吉也。其为吉者主于己,以为有人心焉者,则宜于此焉变矣!

  !文公(经三一)三年

  春,王正月,叔孙得臣会晋人、宋人、陈人、卫人、郑人伐沈,沈溃。

  (经三二)夏,五月,王子虎卒。

  (传)王子虎者何?天子之大夫也。外大夫不卒,此何以卒?新使乎我也。

  (经三三)秦人伐晋。

  (经三四)秋,楚人围江。

  (经三五)雨螽于宋。

  (传)雨螽者何?死而坠也。何以书?记异也。外异不书,此何以书?为王者之后记异也。

  (经三六)冬,公如晋。

  (经三七)十有二月己巳,公及晋侯盟。

  (经三八)晋阳处父帅师伐楚救江。

  (传)此伐楚也,其言救江何?为谖也。其为谖奈何?伐楚为救江也。

  !文公(经四一)四年

  春,公至自晋。

  (经四二)夏,逆妇姜于齐。

  (传)其谓之逆妇姜于齐何?略之也。高子曰:「娶乎大夫者,略之也。」

  (经四三)狄侵齐。

  (经四四)秋,楚人灭江。

  (经四五)晋侯伐秦。

  (经四六)卫侯使宁俞来聘。

  (经四七)冬,十有一月壬寅,夫人风氏薨。

  !文公(经五一)五年

  春,王正月,王使荣叔归含且赗。

  (传)含者何?口实也。其言归含且赗何?兼之。兼之非礼也。

  (经五二)三月辛亥,葬我小君成风。

  (传)成风者何?僖公之母也。

  (经五三)王使召伯来会葬。

  (经五四)夏,公孙敖如晋。

  (经五五)秦人入鄀。

  (经五六)秋,楚人灭六。

  (经五七)冬,十月甲申,许男业卒。

  !文公(经六一)六年

  春,葬许僖公。

  (经六二)夏,季孙行父如陈。

  (经六三)秋,季孙行父如晋。

  (经六四)八月乙亥,晋侯讙卒。

  (经六五)冬,十月,公子遂如晋。

  (经六六)葬晋襄公。

  (经六七)晋杀其大夫阳处父,晋狐射姑出奔狄。

  (传)晋杀其大夫阳处父,则狐射姑曷为出奔?射姑杀也。射姑杀则其称国以杀何?君漏言也。其漏言奈何?君将使射姑将。阳处父谏曰:「射姑民众不说,不可使将。」于是废将。阳处父出,射姑入。君谓射姑曰:「阳处父言曰:『射姑民众不说,不可使将。』」射姑怒,出刺阳处父于朝而走。

  (经六八)闰月不告月,犹朝于庙。

  (传)不告月者何?不告朔也。曷为不告朔?天无是月也。闰月矣,何以谓之天无是月?是月非常月也。犹者何?通可以已也。

  !文公(经七一)七年

  春,公伐邾娄。

  (经七二)三月甲戌,取须朐。

  (传)取邑不日,此何以日?内辞也,使若他人然。

  (经七三)遂城郚。

  (经七四)夏,四月,宋公王臣卒。

  (经七五)宋人杀其大夫。

  (传)何以不名?宋三世无大夫,三世内娶也。

  (经七六)戊子,晋人及秦人战于令狐,晋先眛以师奔秦。

  (传)此偏战也,何以不言师败绩?敌也。此晋先眛也,其称人何?贬。曷为贬?外也。其外奈何?以师外也。何以不言出?遂在外也。

  (经七七)狄侵我西鄙。

  (经七八)秋,八月,公会诸侯、晋大夫,盟于扈。

  (传)诸侯何以不序?大夫何以不名?公失序也。公失序奈何?诸侯不可使与公盟,眣晋大夫使与公盟也。

  (经七九)冬,徐伐莒。公孙敖如莒莅盟。

  !文公(经八一)八年

  春,王正月。

  (经八二)夏,四月。

  (经八三)秋,八月戊申,天王崩。

  (经八四)冬,十月壬午,公子遂会晋赵盾,盟于衡雍。

  (经八五)乙酉,公子遂会伊雒戎,盟于暴。

  (经八六)公孙敖如京师,不至复;丙戌,奔莒。

  (传)不至复者何?不至复者,内辞也,不可使往也。不可使往,则其言如京师何?遂公意也。何以不言出?遂在外也。

  (经八七)螽。

  (经八八)宋人杀其大夫司马;宋司城来奔。

  (传)司马者何?司城者何?皆官举也。曷为皆官举?宋三世无大夫,三世内娶也。

  !文公(经九一)九年

  春,毛伯来求金。

  (传)毛伯者何?天子之大夫也。何以不称使?当丧未君也。逾年矣,何以谓之未君?即位矣,而未称王也。未称王,何以知其即位?以诸侯之逾年即位,亦知天子之逾年即位也。以天子三年然后称王,亦知诸侯于其封内三年称子也。逾年称公矣,则曷为于其封内三年称子?缘民臣之心,不可一日无君;缘终始之义,一年不二君,不可旷年无君;缘孝子之心,则三年不忍当也。毛伯来求金,何以书?讥。何讥尔?王者无求,求金非礼也。然则是王者与?曰:非也。非王者则曷为谓之王者?王者无求,曰:是子也。继文王之体,守文王之法度,文王之法无求而求,故讥之也。 

  (经九二)夫人姜氏如齐。

  (经九三)二月,叔孙得臣如京师。

  (经九四)辛丑,葬襄王。

  (传)王者不书葬,此何以书?不及时书,过时书,我有往者则书。

  (经九五)晋人杀其大夫先都。

  (经九六)三月,夫人姜氏至自齐。

  (经九七)晋人杀其大夫士眛及箕郑父。

  (经九八)楚人伐郑。

  (经九九)公子遂会晋人、宋人、卫人、许人救郑。

  (经九十)夏,狄侵齐。

  (经九十一)秋,八月,曹伯襄卒。

  (经九十二)九月癸酉,地震。

  (传)地震者何?动地也。何以书?记异也。

  (经九十三)冬,楚子使椒来聘。

  (传)椒者何?楚大夫也。楚无大夫,此何以书?始有大夫也。始有大夫,则何以不氏?许夷狄者不一而足也。

  (经九十四)秦人来归僖公成风之襚。

  (传)其言僖公成风何?兼之。兼之非礼也。曷为不言及成风?成风尊也。

  (经九十五)葬曹共公。

  !文公(经十一)十年

  春,王三月辛卯,臧孙辰卒。

  (经十二)夏,秦伐晋。

  (经十三)楚杀其大夫宜申。

  (经十四)自正月不雨,至于秋七月。

  (经十五)及苏子盟于女栗。

  (经十六)冬,狄侵宋。

  (经十七)楚子、蔡侯次于屈貉。

  !文公(经十一一)十有一年

  春,楚子伐圈。

  (经十一二)夏,叔彭生会晋郄缺于承匡。

  (经十一三)秋,曹伯来朝。

  (经十一四)公子遂如宋。

  (经十一五)狄侵齐。

  (经十一六)冬,十月甲午,叔孙得臣败狄于咸。

  (传)狄者何?长狄也。兄弟三人,一者之齐,一者之鲁,一者之晋。其之齐者,王子成父杀之;其之鲁者,叔孙得臣杀之;则未知其之晋者也。其言败何?大之也。其日何?大之也。其地何?大之也。何以书?记异也。

  !文公(经十二一)十有二年

  春,王正月,盛伯来奔。

  (传)盛伯者何?失地之君也。何以不名?兄弟辞也。

  (经十二二)杞伯来朝。

  (经十二三)二月庚子,子叔姬卒。

  (传)此未适人,何以卒?许嫁矣。妇人许嫁,字而笄之,死则以成人之丧治之。其称子何?贵也。其贵奈何?母弟也。

  (经十二四)夏,楚人围巢。

  (经十二五)秋,滕子来朝。

  (经十二六)秦伯使遂来聘。

  (传)遂者何?秦大夫也。秦无大夫,此何以书?贤缪公也。何贤乎缪公?以为能变也。其为能变奈何?惟諓諓善竫言。俾君子易怠,而况乎我多有之,惟一介断断焉无他技。其心休休,能有容,是难也。

  (经十二七)冬,十有二月戊午,晋人、秦人战于河曲。

  (传)此偏战也,何以不言师败绩?敌也。曷为以水地?河曲疏矣,河千里而一曲也。

  (经十二八)季孙行父帅师,城诸及运。

  !文公(经十三一)十有三年

  春,王正月。

  (经十三二)夏,五月壬午,陈侯朔卒。

  (经十三三)邾娄子蘧蒢卒。

  (经十三四)自正月不雨,至于秋七月。

  (经十三五)世室屋坏。

  (传)世室者何?鲁公之庙也。周公称太庙,鲁公称世室,群公称宫。此鲁公之庙也,曷为谓之世室?世室,犹世室也,世世不毁也。周公何以称太庙于鲁?封鲁公以为周公也。周公拜乎前,鲁公拜乎后。曰:生以养周公,死以为周公主。然则周公之鲁乎?曰:不之鲁也,封鲁公以为周公主。然则周公曷为不之鲁?欲天下之一乎周也。鲁祭周公,何以为牲?周公用白牡,鲁公用骍犅,群公不毛。鲁祭周公,何以为盛?周公盛,鲁公焘,群公廪。世室屋坏,何以书?讥。何讥尔?久不修也。

  (经十三六)冬,公如晋。

  (经十三七)卫侯会于沓。

  (经十三八)狄侵卫。

  (经十三九)十有二月己丑,公及晋侯盟,还自晋。

  (经十三十)郑伯会公于斐。

  (传)还者何?善辞也。何善尔?往党,卫侯会公于沓,至得与晋侯盟。反党,郑伯会公于斐,故善之也。

  !文公(经十四一)十有四年

  春,王正月,公至自晋。

  (经十四二)邾娄人伐我南鄙。

  (经十四三)叔彭生帅师伐邾娄。

  (经十四四)夏,五月乙亥,齐侯潘卒。

  (经十四五)六月,公会宋公、陈侯、卫侯、郑伯、许男、曹伯、晋赵盾。

  (经十四六)癸酉,同盟于新城。

  (经十四七)秋,七月,有星孛入于北斗。

  (传)孛者何?彗星也。其言入于北斗何?北斗有中也。何以书?记异也。

  (经十四八)公至自会。

  (经十四九)晋人纳接菑于邾娄,弗克纳。

  (传)纳者何?入辞也。其言弗克纳何?大其弗克纳也。何大乎其弗克纳?晋郄缺帅师,革车八百乘,以纳接菑于邾娄,力沛若有余而纳之。邾娄人言曰:「接菑,晋出也;貜且,齐出也。子以其指,则接菑也四,貜且也六。子以大国压之,则未知齐、晋孰有之也,贵则皆贵矣。虽然,貜且也长。」郄缺曰:「非吾力不能纳也,义实不尔克也。」引师而去之,故君子大其弗克纳也。此晋郄缺也,其称人何?贬。曷为贬?不与大夫专废置君也。曷为不与?实与而文不与。文曷为不与?大夫之义,不得专废置君也。

  (经十四十)九月甲申,公孙敖卒于齐。

  (经十四十一)齐公子商人弒其君舍。

  (传)此未逾年之君也,其言弒其君舍何?己立之,己杀之,成死者而贱生者也。

  (经十四十二)宋子哀来奔。

  (传)宋子哀者何?无闻焉尔。

  (经十四十三)冬,单伯如齐。

  (经十四十四)齐人执单伯,齐人执子叔姬。

  (传)执者曷为或称行人?或不称行人?称行人而执者,以其事执也;不称行人而执者,以己执也。单伯之罪何?道淫也。恶乎淫?淫乎子叔姬。然则曷为不言齐人执单伯及子叔姬?内辞也,使若异罪然。

  !文公(经十五一)十有五年

  春,季孙行父如晋。

  (经十五二)三月,宋司马华孙来盟。

  (经十五三)夏,曹伯来朝。

  (经十五四)齐人归公孙敖之丧。

  (传)何以不言来?内辞也。胁我而归之,笋将而来也。

  (经十五五)六月辛丑朔,日有食之,鼓用牲于社。

  (经十五六)单伯至自齐。

  (经十五七)晋郄缺帅师伐蔡;戊申,入蔡。

  (传)入不言伐,此其言伐何?至之日也。其日何?至之日也。

  (经十五八)秋,齐人侵我西鄙。

  (经十五九)季孙行父如晋。

  (经十五十)冬,十有一月,诸侯盟于扈。

  (经十五十一)十有二月,齐人来归子叔姬。

  (传)其言来何?闵之也。此有罪,何闵尔?父母之于子,虽有罪,犹若其不欲服罪然。

  (经十五十二)齐侯侵我西鄙,遂伐曹,入其郛。

  (传)郛者何?恢郭也。入郛书乎?曰:不书。入郛不书,此何以书?动我也。动我者何?内辞也。其实我动焉尔。

  !文公(经十六一)十有六年

  春,季孙行父会齐侯于阳谷,齐侯弗及盟。

  (传)其言弗及盟何?不见与盟也。

  (经十六二)夏,五月,公四不视朔。

  (传)公曷为四不视朔?公有疾也。何言乎公有疾不视朔?自是公无疾,不视朔也。然则曷为不言「公无疾不视朔」?有疾犹可言也,无疾不可言也。

  (经十六三)六月戊辰,公子遂及齐侯盟于犀丘。

  (经十六四)秋,八月辛未,夫人姜氏薨。

  (经十六五)毁泉台。

  (传)泉台者何?郎台也。郎台则曷为谓之泉台?未成为郎台,既成为泉台。毁泉台,何以书?讥。何讥尔?筑之讥,毁之讥。先祖为之,己毁之,不如勿居而已矣!

  (经十六六)楚人、秦人、巴人灭庸。

  (经十六七)冬,十有一月,宋人弒其君处臼。

  (传)弒君者曷为或称名氏?或不称名氏?大夫弒君称名氏,贱者穷诸人;大夫相杀称人,贱者穷诸盗。

  !文公(经十七一)十有七年

  春,晋人、卫人、陈人、郑人伐宋。

  (经十七二)夏,四月癸亥,葬我小君圣姜。

  (传)圣姜者何?文公之母也。

  (经十七三)齐侯伐我西鄙。

  (经十七四)六月癸未,公及齐侯盟于谷。

  (经十七五)诸侯会于扈。

  (经十七六)秋,公至自谷。

  (经十七七)冬,公子遂如齐。

  !文公(经十八一)十有八年

  春,王二月丁丑,公薨于台下。

  (经十八二)秦伯罃卒。

  (经十八三)夏,五月戊戌,齐人弒其君商人。

  (经十八四)六月癸酉,葬我君文公。

  (经十八五)秋,公子遂、叔孙得臣如齐。

  (经十八六)冬,十月,子卒。

  (传)子卒者孰谓?谓子赤也。何以不日?隐之也。何隐尔?弒也。弒则何以不日?不忍言也。

  (经十八七)夫人姜氏归于齐。

  (经十八八)季孙行父如齐。

  (经十八九)莒弒其君庶其。

  (传)称国以弒何?称国以弒者,众弒君之辞。



  公羊传宣公

  !宣公(经一一)元年

  春,王正月,公即位。

  (传)继弒君不言即位,此其言即位何?其意也。

  (经一二)公子遂如齐逆女。三月,遂以夫人妇姜至自齐。

  (传)遂何以不称公子?一事而再见者,卒名也。夫人何以不称姜氏?贬。曷为贬?讥丧娶也。丧娶者公也,则曷为贬夫人?内无贬于公之道也。内无贬于公之道,则曷为贬夫人?夫人与公一体也。其称妇何?有姑之辞也。

  (经一三)夏,季孙行父如齐。

  (经一四)晋放其大夫胥甲父于卫。

  (传)放之者何?犹曰无去是云尔。然则何言尔?近正也。此其为近正奈何?古者大夫已去,三年待放。君放之,非也;大夫待放,正也。古者臣有大丧,则君三年不呼其门。已练可以弁冕,服金革之事。君使之,非也;臣行之,礼也。闵子要绖而服事,既而曰:「若此乎!古之道不即人心。」退而致仕。孔子盖善之也。

  (经一五)公会齐侯于平州。

  (经一六)公子遂如齐。

  (经一七)六月,齐人取济西田。

  (传)外取邑不书,此何以书?所以赂齐也。曷为赂齐?为弒子赤之赂也。

  (经一八)秋,邾娄子来朝。

  (经一九)楚子、郑人侵陈,遂侵宋。

  (经一十)晋赵盾帅师救陈。宋公、陈侯、卫侯、曹伯会晋师于斐林,伐郑。

  (传)此晋赵盾之师也,曷为不言赵盾之师?君不会大夫之辞也。

  (经一十一)冬,晋赵穿帅师侵柳。

  (传)柳者何?天子之邑也。曷为不系乎周?不与伐天子也。

  (经一十二)晋人、宋人伐郑。

  !宣公(经二一)二年

  春,王二月壬子,宋华元帅师,及郑公子归生帅师,战于大棘。宋师败绩,获宋华元。

  (经二二)秦师伐晋。

  (经二三)夏,晋人、宋人、卫人、陈人侵郑。

  (经二四)秋,九月乙丑,晋赵盾弒其君夷嗥。

  (经二五)冬,十月乙亥,天王崩。

  !宣公(经三一)三年

  春,王正月,郊牛之口伤,改卜牛。牛死,乃不郊,犹三望。

  (传)其言之何?缓也。曷为不复卜?养牲养二卜。帝牲不吉,则扳稷牲而卜之。帝牲在于涤三月,于稷者唯具是视。郊则曷为必祭稷?王者必以其祖配。王者则曷为必以其祖配?自内出者无匹不行,自外至者无主不止。

  (经三二)葬匡王。

  (经三三)楚子伐贲浑戎。

  (经三四)夏,楚人侵郑。

  (经三五)秋,赤狄侵齐。

  (经三六)宋师围曹。

  (经三七)冬,十月丙戌,郑伯兰卒。葬郑缪公。

  !宣公(经四一)四年

  春,王正月,公及齐侯平莒及郯。莒人不肯,公伐莒,取向。

  (传)此平莒也,其言不肯何?辞取向也。

  (经四二)秦伯稻卒。

  (经四三)夏,六月乙酉,郑公子归生弒其君夷。

  (经四四)赤狄侵齐。

  (经四五)秋,公如齐。公至自齐。

  (经四六)冬,楚子伐郑。

  !宣公(经五一)五年

  春,公如齐。夏,公至自齐。

  (经五二)秋,九月,齐高固来逆子叔姬。

  (经五三)叔孙得臣卒。

  (经五四)冬,齐高固及子叔姬来。

  (传)何言乎高固之来?言叔姬之来,而不言高固之来则不可。子公羊子曰:「其诸为其双双而俱至者与!」(经五五)楚人伐郑。

  !宣公(经六一)六年

  春,晋赵盾、卫孙免侵陈。

  (传)赵盾弒君,此其复见何?亲弒君者赵穿也。亲弒君者赵穿,则曷为加之赵盾?不讨贼也。何以谓之不讨贼?晋史书贼曰:「晋赵盾弒其君夷嗥。」赵盾曰:「天乎!无辜!吾不弒君,谁谓吾弒君者乎?」史曰:「尔为仁为义,人弒尔君,而复国不讨贼,此非弒君而何?」

  (传)赵盾之复国奈何?灵公为无道,使诸大夫皆内朝,然后处乎台上,引弹而弹之,己趋而辟丸,是乐而已矣。赵盾已朝而出,与诸大夫立于朝,有人荷畚,自闺而出者。赵盾曰:「彼何也?夫畚曷为出乎闺?」呼之不至,曰:「子大夫也,欲视之则就而视之。」赵盾就而视之,则赫然死人也。赵盾曰:「是何也?」曰:「膳宰也,熊蹯不熟,公怒以斗摮而杀之,支解将使我弃之。」赵盾曰:「嘻!」趋而入。灵公望见赵盾,愬而再拜。赵盾逡巡北面再拜稽首,趋而出,灵公心怍焉,欲杀之。于是使勇士某者往杀之,勇士入其大门,则无人门焉者;入其闺,则无人闺焉者;上其堂,则无人焉。俯而窥其户,方食鱼飧。勇士曰:「嘻!子诚仁人也!吾太子之大门,则无人焉;太子之闺,则无人焉;上子之堂,则无人焉;是子之易也。子为晋国重卿而食鱼飧,是子之俭也。君将使我杀子,吾不忍杀子也,虽然,吾亦不可复见吾君矣。」遂刎颈而死。

  (传)灵公闻之怒,滋欲杀之甚,众莫可使往者。于是伏甲于宫中,召赵盾而食之。赵盾之车右祁弥明者,国之力士也,仡然从乎赵盾而入,放乎堂下而立。赵盾已食,灵公谓盾曰:「吾闻子之剑盖利剑也,子以示我,吾将观焉。」赵盾起将进剑,祁弥明自下呼之曰:「盾食饱则出,何故拔剑于君所?」赵盾知之,躇阶而走。灵公有周狗,谓之獒,呼獒而属之,獒亦躇阶而从之。祁弥明逆而踆之,绝其颔。赵盾顾曰:「君之獒不若臣之獒也!」然而宫中甲鼓而起,有起干甲中者,抱赵盾而乘之。赵盾顾曰:「吾何以得此于子?」曰:「子某时所食活我于暴桑下者也。」赵盾曰:「子名为谁?」曰:「吾君孰为介?子之乘矣,何问吾名?」赵盾驱而出,众无留之者。赵穿缘民众不说,起弒灵公,然后迎赵盾而入,与之立于朝,而立成公黑臀。

  (经六二)夏,四月。

  (经六三)秋,八月,螽。

  (经六四)冬,十月。

  !宣公(经七一)七年

  春,卫侯使孙良夫来盟。

  (经七二)夏,公会齐侯伐莱。

  (经七三)秋,公至自伐莱。

  (经七四)大旱。

  (经七五)冬,公会晋侯、宋公、卫侯、郑伯、曹伯于黑壤。

  !宣公(经八一)八年

  春,公至自会。

  (经八二)夏,六月,公子遂如齐,至黄乃复。

  (传)其言至黄乃复何?有疾也。何言乎有疾乃复?讥。何讥尔?大夫以君命出,闻丧徐行而不反。

  (经八三)辛巳,有事于太庙。

  (经八四)仲遂卒于垂。

  (传)仲遂者何?公子遂也。何以不称公子?贬。曷为贬?为弒子赤贬。然则曷为不于其弒焉贬?于文则无罪,于子则无年。

  (经八五)壬午,犹绎。

  (经八六)万入去龠。

  (传)绎者何?祭之明日也。万者何?干舞也。龠者何?龠舞也。其言万入去龠何?去其有声者,废其无声者,存其心焉尔。存其心焉尔者何?知其不可而为之也。犹者何?通可以已也。

  (经八七)戊子,夫人熊氏薨。

  (经八八)晋师、白狄伐秦。

  (经八九)楚人灭舒蓼。

  (经八十)秋,七月甲子,日有食之,既。

  (经八十一)冬,十月己丑,葬我小君顷熊。雨不克葬。庚寅,日中而克葬。

  (传)顷熊者何?宣公之母也。而者何?难也。乃者何?难也。曷为或言而?或言乃?乃难乎而也。

  (经八十二)城平阳。(经八十三)楚师伐陈。

  !宣公(经九一)九年

  春,王正月,公如齐。公至自齐。

  (经九二)夏,仲孙蔑如京师。

  (经九三)齐侯伐莱。

  (经九四)秋,取根牟。

  (传)根牟者何?邾娄之邑也。曷为不系乎邾娄?讳亟也。

  (经九五)八月,滕子卒。

  (经九六)九月,晋侯、宋公、卫侯、郑伯、曹伯会于扈。

  (经九七)晋荀林父帅师伐陈。

  (经九八)辛酉,晋侯黑臀卒于扈。

  (传)扈者何?晋之邑也。诸侯卒其封内不地,此何以地?卒于会,故地也;未出其地,故不言会也。

  (经九九)冬,十月癸酉,卫侯郑卒。

  (经九十)宋人围滕。

  (经九十一)楚子伐郑,晋郄缺帅师救郑。

  (经九十二)陈杀其大夫泄冶。

  !宣公(经十一)十年

  春,公如齐。公至自齐。

  (经十二)齐人归我济西田。

  (传)齐已取之矣,其言我何?言我者未绝于我也。曷为未绝于我?齐已言取之矣,其实未之齐也。

  (经十三)夏,四月丙辰,日有食之。

  (经十四)己巳,齐侯元卒。

  (经十五)齐崔氏出奔卫。

  (传)崔氏者何?齐大夫也。其称崔氏何?贬。曷为贬?讥世卿,世卿非礼也。

  (经十六)公如齐。五月,公至自齐。

  (经十七)癸巳,陈夏征舒弒其君平国。

  (经十八)六月,宋师伐滕。

  (经十九)公孙归父如齐,葬齐惠公。

  (经十十)晋人、宋人、卫人、曹人伐郑。

  (经十十一)秋,天王使王季子来聘。

  (传)王季子者何?天子之大夫也。其称王季子何?贵也。其贵奈何?母弟也。

  (经十十二)公孙归父帅师伐邾娄,取蘱。

  (经十十三)大水。

  (经十十四)季孙行父如齐。

  (经十十五)冬,公孙归父如齐。

  (经十十六)齐侯使国佐来聘。

  (经十十七)饥。

  (传)何以书?以重书也。

  (经十十八)楚子伐郑。

  !宣公(经十一一)十有一年

  春,王正月。

  (经十一二)夏,楚子、陈侯、郑伯盟于辰陵。

  (经十一三)公孙归父会齐人伐莒。

  (经十一四)秋,晋侯会狄于櫕函。

  (经十一五)冬,十月,楚人杀陈夏征舒。

  (传)此楚子也,其称人何?贬。曷为贬?不与外讨也。不与外讨者,因其讨乎外而不与也,虽内讨亦不与也。曷为不与?实与而文不与。文曷为不与?诸侯之义,不得专讨也。诸侯之义不得专讨,则其曰实与之何?上无天子,下无方伯,天下诸侯有为无道者,臣弒君,子弒父,力能讨之,则讨之可也。

  (经十一五)丁亥,楚子入陈,纳公孙宁、仪行父于陈。

  (传)此皆大夫也,其言纳何?纳公党与也。

  !宣公(经十二一)十有二年

  春,葬陈灵公。

  (传)讨此贼者非臣子也,何以书葬?君子辞也。楚已讨之矣,臣子虽欲讨之而无所讨也。

  (经十二二)楚子围郑。

  (经十二三)夏,六月乙卯,晋荀林父帅师及楚子战于邲,晋师败绩。

  (传)大夫不敌君,此其称名氏以敌楚子何?不与晋而与楚子为礼也。曷为不与晋而与楚子为礼也?庄王伐郑,胜乎皇门,放乎路衢。郑伯肉袒,左执茅旌,右执鸾刀,以逆庄王曰:「寡人无良,边垂之臣,以干天祸,是以使君王沛焉,辱到敝邑。君如矜此丧人,锡之不毛之地,使帅一二耋老而绥焉,请唯君王之命。」庄王曰:「君之不令臣,交易为言,是以使寡人得见君之玉面而微至乎此。」庄王亲自手旌,左右撝军退舍七里。将军子重谏曰:「南郢之与郑相去数千里,诸大夫死者数人,厮役扈养死者数百人,今君胜郑而不有,无乃失民臣之力乎?」庄王曰:「古者杅不穿、皮不蠹,则不出于四方。是以君子笃于礼而薄于利,要其人而不要其土,告从,不赦不详,吾以不详道民,灾及吾身,何日之有?」既则晋师之救郑者至曰:「请战。」庄王许诺。将军子重谏曰:「晋,大国也,王师淹病矣,君请勿许也。」庄王曰:「弱者,吾威之,强者吾辟之,是以使寡人无以立乎天下!」令之还师而逆晋寇。庄王鼓之,晋师大败,晋众之走者,舟中之指可掬矣。庄王曰:「嘻!吾两君不相好,百姓何罪?」令之还师而佚晋寇。

  (经十二四)秋,七月。

  (经十二五)冬,十有二月戊寅,楚子灭萧。

  (经十二六)晋人、宋人、卫人、曹人同盟于清丘。

  (经十二七)宋师伐陈。

  (经十二八)卫人救陈。

  !宣公(经十三一)十有三年

  春,齐师伐卫。

  (经十三二)夏,楚子伐宋。

  (经十三三)秋,螽。

  (经十三四)冬,晋杀其大夫先縠。

  !宣公(经十四一)十有四年

  春,卫杀其大夫孔达。

  (经十四二)夏,五月壬申,曹伯寿卒。

  (经十四三)晋侯伐郑。

  (经十四四)秋,九月,楚子围宋。

  (经十四五)葬曹文公。

  (经十四六)冬,公孙归父会齐侯于谷。

  !宣公(经十五一)十有五年

  春,公孙归父会楚子于宋。

  (经十五二)夏,五月,宋人及楚人平。

  (传)外平不书,此何以书?大其平乎已也。何大乎其平乎已?庄王围宋,军有七日之粮尔。尽此不胜,将去而归尔。于是使司马子反乘堙而堙宋城,宋华元亦乘堙而出见之。司马子反曰:「子之国何如?」华元曰:「惫矣。」曰:「何如?」曰:「易子而食之,析骸而炊之。」司马子反曰:「嘻!甚矣惫!虽然,吾闻之也:围者柑马而秣之,使肥者应客,是何子之情也?」华元曰:「吾闻之:君子见人之厄则矜之,小人见人之厄则幸之。吾见子之君子也,是以告情于子也。」司马子反曰:「诺,勉之矣!吾军亦有七日之粮尔,尽此不胜,将去而归尔。」揖而去之,反于庄王。

  (传)庄王曰:「何如?」司马子反曰:「惫矣!」曰:「何如?」曰:「易子而食之,析骸而炊之。」庄王曰:「嘻!甚矣惫!虽然,吾今取此,然后而归尔。」司马子反曰:「不可。臣已告之矣,军有七日之粮尔。」庄王怒曰:「吾使子往视之,子曷为告之?」司马子反曰:「以区区之宋,犹有不欺人之臣,可以楚而无乎?是以告之也。」庄王曰:「诺。舍而止。虽然,吾犹取此然后归尔。」司马子反曰:「然则君请处于此,臣请归尔。」庄王曰:「子去我而归,吾孰与处于此?吾亦从子而归尔。」引师而去之,故君子大其平乎已也。此皆大夫也,其称人何?贬。曷为贬?平者在下也。

  (经十五三)六月癸卯,晋师灭赤狄潞氏,以潞子婴儿归。

  (传)潞何以称子?潞子之为善也,躬足以亡尔。虽然,君子不可不记也。离于夷狄,而未能合于中国,晋师伐之,中国不救,狄人不有,是以亡也。

  (经十五四)秦人伐晋。

  (经十五五)王札子杀召伯、毛伯。

  (传)王札子者何?长庶之号也。

  (经十五六)秋,螽。

  (经十五七)仲孙蔑会齐高固于牟娄。

  (经十五八)初税亩。

  (传)初者何?始也。税亩者何?履亩而税也。初税亩,何以书?讥。何讥尔?讥始履亩而税也。何讥乎始履亩而税?古者什一而藉。古者曷为什一而藉?什一者天下之中正也。多乎什一,大桀、小桀;寡乎什一,大貉、小貉。什一者天下之中正也,什一行而颂声作矣。

  (经十五九)冬,蝝生。

  (传)未有言蝝生者,此其言蝝生何?蝝生不书,此何以书?幸之也。幸之者何?犹曰受之云尔。受之云尔者何?上变古易常,应是而有天灾,其诸则宜于此焉变矣。

  (经十五十)饥。

  !宣公(经十六一)十有六年

  春,王正月,晋人灭赤狄甲氏及留吁。

  (经十六二)夏,成周宣谢灾。

  (传)成周者何?东周也。宣谢者何?宣宫之谢也。何言乎成周宣谢灾?乐器藏焉尔。成周宣谢灾,何以书?记灾也。外灾不书,此何以书?新周也。

  (经十六三)秋,郯伯姬来归。

  (经十六四)冬,大有年。

  !宣公(经十七一)十有七年

  春,王正月庚子,许男锡我卒。

  (经十七二)丁未,蔡侯申卒。

  (经十七三)夏,葬许昭公。

  (经十七四)葬蔡文公。

  (经十七五)六月癸卯,日有食之。

  (经十七六)己未,公会晋侯、卫侯、曹伯、邾娄子同盟于断道。秋,公至自会。

  (经十七七)冬,十有一月壬午,公弟叔肸卒。

  !宣公(经十八一)十有八年

  春,晋侯、卫世子臧伐齐。

  (经十八二)公伐杞。

  (经十八三)夏,四月。

  (经十八四)秋,七月,邾娄人戕鄫子于鄫。

  (传)戕鄫子于鄫者何?残贼而杀之也。

  (经十八五)甲戌,楚子旅卒。

  (传)何以不书葬?吴、楚之君不书葬,辟其号也。

  (经十八六)公孙归父如晋。

  (经十八七)冬,十月壬戌,公薨于路寝。

  (经十八八)归父还自晋,至柽,遂奔齐。

  (传)还者何?善辞也。何善尔?归父使于晋,还自晋,至柽,闻君薨家遣,墠帷,哭君成踊,反命乎介,自是走之齐。

  公羊传成公

  !成公(经一一)元年

  春,王正月,公即位。

  (经一二)二月辛酉,葬我君宣公。

  (经一三)无冰。

  (经一四)三月,作丘甲。

  (传)何以书?讥。何讥尔?讥始丘使也。

  (经一五)夏,臧孙许及晋侯盟于赤棘。

  (经一六)秋,王师败绩于贸戎。

  (传)孰败之?盖晋败之,或曰贸戎败之。然则曷为不言晋败之?王者无敌,莫敢当也。

  (经一七)冬,十月。

  !成公(经二一)二年

  春,齐侯伐我北鄙。

  (经二二)夏,四月丙戌,卫孙良夫帅师及齐师战于新筑,卫师败绩。

  (经二三)六月癸酉,季孙行父、臧孙许、叔孙侨如、公孙婴齐帅师,会晋郄克、卫孙良夫、曹公子手及齐侯战于鞍,齐师败绩。

  (传)曹无大夫,公子手何以书?忧内也。

  (经二四)秋,七月,齐侯使国佐如师。己酉,及国佐盟于袁娄。

  (传)君不行使乎大夫,此其行使乎大夫何?佚获也。其佚获奈何?师还齐侯,晋郄克投戟逡巡再拜稽首马前。逢丑父者,顷公之车右也。面目与顷公相似,衣服与顷公相似,代顷公当左。使顷公取饮,顷公操饮而至,曰:「革取清者。」顷公用是佚而不反。逢丑父曰:「吾赖社稷之神灵,吾君已免矣。」郄克曰:「欺三军者,其法奈何?」曰:「法斮。」于是斮逢丑父。己酉,及齐国佐盟于袁娄,曷为不盟于师而盟于袁娄?前此者,晋郄克与臧孙许同时而聘于齐。萧同侄子者,齐君之母也,踊于棓而窥客,则客或跛或眇,于是使跛者迓跛者,使眇者迓眇者。二大夫出,相与踦闾而语,移日然后相去。齐人皆曰:「患之起必自此始!」二大夫归,相与率师为鞍之战,齐师大败。齐侯使国佐如师,郄克曰:「与我纪侯之甗,反鲁、卫之侵地,使耕者东亩,且以萧同侄子为质,则吾舍子矣。」国佐曰:「与我纪侯之甗,请诺。反鲁、卫卫萧同侄子为质,则吾舍子矣。」国佐曰:「与我纪侯之甗,请诺。反鲁、卫之侵地,请诺。使耕者东亩,是则土齐也。萧同侄子者,齐君之母也。齐君之母,犹晋君之母也,不可。请战,壹战不胜请再,再战不胜请三,三战不胜则齐国尽子之有也,何必以萧同侄子为质?」揖而去之。郄克瞴鲁、卫之使,使以其辞而为之请,然后许之。逮于袁娄而与之盟。

  (经二五)八月壬午,宋公鲍卒。

  (经二六)庚寅,卫侯遬卒。

  (经二七)取汶阳田。

  (传)汶阳田者何?鞍之赂也。

  (经二八)冬,楚师、郑师侵卫。

  (经二九)十有一月,公会楚公子婴齐于蜀。丙申,公及楚人、秦人、宋人、陈人、卫人、郑人、齐人、曹人、邾娄人、薛人、鄫人盟于蜀。

  (传)此楚公子婴齐也,其称人何?得一贬焉尔。

  !成公(经三一)三年

  春,王正月,公会晋侯、宋公、卫侯、曹伯伐郑。

  (经三二)辛亥,葬卫缪公。

  (经三三)二月,公至自伐郑。

  (经三四)甲子,新宫灾,三日哭。

  (传)新宫者何?宣公之宫也。宣宫则曷为谓之新宫?不忍言也。其言三日哭何?庙灾三日哭,礼也。新宫灾,何以书?记灾也。

  (经三五)乙亥,葬宋文公。

  (经三六)夏,公如晋。

  (经三七)郑公子去疾率师伐许。

  (经三八)公至自晋。

  (经三九)秋,叔孙侨如率师围棘。

  (传)棘者何?汶阳之不服邑也。其言围之何?不听也。

  (经三十)大雩。

  (经三十一)晋郄克、卫孙良夫伐将咎如。

  (经三十二)冬,十有一月,晋侯使荀庚来聘。卫侯使孙良夫来聘。

  (经三十三)丙午,及荀庚盟。丁未,及孙良夫盟。

  (传)此聘也,其言盟何?聘而言盟者,寻旧盟也。

  (经三十四)郑伐许。

  !成公(经四一)四年

  春,宋公使华元来聘。

  (经四二)三月壬申,郑伯坚卒。

  (经四三)杞伯来朝。

  (经四四)夏,四月甲寅,臧孙许卒。

  (经四五)公如晋。

  (经四六)葬郑襄公。

  (经四七)秋,公至自晋。

  (经四八)冬,城运。

  (经四九)郑伯伐许。

  !成公(经五一)五年

  春,王正月,杞叔姬来归。

  (经五二)仲孙蔑如宋。

  (经五三)夏,叔孙侨如会晋荀秀于谷。

  (经五四)梁山崩。

  (传)梁山者何?河上之山也。梁山崩,何以书?记异也。何异尔?大也。何大尔?梁山崩,壅河三日不流。外异不书,此何以书?为天下记异也。

  (经五五)秋,大水。

  (经五六)冬,十有一月己酉,天王崩。

  (经五七)十有二月己丑,公会晋侯、齐侯、宋公、卫侯、郑伯、曹伯、邾娄子、杞伯同盟于虫牢。

  !成公(经六一)六年

  春,王正月,公至自会。

  (经六二)二月辛巳,立武宫。

  (传)武宫者何?武公之宫也。立者何?立者不宜立也。立武宫,非礼也。

  (经六三)取鄟。

  (传)鄟者何?邾娄之邑也。曷为不系于邾娄?讳亟也。

  (经六四)卫孙良夫率师侵宋。

  (经六五)夏,六月,邾娄子来朝。

  (经六六)公孙婴齐如晋。

  (经六七)壬申,郑伯费卒。

  (经六八)秋,仲孙蔑、叔孙侨如率师侵宋。

  (经六九)楚公子婴齐率师伐郑。

  (经六十)冬,季孙行父如晋。

  (经六十一)晋栾书率师侵郑。

  !成公(经七一)七年

  春,王正月,鼷鼠食郊牛角。改卜牛,鼷鼠又食其角,乃免牛。

  (经七二)吴伐郯。

  (经七三)夏,五月,曹伯来朝。

  (经七四)不郊,犹三望。

  (经七五)秋,楚公子婴齐率师伐郑。

  (经七六)公会晋侯、齐侯、宋公、卫侯、曹伯、莒子、邾娄子、杞伯救郑。

  (经七七)八月戊辰,同盟于马陵。

  (经七八)公至自会。

  (经七九)吴入州来。

  (经七十)冬,大雩。

  (经七十一)卫孙林父出奔晋。

  !成公(经八一)八年

  春,晋侯使韩穿来言汶阳之田,归之于齐。

  (传)来言者何?内辞也,胁我使我归之也。曷为使我归之?鞍之战,齐师大败,齐侯归,吊死视疾,七年不饮酒、不食肉。晋侯闻之曰:「嘻!奈何使人之君七年不饮酒、不食肉,请皆反其所取侵地。」

  (经八二)晋栾书帅师侵蔡。

  (经八三)公孙婴齐如莒。

  (经八四)宋公使华元来聘。

  (经八五)夏,宋公使公孙寿来纳币。

  (传)纳币不书,此何以书?录伯姬也。

  (经八六)晋杀其大夫赵同、赵括。

  (经八七)秋,七月,天子使召伯来锡公命。

  (传)其称天子何?元年,春,王正月,正也,其余皆通矣。

  (经八八)冬,十月癸卯,杞叔姬卒。

  (经八九)晋侯使士燮来聘。

  (经八十)叔孙侨如会晋士燮、齐人、邾娄人伐郯。

  (经八十一)卫人来媵。

  (传)媵不书,此何以书?录伯姬也。

  !成公(经九一)九年

  春,王正月,杞伯来逆叔姬之丧以归。

  (传)杞伯曷为来逆叔姬之丧以归?内辞也,胁而归之也。

  (经九二)公会晋侯、齐侯、宋公、卫侯、郑伯、曹伯、莒子、杞伯同盟于蒲。公至自会。

  (经九三)二月,伯姬归于宋。

  (经九四)夏,季孙行父如宋致女。

  (传)未有言致女者,此其言致女何?录伯姬也。

  (经九使)晋人来媵。

  (传)媵不书,此何以书?录伯姬也。

  (经九六)秋,七月丙子,齐侯无野卒。

  (经九七)晋人执郑伯。

  (经九八)晋栾书帅师伐郑。

  (经九九)冬,十有一月,葬齐顷公。

  (经九十)楚公子婴齐帅师伐莒;庚申,莒溃。

  (经九十一)楚人入运。(经九十二)秦人、白狄伐晋。

  (经九十三)郑人围许。

  (经九十四)城中城。

  !成公(经十一)十年

  春,卫侯之弟黑背率师侵郑。

  (经十二)夏,四月,五卜郊,不从,乃不郊。

  (传)其言乃不郊何?不免牲,故言乃不郊也。

  (经十三)五月,公会晋侯、齐侯、宋公、卫侯、曹伯伐郑。

  (经十四)齐人来媵。

  (传)媵不书,此何以书?录伯姬也。三国来媵非礼也,曷为皆以录伯姬之辞言之?妇人以众多为侈也。

  (经十五)丙午,晋侯獳卒。

  (经十六)秋,七月。

  (经十七)公如晋。

  !成公(经十一一)十有一年

  春,王三月,公至自晋。

  (经十一二)晋侯使郄州来聘。己丑,及郄州盟。

  (经十一三)夏,季孙行父如晋。

  (经十一四)秋,叔孙侨如如齐。

  (经十一五)冬,十月。

  !成公(经十二二)十有二年

  春,周公出奔晋。

  (传)周公者何?天子之三公也。王者无外,此其言出何?自其私土而出也。

  (经十二二)夏,公会晋侯、卫侯于沙泽。

  (经十二三)秋,晋人败狄于交刚。

  (经十二四)冬,十月。

  !成公(经十三一)十有三年

  春,晋侯使郄锜来乞师。

  (经十三二)三月,公如京师。

  (经十三三)夏,五月,公自京师,遂会晋侯、齐侯、宋公、卫侯、郑伯、曹伯、邾娄人、滕人伐秦。

  (传)其言自京师何?公凿行也。公凿行奈何?不敢过天子也。

  (经十三四)曹伯庐卒于师。

  (经十三五)秋,七月,公至自伐秦。

  (经十三六)冬,葬曹宣公。

  !成公(经十四一)十有四年

  春,王正月,莒子朱卒。

  (经十四二)夏,卫孙林父自晋归于卫。

  (经十四三)秋,叔孙侨如如齐逆女。

  (经十四四)郑公子喜率师伐许。

  (经十四五)九月,侨如以夫人妇姜氏至自齐。

  (经十四六)冬,十月庚寅,卫侯臧卒。

  (经十四七)秦伯卒。

  !成公(经十五一)十有五年

  春,王二月,葬卫定公。

  (经十五二)三月乙巳,仲婴齐卒。

  (传)仲婴齐者何?公孙婴齐也。公孙婴齐,则曷为谓之仲婴齐?为兄后也。为兄后则曷为谓之仲婴齐?为人后者为之子也。为人后者为其子,则其称仲何?孙以王父字为氏也。然则婴齐孰后?后归父也。归父使于晋而未反,何以后之?叔仲惠伯,傅子赤者也,文公死,子幼,公子遂谓叔仲惠伯曰:「君幼,如之何?愿与子虑之。」叔仲惠伯曰:「吾子相之,老夫抱之,何幼君之有?」公子遂知其不可与谋,退而杀叔仲惠伯,弒子赤而立宣公。宣公死,成公幼,臧宣叔者相也。君死不哭,聚诸大夫而问焉,曰:「昔者叔仲惠伯之事,孰为之?」诸大夫皆杂然曰:「仲氏也,其然乎?」于是遣归父之家,然后哭君,归父使乎晋,还自晋,至柽,闻君薨家遣,墠帷,哭君成踊,反命于介,自是走之齐。鲁人徐伤归父之无后也,于是使婴齐后之也。

  (经十五三)癸丑,公会晋侯、卫侯、郑伯、曹伯、宋世子成、齐国佐、邾娄人同盟于戚。

  (经十五四)晋侯执曹伯归之于京师。

  (经十五五)公至自会。

  (经十五六)夏,六月,宋公固卒。

  (经十五七)楚子伐郑。

  (经十五八)秋,八月庚辰,葬宋共公。

  (经十五九)宋华元出奔晋。

  (经十五十)宋华元自晋归于宋。

  (经十五十一)宋杀其大夫山。

  (经十五十二)宋鱼石出奔楚。

  (经十五十三)冬,十有一月,叔孙侨如会晋士燮、齐高无咎、宋华元、卫孙林父、郑公子鳅、邾娄人会吴于锺离。

  (传)曷为殊会吴?外吴也。曷为外也?《春秋》内其国而外诸夏,内诸夏而外夷狄。王者欲一乎天下,曷为以外内之辞言之?言自近者始也。

  (经十五十四)许迁于叶。

  !成公(经十六一)十有六年

  春,王正月,雨木冰。

  (传)雨木冰者何?雨而木冰也。何以书?记异也。

  (经十六二)夏,四月辛未,滕子卒。

  (经十六三)郑公子喜帅师侵宋。

  (经十六四)六月丙寅朔,日有食之。

  (经十六五)晋侯使栾黡来乞师。

  (经十六六)甲午晦。

  (传)晦者何?冥也。何以书?记异也。

  (经十六九)晋侯及楚子、郑伯战于鄢陵,楚子、郑师败绩。

  (传)败者称师,楚何以不称师?王痍也。王痍者何?伤乎矢也。然则何以不言师败绩?末言尔。

  (经十六十)楚杀其大夫公子侧。

  (经十六十一)秋,公会晋侯、齐侯、卫侯、宋华元、邾娄人于沙随。不见公,公至自会。

  (传)不见公者何?公不见见也。公不见见,大夫执。何以致会?不耻也。曷为不耻?公幼也。

  (经十六十二)公会尹子、晋侯、齐国佐、邾娄人伐郑。

  (经十六十三)曹伯归自京师。

  (传)执而归者名,曹伯何以不名?而不言复归于曹何?易也。其易奈何?公子喜时在内也。公子喜时在内,则何以易?公子喜时者仁人也。内平其国而待之,外治诸京师而免之。其言自京师何?言甚易也,舍是无难矣!

  (经十六十四)九月,晋人执季孙行父,舍之于招丘。

  (传)执未可言舍之者,此其言舍之何?仁之也,曰在招丘悕矣。执未有言仁之者,此其言仁之何?代公执也,其代公执奈何?前此者晋人来乞师而不与。公会晋侯,将执公,季孙行父曰:「此臣之罪也。」于是执季孙行父。成公将会晋厉公,会不当期,将执公。季孙行父曰:「臣有罪,执其君;子有罪,执其父;此听失之大者也。今此臣之罪也,舍臣之身而执臣之君,吾恐听失之为宗庙羞也。」于是执季孙行父。

  (经十六十五)冬,十月乙亥,叔孙侨如出奔齐。

  (经十六十六)十有二月乙丑,季孙行父及晋郄州盟于扈。

  (经十六十七)公至自会。

  (经十六十八)乙酉,刺公子偃。

  !成公(经十七一)十有七年

  春,卫北宫结率师侵郑。

  (经十七二)夏,公会尹子、单子、晋侯、齐侯、宋公、卫侯、曹伯、邾娄人伐郑。六月,乙酉,同盟于柯陵。

  (经十七三)秋,公至自会。

  (经十七四)齐高无咎出奔莒。

  (经十七五)九月辛丑,用郊。

  (传)用者何?用者不宜用也。九月非所用郊也。然则郊曷用?郊用正月上辛,或曰用然后郊。

  (经十七六)晋侯使荀罃来乞师。

  (经十七七)冬,公会单子、晋侯、宋公、卫侯、曹伯、齐人、邾娄人伐郑。十有一月,公至自伐郑。

  (经十七八)壬申,公孙婴齐卒于狸轸。

  (传)非此月日也,曷为以此月日卒之?待君命然后卒大夫。曷为待君命然后卒大夫?前此者婴齐走之晋,公会晋侯,将执公。婴齐为公请,公许之反为大夫,归。至于狸轸而卒。无君命不敢卒大夫,公至,曰:「吾固许之反为大夫。」然后卒之。

  (经十七九)十有二月丁巳朔,日有食之。

  (经十七十)邾娄子貜且卒。

  (经十七十一)晋杀其大夫郄锜、郄州、郄至。

  (经十七十二)楚人灭舒庸。

  !成公(经十八一)十有八年

  春,王正月,晋杀其大夫胥童。庚申,晋弒其君州蒲。

  (经十八二)齐杀其大夫国佐。

  (经十八三)公如晋。

  (经十八四)夏,楚子、郑伯伐宋。

  (经十八五)宋鱼石复入于彭城。

  (经十六六)公至自晋。

  (经十八七)晋侯使士丐来聘。

  (经十八八)秋,杞伯来朝。八月,邾娄子来朝。

  (经十八九)筑鹿囿。

  (传)何以书?讥。何讥尔?有囿矣,又为也。

  (经十八十)己丑,公薨于路寝。

  (经十八十一)冬,楚人、郑人侵宋。

  (经十八十二)晋侯使士彭来乞师。

  (经十八十三)十有二月,仲孙蔑会晋侯、宋公、卫侯、邾娄子、齐崔杼同盟于虚朾。

  (经十八十四)丁未,葬我君成公。

  公羊传襄公

  !襄公(经一一)元年

  春,王正月,公即位。

  (经一二)仲孙蔑会晋栾黡、宋华元、卫宁殖、曹人、莒人、邾娄人、滕人、薛人围宋彭城。

  (传)宋华元曷为与诸侯围宋彭城?为宋诛也。其为宋诛奈何?鱼石走之楚,楚为之伐宋,取彭城以封鱼石。鱼石之罪奈何?以入是为罪也。楚已取之矣,曷为系之宋?不与诸侯专封也。

  (经一三)夏,晋韩屈帅师伐郑。

  (经一四)仲孙蔑会齐崔杼、曹人、邾娄人、杞人次于合。

  (经一五)秋,楚公子壬夫帅师侵宋。

  (经一六)九月辛酉,天王崩。

  (经一七)邾娄子来朝。

  (经一八)冬,卫侯使公孙剽来聘。

  (经一九)晋侯使荀罃来聘。

  !襄公(经二一)二年

  春,王正月,葬简王。

  (经二二)郑师伐宋。

  (经二三)夏,五月庚寅,夫人姜氏薨。

  (经二四)六月庚辰,郑伯睔卒。

  (经二五)晋师、宋师、卫宁殖侵郑。

  (经二六)秋,七月,仲孙蔑会晋荀罃、宋华元、卫孙林父、曹人、邾娄人于戚。

  (经二七)己丑,葬我小君齐姜。

  (传)齐姜者何?齐姜与缪姜,则未知其为宣夫人与?成夫人与?

  (经二八)叔孙豹如宋。

  (经二九)冬,仲孙蔑会晋荀罃、齐崔杼、宋华元、卫孙林父、曹人、邾娄人、滕人、薛人、小邾娄人于戚,遂城虎牢。

  (传)虎牢者何?郑之邑也。其言城之何?取之也。取之则曷为不言取之?为中国讳也。曷为为中国讳?讳伐丧也。曷为不系乎郑?为中国讳也。大夫无遂事,此其言遂何?归恶乎大夫也。

  (经二十)楚杀其大夫公子申。

  !襄公(经三一)三年

  春,楚公子婴齐帅师伐吴。

  (经三二)公如晋。

  (经三三)夏,四月壬戌,公及晋侯盟于长樗。

  (经三四)公至自晋。

  (经三五)六月,公会单子、晋侯、宋公、卫侯、郑伯、莒子、邾娄子、齐世子光;己未,同盟于鸡泽。陈侯使袁侨如会。

  (传)其言如会何?后会也。

  (经三六)戊寅,叔孙豹及诸侯之大夫及陈袁侨盟。

  (传)曷为殊及陈袁侨?为其与袁侨盟也。

  (经三七)秋,公至自会。

  (经三八)冬,晋荀罃帅师伐许。

  !襄公(经四一)四年

  春,王三月己酉,陈侯午卒。

  (经四二)夏,叔孙豹如晋。

  (经四三)秋,七月戊子,夫人弋氏薨。

  (经四四)葬陈成公。

  (经四五)八月辛亥,葬我小君定弋。

  (传)定弋者,襄公之母也。

  (经四六)冬,公如晋。

  (经四七)陈人围顿。

  !襄公(经五一)五年

  春,公至自晋。

  (经五二)夏,郑伯使公子发来聘。

  (经五三)叔孙豹、鄫世子巫如晋。

  (传)外相如不书,此何以书?为叔孙豹率而与之俱也。叔孙豹则曷为率而与之俱?盖舅出也。莒将灭之,故相与往殆乎晋也。莒将灭之,则曷为相与往殆乎晋?取后乎莒也。其取后乎莒奈何?莒女有为鄫夫人者,盖欲立其出也。

  (经五四)仲孙蔑、卫孙林父会吴于善稻。

  (经五五)秋,大雩。

  (经五六)楚杀其大夫公子壬夫。

  (经五七)公会晋侯、宋公、陈侯、卫侯、郑伯、曹伯、莒子、邾娄子、滕子、薛伯、齐世子光、吴人、鄫人于戚。

  (传)吴何以称人?吴、鄫人云则不辞。

  (经五八)公至自会。

  (经五九)冬,戍陈。

  (传)孰戍之?诸侯戍之。曷为不言诸侯戍之?离至不可得而序,故言我也。

  (经五十)楚公子贞帅师伐陈。

  (经五十一)公会晋侯、宋公、卫侯、郑伯、曹伯、莒子、邾娄子、滕子、薛伯、齐世子光,救陈。十有二月,公至自救陈。

  (经五十二)辛未,季孙行父卒。

  !襄公(经六一)六年

  春,王三月壬午,杞伯姑容卒。

  (经六二)夏,宋华弱来奔。

  (经六三)秋,葬杞桓公。

  (经六四)滕子来朝。

  (经六五)莒人灭鄫。

  (经六六)冬,叔孙豹如邾娄。

  (经六七)季孙宿如晋。

  (经六八)十有二月,齐侯灭莱。

  (传)曷为不言莱君出奔?国灭,君死之,正也。

  !襄公(经七一)七年

  春,郯子来朝。

  (经七二)夏,四月,三卜郊,不从,乃免牲。

  (经七三)小邾娄子来朝。

  (经七四)城费。

  (经七五)秋,季孙宿如卫。

  (经七六)八月,螽。

  (经七七)冬,十月,卫侯使孙林父来聘。

  (经七八)壬戌,及孙林父盟。

  (经七九)楚公子贞帅师围陈。

  (经七十)十有二月,公会晋侯、宋公、陈侯、卫侯、曹伯、莒子、邾娄子于鄬。郑伯髡原如会,未见诸侯;丙戌,卒于操。

  (传)操者何?郑之邑也。诸侯卒其封内不地,此何以地?隐之也。何隐尔?弒也。孰弒之?其大夫弒之。曷为不言其大夫弒之?为中国讳也。曷为为中国讳?郑伯将会诸侯于鄬,其大夫谏曰:「中国不足归也,则不若与楚。」郑伯曰:「不可。」其大夫曰:「以中国为义,则伐我丧;以中国为强,则不若楚。」于是弒之。郑伯髡原何以名?伤而反,未至乎舍而卒也。未见诸侯,其言如会何?致其意也。

  (经七十一)陈侯逃归。

  !襄公(经八一)八年

  春,王正月,公如晋。

  (经八二)夏,葬郑僖公。

  (传)贼未讨,何以书葬?为中国讳也。

  (经八三)郑人侵蔡,获蔡公子燮。

  (传)此侵也,其言获何?侵而言获者,适得之也。

  (经八四)季孙宿会晋侯、郑伯、齐人、宋人、卫人、邾娄人于刑丘。公至自晋。

  (经八五)莒人伐我东鄙。

  (经八六)秋,九月,大雩。

  (经八七)冬,楚公子贞帅师伐郑。

  (经八八)晋侯使士丐来聘。

  !襄公(经九一)九年

  春,宋火。

  (传)曷为或言灾?或言火?大者曰灾,小者曰火。然则内何以不言火?内不言火者,甚之也。何以书?记灾也。外灾不书,此何以书?为王者之后记灾也。

  (经九二)夏,季孙宿如晋。

  (经九三)五月辛酉,夫人姜氏薨。

  (经九四)秋,八月癸未,葬我小君缪姜。

  (经九五)冬,公会晋侯、宋公、卫侯、曹伯、莒子、邾娄子、滕子、薛伯、杞伯、小邾娄子、齐世子光伐郑。十有二月己亥,同盟于戏。

  (经九六)楚子伐郑。

  !襄公(经十一)十年

  春,公会晋侯、宋公、卫侯、曹伯、莒子、邾娄子、滕子、薛伯、杞伯、小邾娄子、齐世子光会吴于柤。

  (经十二)夏,五月甲午,遂灭偪阳。公至自会。

  (经十三)楚公子贞、郑公孙辄帅师伐宋。

  (经十四)晋师伐秦。

  (经十五)秋,莒人伐我东鄙。公会晋侯、宋公、卫侯、曹伯、莒子、邾娄子、齐世子光、滕子、薛伯、杞伯、小邾娄子伐郑。

  (经十六)冬,盗杀郑公子斐、公子发、公孙辄。戍郑虎牢。

  (传)孰戍之?诸侯戍之。曷为不言诸侯戍之?离至不可得而序,故言我也。诸侯已取之矣,曷为系之郑?诸侯莫之主有,故反系之郑。

  (经十七)楚公子贞帅师救郑。

  (经十八)公至自伐郑。

  !襄公(经十一一)十有一年

  春,王正月,作三军。

  (传)三军者何?三卿也。作三军,何以书?讥。何讥尔?古者上卿、下卿,上士、下士。

  (经十一二)夏,四月,四卜郊,不从,乃不郊。

  (经十一三)郑公孙舍之帅师侵宋。

  (经十一四)公会晋侯、宋公、卫侯、曹伯、齐世子光、莒子、邾娄子、滕子、薛伯、杞伯、小邾娄子伐郑。

  (经十一五)秋,七月己未,同盟于京城北。

  (经十一六)公至自伐郑。

  (经十一七)楚子、郑伯伐宋。

  (经十一八)公会晋侯、宋公、卫侯、曹伯、齐世子光、莒子、邾娄子、滕子、薛伯、杞伯、小邾娄子伐郑,会于萧鱼。

  (传)此伐郑也,其言会于萧鱼何?盖郑与会尔。

  (经十一九)公至自会。

  (经十一十)楚人执郑行人良霄。

  (经十一十一)冬,秦人伐晋。

  !襄公(经十二一)十有二年

  春,王三月,莒人伐我东鄙,围台。

  (传)邑不言围,此其言围何?伐而言围者,取邑之辞也;伐而不言围者,非取邑之辞也。

  (经十二二)季孙宿帅师救台,遂入运。

  (传)大夫无遂事,此其言遂何?公不得为政尔。

  (经十二三)夏,晋侯使士彭来聘。

  (经十二四)秋,九月,吴子乘卒。

  (经十二五)冬,楚公子贞帅师侵宋。

  (经十二六)公如晋。

  !襄公(经十三一)十有三年

  春,公至自晋。

  (经十三二)夏,取诗。

  (传)诗者何?邾娄之邑也。曷为不系乎邾娄?讳亟也。

  (经十三三)秋,九月庚辰,楚子审卒。

  (经十三四)冬,城防。

  !襄公(经十四一)十有四年

  春,王正月,季孙宿、叔老会晋士丐、齐人、宋人、卫人、郑公孙囆、曹人、莒人、邾娄人、滕人、薛人、杞人、小邾娄人会吴于向。

  (经十四二)二月乙未朔,日有食之。

  (经十四二)夏,四月,叔孙豹会晋荀偃、齐人、宋人、卫北宫结、郑公孙囆、曹人、莒人、邾娄人、滕人、薛人、杞人、小邾娄人伐秦。

  (经十四三)己未,卫侯衎出奔齐。

  (经十四四)莒人侵我东鄙。

  (经十四五)秋,楚公子贞帅师伐吴。

  (经十四六)冬,季孙宿会晋士丐、宋华阅、卫孙林父、郑公孙囆、莒人、邾娄人于戚。

  !襄公(经十五一)十有五年

  春,宋公使向戌来聘。二月己亥,及向戌盟于刘。

  (经十五二)刘夏逆王后于齐。

  (传)刘夏者何?天子之大夫也。刘者何?邑也。其称刘何?以邑氏也。外逆女不书,此何以书?过我也。

  (经十五三)夏,齐侯伐我北鄙,围成。公救成,至遇。

  (传)其言至遇何?不敢进也。

  (经十五四)季孙宿、叔孙豹帅师城成郛。

  (经十五五)秋,八月丁巳,日有食之。

  (经十五六)邾娄人伐我南鄙。

  (经十五七)冬,十有一月癸亥,晋侯周卒。

  !襄公(经十六一)十有六年

  春,王正月,葬晋悼公。

  (经十六二)三月,公会晋侯、宋公、卫侯、郑伯、曹伯、莒子、邾娄子、薛伯、杞伯、小邾娄子于湨梁;戊寅,大夫盟。

  (传)诸侯皆在是,其言大夫盟何?信在大夫也。何言乎信在大夫?遍剌天下之大夫也。曷为遍剌天下之大夫?君若赘旒然。

  (经十六三)晋人执莒子、邾娄子以归。

  (经十六四)齐侯伐我北鄙。

  (经十六五)夏,公至自会。

  (经十六六)五月甲子,地震。

  (经十六七)叔老会郑伯、晋荀偃、卫宁殖、宋人,伐许。

  (经十六八)秋,齐侯伐我北鄙,围成。

  (经十六九)大雩。

  (经十六十)冬,叔孙豹如晋。

  !襄公(经十七一)十有七年

  春,王二月庚午,邾娄子瞷卒。

  (经十七二)宋人伐陈。

  (经十七三)夏,卫石买帅师伐曹。

  (经十七四)秋,齐侯伐我北鄙,围洮。齐高厚帅师伐我北鄙,围防。

  (经十七五)九月,大雩。

  (经十七六)宋华臣出奔陈。

  (经十七七)冬,邾娄人伐我南鄙。

  !襄公(经十八一)十有八年

  春,白狄来。

  (传)白狄者何?夷狄之君也。何以不言朝?不能朝也。

  (经十八二)夏,晋人执卫行人石买。

  (经十八三)秋,齐师伐我北鄙。

  (经十八四)冬,十月,公会晋侯、宋公、卫侯、郑伯、曹伯、莒子、邾娄子、滕子、薛伯、杞伯、小邾娄子同围齐;曹伯负刍卒于师。

  (经十八五)楚公子午帅师伐郑。

  !襄公(经十九一)十有九年

  春,王正月,诸侯盟于祝阿。

  (经十九二)晋人执邾娄子。

  (经十九三)公至自伐齐。

  (传)此同围齐也,何以致伐?未围齐也。未围齐则其言围齐何?抑齐也。曷为抑齐?为其亟伐也;或曰为其骄蹇,使其世子处乎诸侯之上也。

  (经十九四)取邾娄田,自漷水。

  (传)其言自漷水何?以漷为竟也。何言乎以漷为竟?漷移也。

  (经十九五)季孙宿如晋。

  (经十九六)葬曹成公。

  (经十九七)夏,卫孙林父帅师伐齐。

  (经十九八)秋,七月辛卯,齐侯瑗卒。

  (经十九九)晋士丐帅师侵齐,至谷,闻齐侯卒,乃还。

  (传)还者何?善辞也。何善尔?大其不伐丧也。此受命乎君而伐齐,则何大乎其不伐丧?大夫以君命出,进退在大夫也。

  (经十九十)八月丙辰,仲孙蔑卒。

  (经十九十一)齐杀其大夫高厚。

  (经十九十二)郑杀其大夫公子喜。

  (经十九十三)冬,葬齐灵公。

  (经十九十四)城西郛。

  (经十九十五)叔孙豹会晋士丐于柯。

  (经十九十六)城武城。

  !襄公(经二十一)二十年

  春,王正月辛亥,仲孙遬会莒人盟于向。

  (经二十二)夏,六月庚申,公会晋侯、齐侯、宋公、卫侯、郑伯、曹伯、莒子、邾娄子、滕子、薛伯、杞伯、小邾娄子盟于澶渊。

  (经二十三)秋,公至自会。

  (经二十四)仲孙遬帅师伐邾娄。

  (经二十五)蔡杀其大夫公子燮。

  (经二十六)蔡公子履出奔楚。

  (经二十七)陈侯之弟光出奔楚。

  (经二十八)叔老如齐。

  (经二十九)冬,十月丙辰朔,日有食之。

  (经二十十)季孙宿如宋。

  !襄公(经二一一)二十有一年

  春,王正月,公如晋。

  (经二一二)邾娄庶其以漆闾丘来奔。

  (传)邾娄庶其者何?邾娄大夫也。邾娄无大夫,此何以书?重地也。

  (经二一三)夏,公至自晋。

  (经二一四)秋,晋栾盈出奔楚。

  (经二一五)九月庚戌朔,日有食之。

  (经二一六)冬,十月庚辰朔,日有食之。

  (经二一七)曹伯来朝。

  (经二一八)公会晋侯、齐侯、宋公、卫侯、郑伯、曹伯、莒子、邾娄子于商任。

  (经二一九)十有一月庚子,孔子生。

  !襄公(经二二一)二十有二年

  春,王正月,公至自会。

  (经二二二)夏,四月。

  (经二二三)秋,七月辛酉,叔老卒。

  (经二二四)冬,公会晋侯、齐侯、宋公、卫侯、郑伯、曹伯、莒子、邾娄子、滕子、薛伯、杞伯、小邾娄子于沙随。公至自会。

  (经二二五)楚杀其大夫公子追舒。

  !襄公(经二三一)二十有三年

  春,王二月癸酉朔,日有食之。

  (经二三二)三月己巳,杞伯丐卒。

  (经二三三)夏,邾娄鼻我来奔。

  (传)邾娄鼻我者何?邾娄大夫也。邾娄无大夫,此何以书?以近书也。

  (经二三四)葬杞孝公。

  (经二三五)陈杀其大夫庆虎及庆寅。

  (经二三六)陈侯之弟光自楚归于陈。

  (经二三七)晋栾盈复入于晋、入于曲沃。

  (传)曲沃者何?晋之邑也。其言入于晋、入于曲沃何?栾盈将入晋,晋人不纳,由乎曲沃而入也。

  (经二三八)秋,齐侯伐卫,遂伐晋。八月,叔孙豹帅师救晋,次于雍渝。

  (传)曷为先言救而后言次?先通君命也。

  (经二三九)己卯,仲孙遬卒。

  (经二三十)冬,十月乙亥,臧孙纥出奔邾娄。

  (经二三十一)晋人杀栾盈。

  (传)曷为不言杀其大夫?非其大夫也。

  (经二三十二)齐侯袭莒。

  !襄公(经二四一)二十有四年

  春,叔孙豹如晋。仲孙羯帅师侵齐。夏,楚子伐吴。

  (经二四二)秋,七月甲子朔,日有食之,既。

  (经二四三)齐崔杼帅师伐莒。

  (经二四四)大水。

  (经二四五)八月癸巳朔,日有食之。

  (经二四六)公会晋侯、宋公、卫侯、郑伯、曹伯、莒子、邾娄子、滕子、薛伯、杞伯、小邾娄子于陈仪。

  (经二四七)冬,楚子、蔡侯、陈侯、许男伐郑。公至自会。

  (经二四八)陈咸宜咎出奔楚。

  (经二四九)叔孙豹如京师。

  (经二四十)大饥。

  !襄公(经二五一)二十有五年

  春,齐崔杼帅师伐我北鄙。

  (经二五二)夏,五月乙亥,齐崔杼弒其君光。

  (经二五三)公会晋侯、宋公、卫侯、郑伯、曹伯、莒子、邾娄子、滕子、薛伯、杞伯、小邾娄子于陈仪。

  (经二五四)六月壬子,郑公孙舍之帅师入陈。

  (经二五五)秋,八月己巳,诸侯同盟于重丘,公至自会。

  (经二五六)卫侯入于陈仪。

  (传)陈仪者何?卫之邑也。曷为不言入于卫?谖君以弒也。

  (经二五七)楚屈建帅师灭舒鸠。

  (经二五八)冬,郑公孙囆帅师伐陈。

  (经二五九)十有二月,吴子谒伐楚,门于巢卒。

  (传)门于巢卒者何?入门乎巢而卒也。入门乎巢而卒者何?入巢之门而卒也。吴子谒,何以名?伤而反,未至乎舍而卒也。

  !襄公(经二六一)二十有六年

  春,王二月辛卯,卫宁喜弒其君剽。卫孙林父入于戚以叛。甲午,卫侯衎复归于卫。

  (传)此谖君以弒也,其言复归何?恶剽也。曷为恶剽?剽之立于是未有说也。然则曷为不言剽之立?不言剽之立者,以恶卫侯也。

  (经二六二)夏,晋侯使荀吴来聘。

  (经二六三)公会晋人、郑良霄、宋人、曹人于澶渊。

  (经二六四)秋,宋公弒其世子痤。

  (经二六五)晋人执卫宁喜。

  (传)此执有罪,何以不得为伯讨?不以其罪执之也。

  (经二六六)八月壬午,许男宁卒于楚。

  (经二六七)冬,楚子、蔡侯、陈侯伐郑。

  (经二六八)葬许灵公。

  !襄公(经二七一)二十有七年

  春,齐侯使庆封来聘。

  (经二七二)夏,叔孙豹会晋赵武、楚屈建、蔡公孙归生、卫石恶、陈孔瑗、郑良霄、许人、曹人于宋。

  (经二七三)卫杀其大夫宁喜,卫侯之弟鱄出奔晋。

  (传)卫杀其大夫宁喜,则卫侯之弟鱄曷为出奔晋?为杀宁喜出奔也。曷为为杀宁喜出奔?卫宁殖与孙林父逐卫侯而立公孙剽,宁殖病将死,谓喜曰:「黜公者,非吾意也,孙氏为之。我即死,女能固纳公乎?」喜曰:「诺。」宁殖死,喜立为大夫,使人谓献公曰:「黜公者,非宁氏也,孙氏为之。吾欲纳公,何如?」献公曰:「子茍欲纳我,吾请与子盟。」喜曰:「无所用盟,请使公子鱄约之。」献公谓公子鱄曰:「宁氏将纳我,吾欲与之盟。其言曰:『无所用盟,请使公子鱄约之。』子固为我与之约矣。」公子鱄辞曰:「夫负羁絷,执鈇锧,从君东西南北,则是臣仆庶孽之事也。若夫约言为信,则非臣仆庶孽之所敢与也。」献公怒曰:「黜我者,非宁氏与孙氏,凡在尔。」公子鱄不得已而与之约。已约,归至,杀宁喜。公子鱄挈其妻子而去之,将济于河,携其妻子而与之盟,曰:「茍有履卫地、食卫粟者,昧雉彼视。」

  (经二七四)秋,七月辛巳,豹及诸侯之大夫盟于宋。

  (传)曷为再言豹?殆诸侯也。曷为殆诸侯?为卫石恶在是也,曰恶人之徒在是矣。

  (经二七五)冬,十有二月乙亥朔,日有食之。

  !襄公(经二八一)二十有八年

  春,无冰。

  (经二八二)夏,卫石恶出奔晋。

  (经二八三)邾娄子来朝。

  (经二八四)秋,八月,大雩。

  (经二八五)仲孙羯如晋。

  (经二八六)冬,齐庆封来奔。

  (经二八七)十有一月,公如楚。

  (经二八八)十有二月甲寅,天王崩。

  (经二八九)乙未,楚子昭卒。

  !襄公(经二九一)二十有九年

  春,王正月,公在楚。

  (传)何言乎公在楚?正月以存君也。

  (经二九二)夏,五月,公至自楚。

  (经二九三)庚午,卫侯衎卒。

  (经二九四)阍弒吴子余祭。

  (传)阍者何?门人也,刑人也。刑人则曷为谓之阍?刑人非其人也。君子不近刑人,近刑人则轻死之道也。

  (经二九五)仲孙羯会晋荀盈、齐高止、宋华定、卫世叔齐、郑公孙段、曹人、莒人、邾娄人、滕人、薛人、小邾娄人城杞。

  (经二九六)晋侯使士鞅来聘。

  (经二九七)杞子来盟。

  (经二九八)吴子使札来聘。

  (传)吴无君、无大夫,此何以有君、有大夫?贤季子也。何贤乎季子?让国也。其让国奈何?谒也、余祭也、夷昧也与季子同母者四,季子弱而才,兄弟皆爱之,同欲立之以为君,谒曰:「今若是迮而与季子国,季子犹不受也,请无与子而与弟,弟兄迭为君,而致国乎季子。」皆曰:「诺。」故诸为君者,皆轻死为勇,饮食必祝,曰:「天茍有吴国,尚速有悔于予身。」故谒也死,余祭也立。余祭也死,夷昧也立。夷昧也死,则国宜之季子者也。季子使而亡焉。僚者长庶也,即之,季子使而反,至,而君之尔。阖庐曰:「先君之所以不与子国而与弟者,凡为季子故也。将从先君之命与,则国宜之季子者也;如不从先君之命与,则我宜立者也,僚恶得为君乎?」于是使专诸剌僚,而致国乎季子。季子不受,曰:「尔弒吾君,吾受尔国,是吾与尔为篡也。尔杀吾兄,吾又杀尔,是父子兄弟相杀,终身无已也。」去之延陵,终身不入吴国。故君子以其不受为义,以其不杀为仁。贤季子则吴何以有君、有大夫?以季子为臣,则宜有君者也。札者何?吴季子之名也。《春秋》贤者不名,此何以名?许夷狄者不壹而足也。季子者所贤也,曷为不足乎季子?许人臣者必使臣,许人子者必使子也。

  (经二九九)秋,九月,葬卫献公。

  (经二九十)齐高止出奔北燕。

  (经二九十一)冬,仲孙羯如晋。

  !襄公(经三十一)三十年

  春,王正月,楚子使薳颇来聘。

  (经三十二)夏,四月,蔡世子般弒其君固。

  (经三十三)五月甲午,宋灾,伯姬卒。

  (经三十四)天王杀其弟年夫。

  (经三十五)王子瑕奔晋。

  (经三十六)秋,七月,叔弓如宋,葬宋共姬。

  (传)外夫人不书葬,此何以书?隐之也。何隐尔?宋灾,伯姬卒焉。其称谥何?贤也。何贤尔?宋灾,伯姬存焉,有司复曰:「火至矣,请出。」伯姬曰:「不可。吾闻之也:妇人夜出,不见傅母不下堂。傅至矣,母未至也。」逮乎火而死。

  (经三十七)郑良霄出奔许,自许入于郑,郑人杀良霄。

  (经三十八)冬,十月,葬蔡景公。

  (传)贼未讨,何以书葬?君子辞也。

  (经三十九)晋人、齐人、宋人、卫人、郑人、曹人、莒人、邾娄人、滕人、薛人、杞人、小邾娄人会于澶渊,宋灾故。

  (传)宋灾故者何?诸侯会于澶渊,凡为宋灾故也。会未有言其所为者,此言所为何?录伯姬也。诸侯相聚,而更宋之所丧,曰:「死者不可复生,尔财复矣!」此大事也,曷为使微者?卿也。卿则其称人何?贬。曷为贬?卿不得忧诸侯也。

  !襄公(经三一一)三十有一年

  春,王正月。

  (经三一二)夏,六月辛巳,公薨于楚宫。

  (经三一三)秋,九月癸巳,子野卒。己亥,仲孙羯卒。

  (经三一四)冬,十月,滕子来会葬。癸酉,葬我君襄公。

  (经三一五)十有一月,莒人弒其君密州。

  公羊传昭公

  !昭公(经一一)元年

  春,王正月,公即位。

  (经一二)叔孙豹会晋赵武、楚公子围、齐国酌、宋向戌、卫石恶、陈公子招、蔡公孙归生、郑轩虎、许人、曹人于漷。

  (传)此陈侯之弟招也,何以不称弟?贬。曷为贬?为杀世子偃师贬,曰陈侯之弟招杀陈世子偃师。大夫相杀称人,此其称名氏以杀何?言将自是弒君也。今将尔,词曷为与亲弒者同?君亲无将,将而必诛焉。然则曷为不于其弒焉贬?以亲者弒,然后其罪恶甚,《春秋》不待贬绝而罪恶见者,不贬绝以见罪恶也。贬绝然然罪恶见者,贬绝以见罪恶也。今招之罪已重矣,曷为复贬乎此?着招之有罪也。何着乎招之有罪?言楚之托乎讨招以灭陈也。

  (经一三)三月,取运。

  (传)运者何?内之邑也。其言取之何?不听也。

  (经一四)夏,秦伯之弟针出奔晋。

  (传)秦无大夫,此何以书?仕诸晋也。曷为仕诸晋?有千乘之国,而不能容其母弟,故君子谓之出奔也。

  (经一五)六月丁巳,邾娄子华卒。

  (经一六)晋荀吴帅师败狄于大原。

  (传)此大卤也,曷为谓之大原?地物从中国,邑人名从主人。原者何?上平曰原,下平曰隰。

  (经一七)秋,莒去疾自齐入于莒。莒展出奔吴。叔弓帅师疆运田。

  (传)疆运田者何?与莒为竟也。与莒为竟,则曷为帅师而往?畏莒也。

  (经一八)葬邾娄悼公。

  (经一九)冬,十有一月己酉,楚子卷卒。

  (经一十)楚公子比出奔晋。

  !昭公(经二一)二年

  春,晋侯使韩起来聘。

  (经二二)夏,叔弓如晋。

  (经二三)秋,郑杀其大夫公孙黑。

  (经二四)冬,公如晋,至河乃复。

  (传)其言至河乃复何?不敢进也。

  (经二五)季孙宿如晋。

  !昭公(经三一)三年

  春,王正月丁未,滕子泉卒。

  (经三二)夏,叔弓如滕。

  (经三三)五月,葬滕成公。

  (经三四)秋,小邾娄子来朝。

  (经三五)八月,大雩。

  (经三六)冬,大雨雹。

  (经三七)北燕伯款出奔齐。

  !昭公(经四一)四年

  春,王正月,大雨雪。

  (经四二)夏,楚子、蔡侯、陈侯、郑伯、许男、徐子、滕子、顿子、胡子、沈子、小邾娄子、宋世子佐、淮夷会于申。

  (经四三)楚人执徐子。

  (经四四)秋,七月,楚子、蔡侯、陈侯、许男、顿子、胡子、沈子、淮夷伐吴,执齐庆封,杀之。

  (传)此伐吴也,其言执齐庆封何?为齐诛也。其为齐诛奈何?庆封走之吴,吴封之于防。然则曷为不言伐防?不与诸侯专封也。庆封之罪何?胁齐君而乱齐国也。

  (经)遂灭厉。

  (经四五)九月,取鄫。

  (传)其言取之何?灭之也。灭之则其言取之何?内大恶,讳也。

  (经四六)冬,十有二月乙卯,叔孙豹卒。

  !昭公(经五一)五年

  春,王正月,舍中军。

  (传)舍中军者何?复古也。然则曷为不言三卿?五亦有中,三亦有中。

  (经五二)楚杀其大夫屈申。

  (经五三)公如晋。

  (经五四)夏,莒牟夷以牟娄及防兹来奔。

  (传)莒牟夷者何?莒大夫也。莒无大夫,此何以书?重地也。其言及防兹来奔何?不以私邑累公邑也。

  (经五五)秋,七月,公至自晋。

  (经五六)戊辰,叔弓帅师败莒师于濆泉。

  (传)濆泉者何?直泉也。直泉者何?涌泉也。

  (经五五)秦伯卒。

  (传)何以不名?秦者夷也,匿嫡之名也。其名何?嫡得之也。

  (经五六)冬,楚子、蔡侯、陈侯、许男、顿子、沈子、徐人、越人伐吴。

  !昭公(经六一)六年

  春,王正月,杞伯益姑卒。

  (经六二)葬秦景公。

  (经六三)夏,季孙宿如晋。

  (经六四)葬杞文公。

  (经六五)宋华合比出奔卫。

  (经六六)秋,九月,大雩。

  (经六七)楚薳颇帅师伐吴。

  (经六八)冬,叔弓如楚。

  (经六九)齐侯伐北燕。

  !昭公(经七一)七年

  春,王正月,暨齐平。

  (经七二)三月,公如楚。

  (经七三)叔孙舍如齐莅盟。

  (经七四)夏,四月甲辰朔,日有食之。

  (经七五)秋,八月戊辰,卫侯恶卒。

  (经七六)九月,公至自楚。

  (经七七)冬,十有一月癸未,季孙宿卒。

  (经七八)十有二月癸亥,葬卫襄公。

  !昭公(经八一)八年

  春,陈侯之弟招杀陈世子偃师。

  (经八二)夏,四月辛丑,陈侯溺卒。

  (经八三)叔弓如晋。

  (经八四)楚人执陈行人于征师杀之。

  (经八五)陈公子留出奔郑。

  (经八六)秋,搜于红。

  (传)搜者何?简车徒也。何以书?盖以罕书也。

  (经八七)陈人杀其大夫公子过。

  (经八八)大雩。

  (经八九)冬,十月壬午,楚师灭陈,执陈公子招,放之于越,杀陈孔瑗。

  (经八十)葬陈哀公。

  !昭公(经九一)九年

  春,叔弓会楚子于陈。

  (经九二)许迁于夷。

  (经九三)夏,四月,陈火。

  (传)陈已灭矣,其言陈火何?存陈也,曰存陈悕矣!曷为存陈?灭人之国,执人之罪人,杀人之贼,葬人之君,若是则陈存悕矣!

  (经九四)秋,仲孙貜如齐。

  (经九五)冬,筑郎囿。

  !昭公(经十一)十年

  春,王正月。

  (经十二)夏,晋栾施来奔。

  (经十三)秋,七月,季孙隐如、叔弓、仲孙貜帅师伐莒。

  (经十四)戊子,晋侯彪卒。

  (经十五)九月,叔孙舍如晋。

  (经十六)葬晋平公。

  (经十七)十有二月甲子,宋公戍卒。

  !昭公(经十一一)十有一年

  春,王正月,叔弓如宋。

  (经十一二)葬宋平公。

  (经十一三)夏,四月丁巳,楚子虔诱蔡侯般,杀之于申。

  (传)楚子虔何以名?绝也。曷为绝之?为其诱封也。此讨贼也,虽诱之则曷为绝之?怀恶而讨不义,君子不予也。

  (经十一四)楚公子弃疾帅师围蔡。

  (经十一五)五月甲申,夫人归氏薨。

  (经十一六)大搜于比蒲。

  (传)大搜者何?简车徒也。何以书?盖以罕书也。

  (经十一七)仲孙貜会邾娄子,盟于侵羊。

  (经十一八)秋,季孙隐如会晋韩起、齐国酌、宋华亥、卫北宫佗、郑轩虎、曹人、杞人于屈银。

  (经十一九)九月,己亥,葬我小君齐归。

  (传)齐归者何?昭公之母也。

  (经十一十)冬,十有一月丁酉,楚师灭蔡,执蔡世子有以归,用之。

  (传)此未逾年之君也,其称世子何?不君灵公,不成其子也。不君灵公,则曷为不成其子?诛君之子不立,非怒也,无继也。恶乎用之?用之防也。其用之防奈何?盖以筑防也。

  !昭公(经十二一)十有二年

  春,齐高偃师师纳北燕伯于阳。

  (传)伯于阳者何?公子阳生也。子曰:「我乃知之矣。」在侧者曰:「子茍知之,何以不革?」曰:「如尔所不知何?《春秋》之信史也,其序则齐桓、晋文,其会则主会者为之也,其词则丘有罪焉耳!」

  (经十二二)三月壬申,郑伯嘉卒。

  (经十二三)夏,宋公使华定来聘。

  (经十二四)公如晋,至河乃复。

  (经十二五)五月,葬郑简公。

  (经十二六)楚杀其大夫成然。

  (经十二七)秋,七月。

  (经十二八)冬,十月,公子整出奔齐。

  (经十二九)楚子伐徐。

  (经十二十)晋伐鲜虞。

  !昭公(经十三一)十有三年

  春,叔弓帅师围费。

  (经十三二)夏,四月,楚公子比自晋归于楚,弒其君虔于干溪。

  (传)此弒其君,其言归何?归无恶于弒立也。归无恶于弒立者何?灵王为无道,作干溪之台,三年不成,楚公子弃疾胁比而立之。然后令于干溪之役曰:「比已立矣,后归者不得复其田里。」众罢而去之,灵王经而死。楚公子弃疾弒公子比,比已立矣,其称公子何?其意不当也。其意不当,则曷为加弒焉尔?比之义宜乎效死不立。大夫相杀称人,此其称名氏以弒何?言将自是为君也。

  (经十三三)秋,公会刘子、晋侯、齐侯、宋公、卫侯、郑伯、曹伯、莒子、邾娄子、滕子、薛伯、杞伯、小邾娄子于平丘。八月甲戌,同盟于平丘;公不与盟,晋人执季孙隐如以归。公至自会。

  (传)公不与盟者何?公不见与盟也。公不见与盟,大夫执,何以致会?不耻也。曷为不耻?诸侯遂乱,反陈、蔡,君子不耻不与焉!

  (经十三四)蔡侯庐归于蔡。陈侯吴归于陈。

  (传)此皆灭国也,其言归何?不与诸侯专封也。

  (经十三五)冬,十月,葬蔡灵公。

  (经十三六)公如晋,至河乃复。

  (经十三七)吴灭州来。

  !昭公(经十四一)十有四年

  春,隐如至自晋。

  (经十四二)三月,曹伯滕卒。

  (经十四三)夏,四月。

  (经十四四)秋,葬曹武公。

  (经十四五)八月,莒子去疾卒。

  (经十四六)冬,莒杀其公子意恢。

  !昭公(经十五一)十有五年

  春,王正月,吴子夷昧卒。

  (经十五二)二月癸酉,有事于武宫。

  (经十五三)龠入,叔弓卒,去乐卒事。

  (传)其言去乐卒事何?礼也。君有事于庙,闻大夫之丧,去乐,卒事。大夫闻君之丧,摄主而往。大夫闻大夫之丧,尸事毕而往。

  (经十五四)夏,蔡昭吴奔郑。

  (经十五五)六月丁巳朔,日有食之。

  (经十五六)秋,晋荀吴帅师伐鲜虞。

  (经十五七)冬,公如晋。

  !昭公(经十六一)十有六年

  春,齐侯伐徐。

  (经十六二)楚子诱戎曼子,杀之。

  (传)楚子何以不名?夷狄相诱,君子不疾也。曷为不疾?若不疾,乃疾之也。

  (经十六三)夏,公至自晋。

  (经十六四)秋,八月己亥,晋侯夷卒。

  (经十六五)九月,大雩。

  (经十六七)季孙隐如如晋。

  (经十六八)冬,十月,葬晋昭公。

  !昭公(经十七一)十有七年

  春,小邾娄子来朝。

  (经十七二)夏,六月甲戌朔,日有食之。

  (经十七三)秋,郯子来朝。

  (经十七四)八月,晋荀吴帅师灭贲浑戎。

  (经十七五)冬,有星孛于大辰。

  (传)孛者何?彗星也。其言于大辰何?在大辰也。大辰者何?大火也。大火为大辰,伐为大辰,北辰亦为大辰。何以书?记异也。

  (经十七六)楚人及吴战于长岸。

  (传)诈战不言战,此其言战何?敌也。

  !昭公(经十八一)十有八年

  春,王三月,曹伯须卒。

  (经十八二)夏,五月,壬午,宋、卫、陈、郑灾。

  (传)何以书?记异也。何异尔?异其同日而俱灾也。外异不书,此何以书?为天下记异也。

  (经十八三)六月,邾娄人入鄅。

  (经十八四)秋,葬曹平公。

  (经十八五)冬,许迁于白羽。

  !昭公(经十九一)十有九年

  春,宋公伐邾娄。

  (经十九二)夏,五月戊辰,许世子止弒其君买。

  (经十九三)己卯,地震。

  (经十九四)秋,齐高发帅师伐莒。

  (经十九五)冬,葬许悼公。

  (传)贼未讨,何以书葬?不成于弒也。曷为不成于弒?止进药而药杀也。止进药而药杀,则曷为加弒焉尔?讥子道之不尽也。其讥子道之不尽奈何?曰:乐正子春之视疾也。复加一饭则脱然愈,复损一饭则脱然愈;复加一衣则脱然愈,复损一衣则脱然愈。止进药而药杀,是以君子加弒焉尔,曰「许世子止弒其君买」,是君子之听止也;「葬许悼公」,是君子之赦止也。赦止者,免止之罪辞也。

  !昭公(经二十一)二十年

  春,王正月。

  (经二十二)夏,曹公孙会自鄸出奔宋。

  (传)奔未有言自者,此其言自何?畔也。畔则曷为不言其畔?为公子喜时之后讳也。《春秋》为贤者讳。何贤乎公子喜时?让国也。其让国奈何?曹伯庐卒于师,则未知公子喜时从与?公子负刍从与?或为主于国?或为主于师?公子喜时见公子负刍之当主也,逡巡而退。贤公子喜时,则曷为为会讳?君子之善善也长,恶恶也短,恶恶止其身,善善及子孙。贤者子孙,故君子为之讳也。

  (经二十三)秋,盗杀卫侯之兄辄。

  (传)母兄称兄,兄何以不立?有疾也。何疾尔?恶疾也。

  (经二十四)冬,十月,宋华亥、向宁、华定出奔陈。

  (经二十五)十有一月辛卯,蔡侯庐卒。

  !昭公(经二一一)二十有一年

  春,王三月,葬蔡平公。

  (经二一二)夏,晋侯使士鞅来聘。

  (经二一三)宋华亥、向宁、华定自陈入于宋南里以畔。

  (传)宋南里者何?若曰:因诸者然。

  (经二一四)秋,七月壬午朔,日有食之。

  (经二一五)八月乙亥,叔痤卒。

  (经二一六)冬,蔡侯朱出奔楚。

  (经二一七)公如晋,至河乃复。

  !昭公(经二二一)二十有二年

  春,齐侯伐莒。

  (经二二二)宋华亥、向宁、华定自宋南里出奔楚。

  (经二二三)大搜于昌奸。

  (经二二四)夏,四月乙丑,天王崩。

  (经二二五)六月,叔鞅如京师。

  (经二二六)葬景王。

  (经二二七)王室乱。

  (传)何言乎王室乱?言不及外也。

  (经二二八)刘子、单子以王猛居于皇。

  (传)其称王猛何?当国也。

  (经二二九)秋,刘子、单子以王猛入于王城。

  (传)王城者何?西周也。其言入何?篡辞也。

  (经二二十)冬,十月,王子猛卒。

  (传)此未逾年之君也,其称王子猛卒何?不与当也。不与当者,不与当父死子继、兄死弟及之辞也。

  (经二二十一)十有二月癸酉朔,日有食之。

  !昭公(经二三一)二十有三年

  春,王正月,叔孙舍如晋。

  (经二三二)癸丑,叔鞅卒。

  (经二三三)晋人执我行人叔孙舍。

  (经二三四)晋人围郊。

  (传)郊者何?天子之邑也。曷为不系于周?不与伐天子也。

  (经二三五)夏,六月,蔡侯东国卒于楚。

  (经二三六)秋,七月,莒子庚舆来奔。

  (经二三七)戊辰,吴败顿、胡、沈、蔡、陈、许之师于鸡父。胡子髡、沈子楹灭,获陈夏啮。

  (传)此偏战也,曷为以诈战之辞言之?不与夷狄之主中国也。然则曷为不使中国主之?中国亦新夷狄也。其言灭获何?别君臣也,君死于位曰灭,生得曰获,大夫生死皆曰获。不与夷狄之主中国,则其言获陈夏啮何?吴少进也。

  (经二三八)天王居于狄泉。

  (传)此未三年,其称天王何?着有天子也。

  (经二三九)尹氏立王子朝。

  (经二三十)八月乙未,地震。

  (经二三十一)冬,公如晋,至河,公有疾,乃复。(传)何言乎公有疾乃复?杀耻也。

  !昭公(经二四一)二十有四年

  春,王二月丙戌,仲孙貜卒。

  (经二四二)叔孙舍至自晋。

  (经二四三)夏,五月乙未朔,日有食之。

  (经二四四)秋,八月,大雩。

  (经二四五)丁酉,杞伯郁厘卒。

  (经二四六)冬,吴灭巢。

  (经二四七)葬杞平公。

  !昭公(经二五一)二十有五年

  春,叔孙舍如宋。

  (经二五二)夏,叔倪会晋赵鞅、宋乐世心、卫北宫喜、郑游吉、曹人、邾娄人、滕人、薛人、小邾娄人于黄父。

  (经二五三)有鹳鹆来巢。

  (传)何以书?记异也。何异尔?非中国之禽也,宜穴又巢也。

  (经二五四)秋,七月上辛,大雩。季辛,又雩。

  (传)又雩者何?又雩者非雩也,聚众以逐季氏也。

  (经二五五)九月己亥,公孙于齐,次于杨州。

  (经二五六)齐侯唁公于野井。

  (传)唁公者何?昭公将弒季氏,告子家驹曰:「季氏为无道,僭于公室久矣,吾欲弒之,何如?」子家驹曰:「诸侯僭于天子,大夫僭于诸侯久矣!」昭公曰:「吾何僭矣哉?」子家驹曰:「设两观,乘大路,朱干,玉戚,以舞《大夏》,八佾以舞《大武》,此皆天子之礼也。且夫牛马维娄,委己者也,而柔焉。季氏得民众久矣,君无多辱焉!」昭公不从其言,终弒之而败焉。走之齐,齐侯唁公于野井,曰:「奈何君去鲁国之社稷?」昭公曰:「丧人不佞,失守鲁国之社稷,执事以羞。」再拜颡,庆子家驹曰:「庆子免君于大难矣。」子家驹曰:「臣不佞,陷君于大难,君不忍加之以鈇锧,赐之以死。」再拜颡。高子执箪食与四脡脯,国子执壶浆,曰:「吾寡君闻君在外,馂饔未就,敢致糗于从者。」昭公曰:「君不忘吾先君,延及丧人,锡之以大礼。」再拜稽首,以衽受。高子曰:「有夫不祥,君无所辱大礼。」昭公盖祭而不尝。景公曰:「寡人有不腆先君之服,未之敢服;有不腆先君之器,未之敢用,敢以请。」昭公曰:「丧人不佞,失守鲁国之社稷,执事以羞,敢辱大礼?敢辞。」景公曰:「寡人有不腆先君之服,未之敢服;有不腆先君之器,未之敢用,敢固以请。」昭公曰:「以吾宗庙之在鲁地,有先君之服,未之能以服;有先君之器,未之能以出,敢固辞。」景公曰:「寡人有不腆先君之服,未之敢服;有不腆先君之器,未之敢用,请以飨乎从者。」昭公曰:「丧人其何称?」景公曰:「孰君而无称?」昭公于是噭然而哭,诸大夫皆哭。既哭以人为菑,以幦为席,以鞍为,以遇礼相见。孔子曰:「其礼与!其辞足观矣!」

  (经二五七)冬,十月戊辰,叔孙舍卒。

  (经二五八)十有一月己亥,宋公佐卒于曲棘。

  (传)曲棘者何?宋之邑也。诸侯卒其封内不地,此何以地?忧内也。

  (经二五九)十有二月,齐侯取运。

  (传)外取邑不书?此何以书?为公取之也。

  !昭公(经二六一)二十有六年

  春,王正月,葬宋元公。

  (经二六二)三月,公至自齐,居于运。

  (经二六三)夏,公围成。

  (经二六四)秋,公会齐侯、莒子、邾娄子,杞伯盟于剸陵。公至自会,居于运。

  (经二六五)九月庚申,楚子居卒。

  (经二六六)冬,十月,天王入于成周。

  (传)成周者何?东周也。其言入何?不嫌也。

  (经二六七)尹氏、召伯、毛伯以王子朝奔楚。

  !昭公(经二七一)二十有七年

  春,公如齐。公至自齐,居于运。

  (经二七二)夏,四月,吴弒其君僚。

  (经二七三)楚杀其大夫郄宛。

  (经二七四)秋,晋士鞅、宋乐祁犁、卫北宫喜、曹人、邾娄人、滕人会于扈。

  (经二七五)冬,十月,曹伯午卒。

  (经二七六)邾娄快来奔。

  (传)邾娄快者何?邾娄之大夫也。邾娄无大夫,此何以书?以近书也。

  (经二七七)公如齐,公至自齐,居于运。

  !昭公(经二八一)二十有八年

  春,王三月,葬曹悼公。

  (经二八二)公如晋,次于干侯。

  (经二八三)夏,四月丙戌,郑伯宁卒。六月,葬郑定公。

  (经二八四)秋,七月癸巳,滕子宁卒。

  (经二八五)冬,葬滕悼公。

  !昭公(经二九一)二十有九年

  春,公至自干侯,居于运。

  (经二九二)齐侯使高张来唁公。

  (经二九三)公如晋,次于干侯。

  (经二九四)夏,四月庚子,叔倪卒。

  (经二九五)秋,七月。

  (经二九六)冬,十月,运溃。

  (传)邑不言溃,此其言溃何?郛之也。曷为郛之?君存焉尔。

  !昭公(经三十一)三十年

  春,王正月,公在干侯。

  (经三十二)夏,六月庚辰,晋侯去疾卒。

  (经三十三)秋,八月,葬晋顷公。

  (经三十四)冬,十有二月,吴灭徐,徐子章禹奔楚。

  !昭公(经三一一)三十有一年

  春,王正月,公在干侯。

  (经三一二)季孙隐如会晋荀栎于适历。

  (经三一三)夏,四月丁巳,薛伯谷卒。

  (经三一四)晋侯使荀栎唁公于干侯。

  (经三一五)秋,葬薛献公。

  (经三一六)冬,黑弓以滥来奔。

  (传)文何以无邾娄?通滥也。曷为通滥?贤者子孙宜有地也。贤者孰谓?谓叔术也。何贤乎叔术?让国也。其让国奈何?当邾娄颜之时,邾娄女有为鲁夫人者,则未知其为武公与?懿公与?孝公幼,颜淫九公子于宫中,因以纳贼,则未知其为鲁公子与?邾娄公子与?臧氏之母,养公者也。君幼则宜有养者,大夫之妾,士之妻,则未知臧氏之母者曷为者也?养公者必以其子入养。臧氏之母闻有贼,以其子易公,抱公以逃。贼至,凑公寝而弒之。臣有鲍广父与梁买子者,闻有贼,趋而至。臧氏之母曰:「公不死也,在是,吾以吾子易公矣。」于是负孝公之周诉天子,天子为之诛颜而立叔术,反孝公于鲁。颜夫人者,妪盈女也,国色也,其言曰:「有能为我杀杀颜者,吾为其妻。」叔术为之杀杀颜者,而以为妻,有子焉,谓之盱。夏父者,其所为有于颜者也。盱幼而皆爱之,食必坐二子于其侧而食之,有珍怪之食,盱必先取足焉。夏父曰:「以来,人未足而盱有余。」叔术觉焉,曰:「嘻!此诚尔国也夫!」起而致国于夏父,夏父受而中分之,叔术曰:「不可!」三分之,叔术曰:「不可!」四分之,叔术曰:「不可!」五分之,然后受之。公扈子者,邾娄之父兄也,习乎邾娄之故,其言曰:「恶有言人之国贤若此者乎!」诛颜之时,天子死,叔术起而致国于夏父。当此之时,邾娄人常被兵于周,曰:「何故死吾天子?」通滥则文何以无邾娄?天下未有滥也。天下未有滥,则其言以滥来奔何?叔术者,贤大夫也,绝之则为叔术不欲绝,不绝则世大夫也。大夫之义不得世,故于是推而通之也。

  (经三一七)十有二月辛亥朔,日有食之。

  !昭公(经三二一)三十有二年

  春,王正月,公在干侯。

  (经三二二)取阚。

  (传)阚者何?邾娄之邑也。曷为不系乎邾娄?讳亟也。

  (经三二三)夏,吴伐越。

  (经三二四)秋,七月。

  (经三二五)冬,仲孙何忌会晋韩不信、齐高张、宋仲几、卫世叔申、郑国参、曹人、莒人、邾娄人、薛人、杞人、小邾娄人城成周。

  (经三二六)十有二月,己未,公薨于干侯。

  公羊传定公

  !定公(经一一)元年

  春王。

  (传)定何以无正月?正月者,正即位也。定无正月者,即位后也。即位何以后?昭公在外,得入不得入,未可知也。曷为未可知?在季氏也。定、哀多微辞,主人习其读而问其传,则未知己之有罪焉尔。

  (经一二)三月,晋人执宋仲几于京师。

  (传)仲几之罪何?不哀城也。其言于京师何?伯讨也。伯讨则其称人何?贬。曷为贬?不与大王专执也。曷为不与?实与而文不与。文曷为不与?大夫之义,不得专执也。

  (经一三)夏,六月癸亥,公之丧至自干侯。戊辰,公即位。

  (传)癸亥公之丧至自干侯,则曷为以戊辰之日然后即位?正棺于两楹之间,然后即位。子沈子曰:「定君乎国,然后即位。」即位不日,此何以日?录乎内也。

  (经一四)秋,七月癸巳,葬我君昭公。

  (经一五)九月,大雩。

  (经一六)立炀宫。

  (传)炀宫者何?炀公之宫也。立者何?立者不宜立也。立炀宫,非礼也。

  (经一七)冬,十月,陨霜杀菽。

  (传)何以书?记异也。此灾菽也,曷为以异书?异大乎灾也。

  !定公(经二一)二年

  春,王正月。

  (经二二)夏,五月壬辰,雉门及两观灾。

  (传)其言雉门及两观灾何?两观微也。然则曷为不言雉门灾及两观?主灾者两观也。时灾者两观,则曷为后言之?不以微及大也。何以书?记灾也。

  (经二三)秋,楚人伐吴。

  (经二四)冬,十月,新作雉门及两观。

  (传)其言新作之何?修大也。修旧不书,此何以书?讥。何讥尔?不务乎公室也。

  !定公(经三一)三年

  春,王正月,公如晋,至河乃复。三月辛卯,邾娄子穿卒。

  (经三二)夏,四月。

  (经三三)秋,葬邾娄庄公。

  (经三四)冬,仲孙何忌及邾娄子盟于枝。

  !定公(经四一)四年

  春,王二月癸巳,陈侯吴卒。

  (经四二)三月,公会刘子、晋侯、宋公、蔡侯、卫侯、陈子、郑伯、许男、曹伯、莒子、邾娄子、顿子、胡子、滕子、薛伯、杞伯、小邾娄子、齐国夏于召陵,侵楚。

  (经四三)夏,四月庚辰,蔡公孙归姓帅师灭沈,以沈子嘉归,杀之。

  (经四四)五月,公及诸侯盟于浩油;杞伯戊卒于会。

  (经四五)六月,葬陈惠公。

  (经四六)许迁于容城。

  (经四七)秋,七月,公至自会。

  (经四八)刘卷卒。

  (传)刘卷者何?天子之大夫也。外大夫不卒,此何以卒?我主之也。

  (经四九)葬杞悼公。

  (经四十)楚人围蔡。

  (经四十一)晋士鞅、卫孔圄帅师伐鲜虞。

  (经四十二)葬刘文公。

  (传)外大夫不书葬,此何以书葬?录我主也。

  (经四十三)冬,十有一月庚午,蔡侯以吴子及楚人战于伯莒,楚师败绩。

  (传)吴何以称子?夷狄也而忧中国。其忧中国奈何?伍子胥父诛乎楚,挟弓而去楚,以干阖庐。阖庐曰:「士之甚!勇之甚!将为之兴师而复雠于楚。」伍子胥复曰:「诸侯不为匹夫兴师,且臣闻之:事君犹事父也。亏君之义,复父之雠,臣不为也。」于是止。蔡昭公朝乎楚,有美裘焉,囊瓦求之,昭公不与,为是拘昭公于南郢,数年然后归之。于其归焉,用事乎河,曰:「天下诸侯茍有能伐楚者,寡人请为之前列。」楚人闻之怒。为是兴师,使囊瓦将而伐蔡。蔡请救于吴,伍子胥复曰:「蔡非有罪也,楚人为无道,君如有忧中国之心,则若时可矣。」于是兴师而救蔡。曰:事君犹事父也,此其为可以复雠奈何?曰:父不受诛,子复雠可也;父受诛,子复雠,推刃之道也。复雠不徐害,朋友相卫,而不相迿,古之道也。

  (经四十四)楚囊瓦出奔郑。

  (经四十五)庚辰,吴入楚。

  (传)吴何以不称子?反夷狄也。其反夷狄奈何?君舍于君室,大夫舍于大夫室,盖妻楚王之母也。

  !定公(经五一)五年

  春,王正月辛亥朔,日有食之。

  (经五二)夏,归粟于蔡。

  (传)孰归之?诸侯归之。曷为不言诸侯归之?离至不可得而序,故言我也。

  (经五三)于越入吴。

  (传)于越者何?越者何?于越者,未能以其名通也。越者,能以其名通也。

  (经五四)六月丙申,季孙隐如卒。

  (经五五)秋,七月壬子,叔孙不敢卒。

  (经五六)冬,晋士鞅帅师围鲜虞。

  !定公(经六一)六年

  春,王正月癸亥,郑游遬帅师灭许,以许男斯归。

  (经六二)二月,公侵郑。

  (经六三)公至自侵郑。

  (经六四)夏,季孙斯、仲孙何忌如晋。

  (经六五)秋,晋人执宋行人乐祁犁。

  (经六六)冬,城中城。

  (经六七)季孙斯、仲孙忌帅师围运。

  (传)此仲孙何忌也,曷为谓之仲孙忌?讥二名。二名,非礼也。

  !定公(经七一)七年

  春,王正月。(经七二)夏,四月。

  (经七三)秋,齐侯、郑伯盟于咸。

  (经七四)齐人执卫行人北宫结,以侵卫。

  (经七五)齐侯、卫侯盟于沙泽。

  (经七六)大雩。

  (经七七)齐国夏帅师伐我西鄙。

  (经七八)九月,大雩。

  (经七九)冬,十月。

  !定公(经八一)八年

  春,王正月,公侵齐。公至自侵齐。

  (经八二)二月,公侵齐。三月,公至自侵齐。

  (经八三)曹伯露卒。

  (经八三)夏,齐国夏帅师伐我西鄙。

  (经八四)公会晋师于瓦,公至自瓦。

  (经八五)秋,七月戊辰,陈侯柳卒。

  (经八六)晋赵鞅帅师侵郑,遂侵卫。

  (经八七)葬曹靖公。

  (经八八)九月,葬陈怀公。

  (经八九)季孙斯、仲孙何忌帅师侵卫。

  (经八十)冬,卫侯、郑伯盟于曲濮。

  (经八十一)从祀先公。

  (传)从祀者何?顺祀也。文公逆祀,去者三人;定公顺祀,叛者五人。

  (经八十二)盗窃宝玉、大弓。

  (传)盗者孰谓?谓阳虎也。阳虎者,曷为者也?季氏之宰也。季氏之宰则微者也,恶乎得国宝而窃之?阳虎专季氏,季氏专鲁国,阳虎拘季孙,孟氏与叔孙氏迭而食之。睋而锓其板,曰:「某月某日,将杀我于蒲圃,力能救我则于是。」至乎日若时而出。临南者,阳虎之出也,御之。于其乘焉,季孙谓临南曰:「以季氏之世世有子,子可以不免我死乎?」临南曰:「有力不足,臣何敢不勉。」阳越者,阳虎之从弟也,为右。诸阳之从者,车数十乘,至于孟衢,临南投策而坠之,阳越下取策,临南駷马,而由乎孟氏,阳虎从而射之,矢着于庄门。然而甲起于琴如。弒不成,却反舍于郊,皆说然息。或曰:「弒千乘之主,而不克舍此,可乎?」阳虎曰:「夫孺子得国而已,如丈夫何?」睋而曰:「彼哉!彼哉!趣驾。」既驾,公敛处父帅师而至,慬然后得免,自是走之晋。宝者何?璋判白,弓绣质,龟青纯。

  !定公(经九一)九年

  春,王正月。

  (经九二)夏,四月戊申,郑伯囆卒。

  (经九三)得宝玉、大弓。

  (传)何以书?国宝也,丧之书,得之书。

  (经九四)六月,葬郑献公。

  (经九五)秋,齐侯、卫侯次于五氏。

  (经九六)秦伯卒。

  (经九七)冬,葬秦哀公。

  !定公(经十一)十年

  春,王三月,及齐平。

  (经十二)夏,公会齐侯于颊谷。公至自颊谷。

  (经十三)晋赵鞅帅师围卫。

  (经十四)齐人来归运、讙、龟阴田。

  (传)齐人曷为来归运、讙、龟阴田?孔子行乎季孙,三月不违,齐人为是来归之。

  (经十五)叔孙州仇、仲孙何忌帅师围郈。

  (经十六)秋,叔孙州仇、仲孙何忌帅师围费。

  (经十七)宋乐世心出奔曹。宋公子池出奔陈。

  (经十八)冬,齐侯、卫侯、郑游遬会于鞍。

  (经十九)叔孙州仇如齐。

  (经十十)齐公之弟辰暨宋仲佗、石彄出奔陈。

  !定公(经十一一)十有一年

  春,宋公之弟辰及仲佗、石彄、公子池,自陈入于萧,以叛。

  (经十一二)夏,四月。

  (经十一三)秋,宋乐世心自曹入于萧。

  (经十一四)冬,及郑平。

  (经十一五)叔还如郑莅盟。

  !定公(经十二一)十有二年

  春,薛伯定卒。

  (经十二二)夏,葬薛襄公。

  (经十二三)叔孙州仇帅师堕郈。

  (经十二四)卫公孟彄帅师伐曹。

  (经十二五)季孙斯、仲孙何忌帅师堕费。

  (传)曷为帅师堕郈?帅师堕费?孔子行乎季孙,三月不违,曰:「家不藏甲,邑无百雉之城。」于是帅师堕郈,帅师堕费。雉者何?五板而堵,五堵而雉,百雉而城。

  (经十二六)秋,大雩。

  (经十二七)冬,十月癸亥,公会晋侯,盟于黄。

  (经十二八)十有一月丙寅朔,日有食之。公至自黄。

  (经十二九)十有二月,公围成,公至自围成。

  !定公(经十三一)十有三年

  春,齐侯、卫侯次于垂瑕。

  (经十三二)夏,筑蛇渊囿。

  (经十三三)大搜于比蒲。

  (经十三四)卫公孟彄帅师伐曹。

  (经十三五)秋,晋赵鞅入于晋阳,以叛。

  (经十三六)冬,晋荀寅及士吉射入于朝歌,以叛。

  (经十三七)晋赵鞅归于晋。

  (传)此叛也,其言归何?以地正国也。其以地正国奈何?晋赵鞅取晋阳之甲以逐荀寅与士吉射。荀寅与士吉射者,曷为者也?君侧之恶人也。此逐君侧之恶人,曷为以叛言之?无君命也。(经十三八)薛弒其君比。

  !定公(经十四一)十有四年

  春,卫公叔戍来奔。

  (经十四二)晋赵阳出奔宋。

  (经十四三)二月辛巳,楚公子结、陈公子佗人帅师灭顿,以顿子牄归。

  (经十四四)夏,卫北宫结来奔。

  (经十四五)五月,于越败吴于醉李。

  (经十四六)吴子光卒。

  (经十四七)公会齐侯、卫侯于坚。公至自会。

  (经十四八)秋,齐侯、宋公会于洮。

  (经十四九)天王使石尚来归脤。

  (传)石尚者何?天子之士也。脤者何?俎实也。腥曰脤,熟曰燔。

  (经十四十)卫世子蒯瞆出奔宋。

  (经十四十一)卫公孟彄出奔郑。

  (经十四十二)宋公之弟辰自萧来奔。

  (经十四十三)大搜于比蒲。

  (经十四十四)邾娄子来会公。

  (经十四十五)城莒父及霄。

  !定公(经十五一)十有五年

  春,王正月,邾娄子来朝。

  (经十五二)鼷鼠食郊牛,牛死,改卜牛。

  (传)曷为不言其所食?漫也。

  (经十五三)二月,辛丑,楚子灭胡,以胡子豹归。

  (经十五四)夏,五月辛亥,郊。

  (传)曷为以夏五月郊?三卜之运也。

  (经十五五)壬申,公薨于高寝。

  (经十五六)郑轩达帅师伐宋。

  (经十五七)齐侯、卫侯次于籧篨。

  (经十五八)邾娄子来奔丧。

  (传)其言来奔丧何?奔丧,非礼也。

  (经十五九)秋,七月壬申,姒氏卒。

  (传)姒氏者何?哀公之母也。何以不称夫人?哀未君也。

  (经十五十)八月庚辰朔,日有食之。

  (经十五十一)九月,滕子来会葬。

  (经十五十二)丁巳,葬我君定公,雨不克葬;戊午,日下昃,乃克葬。辛巳,葬定姒。

  (传)定姒何以书葬?未逾年之君也,有子则庙,庙则书葬。

  (经十五十三)冬,城漆。

  公羊传哀公

  !哀公(经一一)元年

  春,王正月,公即位。

  (经一二)楚子、陈侯、随侯、许男围蔡。

  (经一三)鼷鼠食郊牛,改卜牛。

  (经一四)夏,四月辛巳,郊。

  (经一五)秋,齐侯、卫侯伐晋。

  (经一六)冬,仲孙何忌帅师伐邾娄。

  !哀公(经二一)二年

  春,王二月,季孙斯、叔孙州仇、仲孙何忌帅师伐邾娄,取漷东田及沂西田。癸巳,叔孙州仇、仲孙何忌及邾娄子盟于句绎。

  (经二二)夏,四月丙子,卫侯元卒。

  (经二三)滕子来朝。

  (经二四)晋赵鞅帅师纳卫世子蒯瞆于戚。

  (传)戚者何?卫之邑也。曷为不言入于卫?父有子,子不得有父也。

  (经二五)秋,八月甲戌,晋赵鞅帅师及郑轩达帅师战于栗,郑师败绩。

  (经二六)冬,十月,葬卫灵公。

  (经二七)十有一月,蔡迁于州来。

  (经二八)蔡杀其大夫公子驷。

  !哀公(经三一)三年

  春,齐国夏、卫石曼姑帅师围戚。

  (传)齐国夏曷为与卫石曼姑帅师围戚?伯讨也。此其为伯讨奈何?曼姑受命乎灵公而立辄,以曼姑之义为固,可以距之也。辄者曷为者也?蒯瞆之子也。然则曷为不立蒯瞆而立辄?蒯瞆为无道,灵公逐蒯瞆而立辄。然则辄之义可以立乎?曰:可。其可奈何?不以父命辞王父命,以王父命辞父命,是父之行乎子也;不以家事辞王事,以王事辞家事,是上之行乎下也。

  (经三二)夏,四月甲午,地震。

  (经三三)五月辛卯,桓宫、僖宫灾。

  (传)此皆毁庙也,其言灾何?复立也。曷为不言其复立?《春秋》见者不复见也。何以不言及?敌也。何以书?记灾也。

  (经三四)季孙斯、叔孙州仇帅师城开阳。

  (经三五)宋乐髡帅师伐曹。

  (经三六)秋,七月丙子,季孙斯卒。

  (经三七)蔡人放其大夫公孙猎于吴。

  (经三八)冬,十月癸卯,秦伯卒。

  (经三九)叔孙州仇、仲孙何忌帅师围邾娄。

  !哀公(经四一)四年

  春,王三月庚戌,盗杀蔡侯申。

  (传)弒君贱者穷诸人,此其称盗以弒何?贱乎贱者也。贱乎贱者孰谓?谓罪人也。

  (经四二)蔡公孙辰出奔吴。

  (经四三)葬秦惠公。

  (经四四)宋人执小邾娄子。

  (经四五)夏,蔡杀其大夫公孙归姓、公孙霍。

  (经四六)晋人执戎曼子赤归于楚。

  (传)赤者何?戎曼子之名也。其言归于楚何?子北宫子曰:「辟伯晋而京师楚也。」

  (经四七)城西郛。

  (经四八)六月辛丑,蒲社灾。

  (传)蒲社者何?亡国之社也。社者封也,其言灾何?亡国之社盖掩之,掩其上而柴其下。蒲社灾,何以书?记灾也。

  (经四九)秋,八月甲寅,滕子结卒。

  (经四十)冬,十有二月,葬蔡昭公。

  (经四十一)葬滕顷公。

  !哀公(经五一)五年

  春,城比。

  (经五二)夏,齐侯伐宋。

  (经五三)晋赵鞅帅师伐卫。

  (经五四)秋,九月癸酉,齐侯处臼卒。

  (经五五)冬,叔还如齐。

  (经五六)闰月,葬齐景公。

  (传)闰不书,此何以书?丧以闰数也。丧曷为以闰数?丧数略也。

  !哀公(经六一)六年

  春,城邾娄葭。

  (经六二)晋赵鞅帅师伐鲜虞。

  (经六三)吴伐陈。

  (经六四)夏,齐国夏及高张来奔。

  (经六五)叔还会吴于柤。

  (经六六)秋,七月庚寅,楚子轸卒。

  (经六七)齐阳生入于齐。

  (经六八)齐陈乞弒其君舍。

  (传)弒而立者,不以当国之辞言之,此其以当国之辞言之何?为谖也。此其为谖奈何?景公谓陈乞曰:「吾欲立舍,何如?」陈乞曰:「所乐乎为君者,欲立之则立之,不欲立则不立。君如欲立之,则臣请立之。」阳生谓陈乞曰:「吾闻子盖将不欲立我也。」陈乞曰:「夫千乘之主,将废正而立不正,必杀正者。吾不立子者,所以生子者也。走矣!」与之玉节而走之。景公死而舍立。陈乞使人迎阳生于诸其家。除景公之丧,诸大夫皆在朝,陈乞曰:「常之母有鱼菽之祭,愿诸大夫之化我也。」诸大夫皆曰:「诺。」于是皆之陈乞之家坐。陈乞曰:「吾有所为甲,请以示焉。」诸大夫皆曰:「诺。」于是使力士举巨囊而至于中溜,诸大夫见之,皆色然而骇,开之则闯然公子阳生也。陈乞曰:「此君也已!」诸大夫不得已皆逡巡北面,再拜稽首而君之尔,自是往弒舍。

  (经六九)冬,仲孙何忌帅师伐邾娄。

  (经六十)宋向巢帅师伐曹。

  !哀公(经七一)七年

  春,宋皇瑗帅师侵郑。

  (经七二)晋魏曼多帅师侵卫。

  (经七三)夏,公会吴于鄫。

  (经七四)秋,公伐邾娄。

  (经七五)八月己酉,入邾娄,以邾娄子益来。

  (传)入不言伐,此其言伐何?内辞也,若使他人然。邾娄子益何以名?绝。曷为绝之?获也。曷为不言其获?内大恶,讳也。

  (经七六)宋人围曹。

  (经七七)冬,郑驷弘帅师救曹。

  !哀公(经八一)八年

  春,王正月,宋公入曹,以曹伯阳归。

  (传)曹伯阳何以名?绝之。曷为绝之?灭也。曷为不言其灭?讳同姓之灭也。何讳乎同姓之灭?力能救之而不救也。

  (经八二)吴伐我。

  (经八三)夏,齐人取讙及僤。

  (传)外取邑不书,此何以书?所以赂齐也。曷为赂齐?为以邾娄子益来也。

  (经八四)归邾娄子益于邾娄。

  (经八五)秋,七月。

  (经八六)冬,十有二月癸亥,杞伯过卒。

  (经八七)齐人归讙及僤。

  !哀公(经九一)九年

  春,王二月,葬杞僖公。

  (经九二)宋皇瑗帅师取郑师于雍丘。

  (传)其言取之何?易也。其易奈何?诈之也。

  (经九三)夏,楚人伐陈。

  (经九四)秋,宋公伐郑。

  (经九五)冬,十月。

  !哀公(经十一)十年

  春,王二月,邾娄子益来奔。

  (经十二)公会吴伐齐。

  (经十三)三月戊戌,齐侯阳生卒。

  (经十四)夏,宋人伐郑。

  (经十五)晋赵鞅帅师侵齐。

  (经十六)五月,公至自伐齐。

  (经十七)葬齐悼公。

  (经十八)卫公孟彄自齐归于卫。

  (经十九)薛伯寅卒。

  (经十十)秋,葬薛惠公。

  (经十十一)冬,楚公子结帅师伐陈。

  (经十十二)吴救陈。

  !哀公(经十一一)十有一年

  春,齐国书帅师伐我。

  (经十一二)夏,陈袁颇出奔郑。

  (经十一三)五月,公会吴伐齐;甲戌,齐国书帅师及吴战于艾陵,齐师败绩,获齐国书。

  (经十一四)秋,七月辛酉,滕子虞母卒。

  (经十一五)冬,十有一月,葬滕隐公。

  (经十一六)卫世叔齐出奔宋。

  !哀公(经十二一)十有二年

  春,用田赋。

  (传)何以书?讥。何讥尔?讥始用田赋也。

  (经十二二)夏,五月甲辰,孟子卒。

  (传)孟子者何?昭公之夫人也。其称孟子何?讳娶同姓,盖吴女也。

  (经十二三)公会吴于橐皋。

  (经十二四)秋,公会卫侯、宋皇瑗于运。

  (经十二五)宋向巢帅师伐郑。

  (经十二六)冬,十有二月,螽。

  (传)何以书?记异也。何异尔?不时也。

  !哀公(经十三一)十有三年

  春,郑轩达帅师取宋于嵒。

  (传)其言取之何?易也。其易奈何?诈反也。

  (经十三二)夏,许男戌卒。

  (经十三三)公会晋侯及吴子于黄池。

  (传)吴何以称子?吴主会也。吴主会则曷为先言晋侯?不与夷狄之主中国也。其言及吴子何?会两伯之辞也。不与夷狄之主中国,则曷为以会两伯之辞言之?重吴也。曷为重吴?吴在是则天下诸侯莫敢不至也。

  (经十三四)楚公子申帅师伐陈。

  (经十三五)于越入吴。

  (经十三六)秋,公至自会。

  (经十三七)晋魏多帅师侵卫。

  (传)此晋魏曼多也,曷为谓之晋魏多?讥二名,二名非礼也。

  (经十三八)葬许元公。

  (经十三九)九月,螽。

  (经十三十)冬,十有一月,有星孛于东方。

  (传)孛者何?彗星也。其言于东方何?见于旦也。何以书?记异也。

  (经十三十一)盗杀陈夏彄夫。

  (经十三十二)十有二月,螽。

  !哀公(经十四一)十有四年

  春,西狩获麟。

  (传)何以书?记异也。何异尔?非中国之兽也。然则孰狩之?薪采者也。薪采者则微者也,曷为以狩言之?大之也。曷为大之?为获麟大之也。曷为获麟大之?麟者仁兽也。有王者则至,无王者则不至。有以告者曰:「有麇而角者。」孔子曰:「孰为来哉!孰为来哉!」反袂拭面,涕沾袍。颜渊死,子曰:「噫!天丧予。」子路死,子曰:「噫!天祝予。」西狩获麟,孔子曰:「吾道穷矣!」《春秋》何以始乎隐?祖之所逮闻也。所见异辞,所闻异辞,所传闻异辞。何以终乎哀十四年?曰:备矣!君子曷为为《春秋》?拨乱世,反诸正,莫近诸《春秋》。则未知其为是与?其诸君子乐道尧舜之道与?末不亦乐乎尧舜之知君子也?制《春秋》之义以俟后圣,以君子之为,亦有乐乎此也。
!春秋谷梁传 

  

  ![[谷梁传-隐公(元年~十一年)]]

  ![[谷梁传-桓公(元年~十八年)]]

  ![[谷梁传-庄公(元年~三十二年)]]

  ![[谷梁传-闵公(元年~二年)]]

  ![[谷梁传-僖公(元年~三十三年)]]

  ![[谷梁传-文公(元年~十八年)]]

  ![[谷梁传-宣公(元年~十八年)]]

  ![[谷梁传-成公(元年~十八年)]]

  ![[谷梁传-襄公(元年~三十一年)]]

  ![[谷梁传-昭公(元年~三十二年)]]

  ![[谷梁传-定公(元年~十五年)]]

  ![[谷梁传-哀公(元年~十四年)]]

 
        [[隐公(元年~十一年)]]

  [[桓公(元年~十八年)]]

  [[庄公(元年~三十二年)]]

  [[闵公(元年~二年)]]

  [[僖公(元年~三十三年)]]

  [[文公(元年~十八年)]]

        [[宣公(元年~十八年)]]

  [[成公(元年~十八年)]]

  [[襄公(元年~三十一年)]]

  [[昭公(元年~三十二年)]]

  [[定公(元年~十五年)]]

  [[哀公(元年~二十七年)]]

  
  《礼记大传》

  礼不王不禘,王者禘其祖之所自出,以其祖配之。诸侯及其大祖。大夫士有大事,省于其君,干祫及其高祖。

  

  牧之野,武王之大事也,既事而退,柴于上帝,祈于社,设奠于牧室,遂率天下诸侯,执豆笾,逡奔走,追王大王亶父、王季历、文王昌,不以卑临尊也。

  

  上治祖祢,尊尊也。下治子孙,亲亲也。旁治昆弟,合族以食,序以昭缪,别之以礼义,人道竭矣。

  

  圣人南面而听天下,所且先者五,民不与焉:一曰治亲,二曰报功,三曰举贤,四曰使能,五曰存爱。五者一得于天下,民无不足,无不赡者。五者一物纰缪,民莫得其死。圣人南面而治天下,必自人道始矣。立权度量,考文章,改正朔,易服色,殊徽号,异器械,别衣服,此其所得与民变革者也。其不可得变革者则有矣!亲亲也,尊尊也,长长也,男女有别,此其不可得与民变革者也。

  

  同姓从宗,合族属。异姓主名治际会,名著而男女有别。其夫属乎父道者,妻皆母道也。其夫属乎子道者,妻皆妇道也。谓弟之妻妇者,是嫂亦可谓之母乎?名者,人治之大者也,可无慎乎?

  

  四世而缌,服之穷也,五世袒免,杀同姓也,六世亲属竭矣。其庶姓别于上,而戚单于下,昏姻可以通乎?系之以姓而弗别,缀之以食而弗殊,虽百世而昏姻不通者,周道然也。

  

  服术有六:一曰亲亲,二曰尊尊,三曰名,四曰出入,五曰长幼,六曰从服。

  

  从服有六:有属从,有徒从,有从有服而无服,有从无服而有服,有从重而轻,有从轻而重。

  

  自仁率亲,等而上之至于祖,名曰轻。自义率祖,顺而下之至于祢,名曰重。一轻一重,其义然也。

  

  君有合族之道,族人不得以其戚。戚,君位也。

  

  庶子不祭,明其宗也。庶子不得为长子三年,不继祖也。别子为祖,继别为宗,继祢者为小宗。有百世不迁之宗,有五世则迁之宗。百世不迁者,别子之后也。宗其继别子之所自出者,百世不迁者也。宗其继高祖者,五世则迁者也。尊祖故敬宗,敬宗,尊祖之义也。

  

  有小宗而无大宗者,有大宗而无小宗者,有无宗亦莫之宗者,公子是也。

  

  公子有宗道,公子之公,为其士大夫之庶者,宗其士大夫之适者,公子之宗道也。

  

  绝族无移服,亲者属也。

  

  自仁率亲,等而上之至于祖。自义率祖,顺而下之至于祢。是故人道亲亲也,亲亲故尊祖,尊祖故敬宗,敬宗故收族,收族故宗庙严,宗庙严故重社稷,重社稷故爱百姓,爱百姓故刑罚中,刑罚中故庶民安,庶民安故财用足,财用足故百志成,百志成故礼俗刑,礼俗刑然后乐。诗云:“不显不承,无斁于人斯。”此之谓也。

!!大学

  大学之道,在明明德,在亲民,在止于至善。

  知止而后有定,定而后能静,静而后能安,安而后能虑,虑而后能得。

  物有本末,事有终始。知所先后,则近道矣。

  古之欲明明德于天下者,先治其国。欲治其国者,先齐其家,欲齐其家者,先修其身。欲修其身者,先正其心。欲正其心者,先诚其意。欲诚其意者,先致其知。致知在格物。

  物格而后知至,知至而后意诚,意诚而后心正,心正而后身修,身修而后家齐,家齐而后国治,国治而后天下平。

  自天子以至于庶人,一是皆以修身为本。

  其本乱而末治者否矣。其所厚者薄,而其所薄者厚,未之有也。

  此谓知本,此谓知之至也。

  所谓诚其意者,毋自欺也。如恶恶臭,如好好色,此之谓自谦。故君子必慎其独也。小人闲居为不善,无所不至,见君子而后厌然,掩其不善,而著其善。

  人之视己,如见其肺肝然,则何益矣。此谓诚于中,形于外,故君子必慎其独也。

  曾子曰:“十目所视,十手所指,其严乎!”富润屋,德润身,心广体胖,故君子必诚其意。

  《诗》云:“瞻彼淇澳,菉竹猗猗。有斐君子,如切如磋,如琢如磨。瑟兮僴兮,赫兮喧兮。有斐君子,终不可諠兮!”“如切如磋”者,道学也。“如琢如磨”者,自修也。“瑟兮僴兮”者,恂慄也。“赫兮喧兮”者,威仪也。“有斐君子,终不可諠兮”者,道盛德至善,民之不能忘也。

  《诗》云:“於戏,前王不忘!”君子贤其贤而亲其亲,小人乐其乐而利其利,此以没世不忘也。

  《康诰》曰:“克明德。”《大甲》曰:“顾諟天之明命。”《帝典》曰:“克明峻德。”皆自明也。

  汤之《盘铭》曰:“苟日新,日日新,又日新。”《康诰》曰:“作新民。”《诗》曰:“周虽旧邦,其命维新。”是故君子无所不用其极。

  《诗》云:“邦畿千里,维民所止。”《诗》云:“缗蛮黄鸟,止于丘隅。”子曰:“于止,知其所止,可以人而不如鸟乎?”《诗》云:“穆穆文王,于缉熙敬止!”为人君,止于仁;为人臣,止于敬;为人子,止于孝;为人父,止于慈;与国人交,止于信。

  子曰:“听讼,吾犹人也。必也使无讼乎!”无情者不得尽其辞。大畏民志,此谓知本”。

  所谓修身在正其心者,身有所忿懥,则不得其正,有所恐惧,则不得其正,有所好乐,则不得其正,有所忧患,则不得其正。心不在焉,视而不见,听而不闻,食而不知其味。此谓修身在正其心。

  所谓齐其家在修其身者,人之其所亲爱而辟焉,之其所贱恶而辟焉,之其所畏敬而辟焉,之其所哀矜而辟焉,之其所敖惰而辟焉。故好而知其恶,恶而知其美者,天下鲜矣。故谚有之曰:“人莫知其子之恶,莫知其苗之硕。”此谓身不修不可以齐其家。

  所谓治国必先齐其家者,其家不可教而能教人者,无之。故君子不出家而成教于国。孝者,所以事君也;弟者,所以事长也;慈者,所以使众也。《康诰》曰:“如保赤子。”心诚求之,虽不中不远矣。未有学养子而后嫁者也。一家仁,一国兴仁;一家让,一国兴让;一人贪戾,一国作乱:其机如此。此谓一言偾事,一人定国。尧、舜率天下以仁,而民从之。桀、纣率天下以暴,而民从之。其所令反其所好,而民不从。是故君子有诸己而后求诸人,无诸己而后非诸人。所藏乎身不恕,而能喻诸人者,未之有也。故治国在齐其家。《诗》云:“桃之夭夭,其叶蓁蓁。之子于归,宜其家人。”宜其家人,而后可以教国人。《诗》云:“宜兄宜弟。”宜兄宜弟,而后可以教国人。《诗》云:“其仪不忒,正是四国。”其为父子兄弟足法,而后民法之也。此谓治国在齐其家。

  所谓平天下在治其国者,上老老而民兴孝,上长长而民兴弟,上恤孤而民不倍,是以君子有絜矩之道也。

  所恶于上,毋以使下,所恶于下,毋以事上;所恶于前,毋以先后;所恶于后,毋以从前;所恶于右,毋以交于左;所恶于左,毋以交于右;此之谓絜矩之道。

  《诗》云:“乐只君子,民之父母。”民之所好好之,民之所恶恶之,此之谓民之父母。《诗》云:“节彼南山,维石岩岩。赫赫师尹,民具尔瞻。”有国者不可以不慎,辟则为天下僇矣。《诗》云:“殷之未丧师,克配上帝。仪监于殷,峻命不易。”道得众则得国,失众则失国。

  是故君子先慎乎德。有德此有人,有人此有土,有土此有财,有财此有用。

  德者本也,财者末也。外本内末,争民施夺。是故财聚则民散,财散则民聚。是故言悖而出者,亦悖而入;货悖而入者,亦悖而出。

  《康诰》曰:“惟命不于常。”道善则得之,不善则失之矣。

  《楚书》曰:“楚国无以为宝,惟善以为宝。”舅犯曰:“亡人无以为宝,仁亲以为宝。”《秦誓》曰:“若有一个臣,断断兮无他技,其心休休焉,其如有容焉。人之有技,若己有之;人之彦圣,其心好之,不啻若自其口出。实能容之,以能保我子孙黎民,尚亦有利哉!人之有技,媢嫉以恶之;人之彦圣,而违之,俾不通:实不能容,以不能保我子孙黎民,亦曰殆哉!”唯仁人放流之,迸诸四夷,不与同中国。此谓唯仁人为能爱人,能恶人。见贤而不能举,举而不能先,命也;见不善而不能退,退而不能远,过也。好人之所恶,恶人之所好,是谓拂人之性,菑必逮夫身。是故君子有大道,必忠信以得之,骄泰以失之。

  生财有大道,生之者众,食之者寡,为之者疾,用之者舒,则财恒足矣。仁者以财发身,不仁者以身发财。未有上好仁而下不好义者也,未有好义其事不终者也,未有府库财非其财者也。孟献子曰:“畜马乘不察于鸡豚,伐冰之家不畜牛羊,百乘之家不畜聚敛之臣。与其有聚敛之臣,宁有盗臣。”此谓国不以利为利,以义为利也。长国家而务财用者,必自小人矣。彼为善之,小人之使为国家,菑害并至。虽有善者,亦无如之何矣!此谓国不以利为利,以义为利也。

  
!!大雅 文王之什 文王

文王在上,于昭于天。周虽旧邦,其命维新。有周不显,帝命不时。文王陟降,在帝左右。

亹亹文王,令闻不已。陈锡哉周,侯文王孙子。文王孙子,本支百世,凡周之士,不显亦世。

世之不显,厥犹翼翼。思皇多士,生此王国。王国克生,维周之桢;济济多士,文王以宁。

穆穆文王,于缉熙敬止。假哉天命。有商孙子。商之孙子,其丽不亿。上帝既命,侯于周服。

侯服于周,天命靡常。殷士肤敏。裸将于京。厥作裸将,常服黼冔。王之荩臣。无念尔祖。

无念尔祖,聿修厥德。永言配命,自求多福。殷之未丧师,克配上帝。宜鉴于殷,骏命不易!

命之不易,无遏尔躬。宣昭义问,有虞殷自天。上天之载,无声无臭。仪刑文王,万邦作孚。

!!大雅 文王之什 大明

明明在下,赫赫在上。天难忱斯,不易维王。天位殷适,使不挟四方。

挚仲氏任,自彼殷商,来嫁于周,曰嫔于京。乃及王季,维德之行。

大任有身,生此文王。维此文王,小心翼翼。昭事上帝,聿怀多福。厥德不回,以受方国。

天监在下,有命既集。文王初载,天作之合。在洽之阳,在渭之涘。

文王嘉止,大邦有子。大邦有子,伣天之妹。文定厥祥,亲迎于渭。造舟为梁,不显其光。

有命自天,命此文王。于周于京,缵女维莘。长子维行,笃生武王。保右命尔,燮伐大商。

殷商之旅,其会如林。矢于牧野,维予侯兴。上帝临女,无贰尔心。

牧野洋洋,檀车煌煌,驷騵彭彭。维师尚父,时维鹰扬。凉彼武王,肆伐大商,会朝清明。

!!大雅 文王之什 绵

绵绵瓜瓞。民之初生,自土沮漆。古公亶父,陶复陶冗,未有家室。

古公亶父,来朝走马。率西水浒,至于岐下。爰及姜女,聿来胥宇。

周原膴々,堇荼如饴。爰始爰谋,爰契我龟,曰止曰时,筑室于兹。

乃慰乃止,乃左乃右,乃疆乃理,乃宣乃亩。自西徂东,周爰执事。

乃召司空,乃召司徒,俾立室家。其绳则直,缩版以载,作庙翼翼。

捄之陾々,度之薨薨,筑之登登,削屡冯冯。百堵皆兴,鼛鼓弗胜。

乃立皋门,皋门有伉。乃立应门,应门将将。乃立冢土,戎丑攸行。

肆不殄厥愠,亦不陨厥问。柞棫拔矣,行道兑矣。混夷駾矣,维其喙矣!

虞芮质厥成,文王蹶厥生。予曰有疏附,予曰有先后。予曰有奔奏,予曰有御侮!

!!大雅 文王之什 棫朴

芃芃棫朴,薪之槱之。济济辟王,左右趣之。

济济辟王,左右奉璋。奉璋峨峨,髦士攸宜。

淠彼泾舟,烝徒楫之。周王于迈,六师及之。

倬彼云汉,为章于天。周王寿考,遐不作人?

追琢其章,金玉其相。勉勉我王,纲纪四方。

!!大雅 文王之什 旱麓

瞻彼旱麓,榛楛济济。岂弟君子,干禄岂弟。

瑟彼玉瓒,黄流在中。岂弟君子,福禄攸降。

鸢飞戾天,鱼跃于渊。岂弟君子,遐不作人?

清酒既载,骍牡既备。以享以祀,以介景福。

瑟彼柞棫,民所燎矣。岂弟君子,神所劳矣。

莫莫葛藟,施于条枚。岂弟君子,求福不回。

!!大雅 文王之什 思齐

思齐大任,文王之母,思媚周姜,京室之妇。大姒嗣徽音,则百斯男。

惠于宗公,神罔时怨,神罔时恫。刑于寡妻,至于兄弟,以御于家邦。

雍雍在宫,肃肃在庙。不显亦临,无射亦保。

肆戎疾不殄,烈假不瑕。不闻亦式,不谏亦入。肆成人有德,小子有造。古之人无斁,誉髦斯士。

!!大雅 文王之什 皇矣

皇矣上帝,临下有赫。监观四方,求民之莫。维此二国,其政不获。维彼四国,爰究爰度。上帝耆之,憎其式廓。乃眷西顾,此维与宅。

作之屏之,其菑其翳。修之平之,其灌其栵。启之辟之,其柽其椐。攘之剔之,其檿其柘。帝迁明德,串夷载路。天立厥配,受命既固。

帝省其山,柞棫斯拔,松柏斯兑。帝作邦作对,自大伯王季。维此王季,因心则友。则友其兄,则笃其庆,载锡之光。受禄无丧,奄有四方。

维此王季,帝度其心。貊其德音,其德克明。克明克类,克长克君。王此大邦,克顺克比。比于文王,其德靡悔。既受帝祉,施于孙子。

帝谓文王:无然畔援,无然歆羡,诞先登于岸。密人不恭,敢距大邦,侵阮徂共。王赫斯怒,爰整其旅,以按徂旅。以笃于周祜,以对于天下。

依其在京,侵自阮疆。陟我高冈,无矢我陵。我陵我阿,无饮我泉,我泉我池。度其鲜原,居岐之阳,在渭之将。万邦之方,下民之王。

帝谓文王:予怀明德,不大声以色,不长夏以革。不识不知,顺帝之则。帝谓文王:訽尔仇方,同尔弟兄。以尔钩援,与尔临冲,以伐崇墉。

临冲闲闲,崇墉言言。执讯连连,攸馘安安。是类是礻马,是致是附,四方以无侮。临冲茀茀,崇墉仡仡。是伐是肆,是绝是忽。四方以无拂。

!!大雅 文王之什 灵台

经始灵台,经之营之。庶民攻之,不日成之。经始勿亟,庶民子来。

王在灵囿,麀鹿攸伏。麀鹿濯濯,白鸟翯々。王在灵沼,于牣鱼跃。

虡业维枞,贲鼓维镛。于论鼓钟,于乐辟雍。

于论鼓钟,于乐辟雍。鼍鼓逢逢。矇瞍奏公。

!!大雅 文王之什 下武

下武维周,世有哲王。三后在天,王配于京。

王配于京,世德作求。永言配命,成王之孚。

成王之孚,下土之式。永言孝思,孝思维则。

 媚兹一人,应侯顺德。永言孝思,昭哉嗣服。

昭兹来许,绳其祖武。于万斯年,受天之祜。

受天之祜,四方来贺。于万斯年,不遐有佐。

!!大雅 文王之什 文王有声

文王有声,遹骏有声。遹求厥宁,遹观厥成。文王烝哉!

文王受命,有此武功。既伐于崇,作邑于丰。文王烝哉!

筑城伊淢,作丰伊匹。匪棘其欲,遹追来孝。王后烝哉!

王公伊濯,维丰之垣。四方攸同,王后维翰。王后烝哉!

丰水东注,维禹之绩。四方攸同,皇王维辟。皇王烝哉!

镐京辟雍,自西自东,自南自北,无思不服。皇王烝哉!

考卜维王,宅是镐京。维龟正之,武王成之。武王烝哉!

丰水有芑,武王岂不仕?诒厥孙谋,以燕翼子。武王烝哉!

!!大雅 生民之什 生民

厥初生民,时维姜嫄。生民如何?克禋克祀,以弗无子。履帝武敏歆,攸介攸止,载震载夙。载生载育,时维后稷。

诞弥厥月,先生如达。不拆不副,无菑无害。以赫厥灵。上帝不宁,不康禋祀,居然生子。

诞寘之隘巷,牛羊腓字之。诞寘之平林,会伐平林。诞寘之寒冰,鸟覆翼之。鸟乃去矣,后稷呱矣。

实覃实訏,厥声载路。诞实匍匐,克岐克嶷。以就口食。蓺之荏菽,荏菽旆旆。禾役穟穟,麻麦幪幪,瓜瓞唪唪。

诞后稷之穑,有相之道。茀厥丰草,种之黄茂。实方实苞,实种实褎。实发实秀,实坚实好。实颖实栗,即有邰家室。

诞降嘉种,维秬维秠,维穈维芑。恒之秬秠,是获是亩。恒之穈芑,是任是负。以归肇祀。

诞我祀如何?或舂或揄,或簸或蹂。释之叟叟,烝之浮浮。载谋载惟。取萧祭脂,取羝以軷,载燔载烈,以兴嗣岁。

卬盛于豆,于豆于登。其香始升,上帝居歆。胡臭亶时。后稷肇祀。庶无罪悔,以迄于今。

!!大雅 生民之什 行苇

敦彼行苇,牛羊勿践履。方苞方体,维叶泥泥。戚戚兄弟,莫远具尔。或肆之筵,或授之几。

肆筵设席,授几有缉御。或献或酢,洗爵奠斝。醓醢以荐,或燔或炙。嘉肴脾臄,或歌或咢。

敦弓既坚,四鍭既均,舍矢既均,序宾以贤。敦弓既句,既挟四鍭。

四鍭如树,序宾以不侮。

曾孙维主,酒醴维醽,酌以大斗,以祈黄耇。黄耇台背,以引以翼。寿考维祺,以介景福。

!!大雅 生民之什 既醉

既醉以酒,既饱以德。君子万年,介尔景福。

既醉以酒,尔肴既将。君子万年,介尔昭明。

昭明有融,高朗令终,令终有俶。公尸嘉告。

其告维何?笾豆静嘉。朋友攸摄,摄以威仪。

威仪孔时,君子有孝子。孝子不匮,永锡尔类。

其类维何?室家之壶。君子万年,永锡祚胤。

其胤维何?天被尔禄。君子万年,景命有仆。

其仆维何?厘尔女士。厘尔女士,从以孙子。

!!大雅 生民之什 凫鹥

凫鹥在泾,公尸在燕来宁。尔酒既清,尔肴既馨。公尸燕饮,福禄来成。

凫鹥在沙,公尸来燕来宜。尔酒既多,尔肴既嘉。公尸燕饮,福禄来为。

凫鹥在渚,公尸来燕来处。尔酒既湑,尔肴伊脯。公尸燕饮,福禄来下。

凫鹥在潀,公尸来燕来宗,既燕于宗,福禄攸降。公尸燕饮,福禄来崇。

凫鹥在亹,公尸来止熏熏。旨酒欣欣,燔炙芬芬。公尸燕饮,无有后艰。

!!大雅 生民之什 假乐

假乐君子,显显令德,宜民宜人。受禄于天,保右命之,自天申之。

千禄百福,子孙千亿。穆穆皇皇,宜君宜王。不愆不忘,率由旧章。

威仪抑抑,德音秩秩。无怨无恶,率由群匹。受福无疆,四方之纲。

之纲之纪,燕及朋友。百辟卿士,媚于天子。不解于位,民之攸塈。

!!大雅 生民之什 公刘

笃公刘,匪居匪康。乃埸乃疆,乃积乃仓;乃裹餱粮,于橐于囊。思辑用光,弓矢斯张;干戈戚扬,爰方启行。

笃公刘,于胥斯原。既庶既繁,既顺乃宣,而无永叹。陟则在巘,复降在原。何以舟之?维玉及瑶,鞞琫容刀。

笃公刘,逝彼百泉。瞻彼溥原,乃陟南冈。乃覯于京,京师之野。于时处处,于时庐旅,于时言言,于时语语。

笃公刘,于京斯依。跄跄济济,俾筵俾几。既登乃依,乃造其曹。执豕于牢,酌之用匏。食之饮之,君之宗之。

笃公刘,既溥既长。既景乃冈,相其阴阳,观其流泉。其军三单,度其隰原。彻田为粮,度其夕阳。豳居允荒。

笃公刘,于豳斯馆。涉渭为乱,取厉取锻,止基乃理。爰众爰有,夹其皇涧。溯其过涧。止旅乃密,芮鞫之即。

!!大雅 生民之什 泂酌

泂酌彼行潦,挹彼注兹,可以餴饎。岂弟君子,民之父母。

泂酌彼行潦,挹彼注兹,可以濯罍。岂弟君子,民之攸归。

泂酌彼行潦,挹彼注兹,可以濯溉。岂弟君子,民之攸塈。

!!大雅 生民之什 卷阿

有卷者阿,飘风自南。岂弟君子,来游来歌,以矢其音。

伴奂尔游矣,优游尔休矣。岂弟君子,俾尔弥尔性,似先公酋矣。

尔土宇昄章,亦孔之厚矣。岂弟君子,俾尔弥尔性,百神尔主矣。

尔受命长矣,茀禄尔康矣。岂弟君子,俾尔弥尔性,纯嘏尔常矣。

有冯有翼,有孝有德,以引以翼。岂弟君子,四方为则。

颙颙卬卬,如圭如璋,令闻令望。岂弟君子,四方为纲。

凤凰于飞,翙翙其羽,亦集爰止。蔼蔼王多吉士,维君子使,媚于天子。

凤凰于飞,翙翙其羽,亦傅于天。蔼蔼王多吉人,维君子命,媚于庶人。

凤凰鸣矣,于彼高冈。梧桐生矣,于彼朝阳。菶々萋萋,雍雍喈喈。

君子之车,既庶且多。君子之马,既闲且驰。矢诗不多,维以遂歌。

!!大雅 生民之什 民劳

民亦劳止,汔可小康。惠此中国,以绥四方。无纵诡随,以谨无良。式遏寇虐,憯不畏明。柔远能迩,以定我王。

民亦劳止,汔可小休。惠此中国,以为民逑。无纵诡随,以谨惛怓。式遏寇虐,无俾民忧。无弃尔劳,以为王休。

民亦劳止,汔可小息。惠此京师,以绥四国。无纵诡随,以谨罔极。式遏寇虐,无俾作慝。敬慎威仪,以近有德。

民亦劳止,汔可小愒。惠此中国,俾民忧泄。无纵诡随,以谨丑厉。式遏寇虐,无俾正败。戎虽小子,而式弘大。

民亦劳止,汔可小安。惠此中国,国无有残。无纵诡随,以谨缱绻。式遏寇虐,无俾正反。王欲玉女,是用大谏。

!!大雅 生民之什 板

上帝板板,下民卒瘅。出话不然,为犹不远。靡圣管管。不实于亶。犹之未远,是用大谏。

天之方难,无然宪宪。天之方蹶,无然泄泄。辞之辑矣,民之洽矣。辞之怿矣,民之莫矣。

我虽异事,及尔同僚。我即尔谋,听我嚣嚣。我言维服,勿以为笑。先民有言,询于刍荛。

天之方虐,无然谑谑。老夫灌灌,小子蹻々。匪我言耄,尔用忧谑。多将熇々,不可救药。

天之方懠。无为夸毗。威仪卒迷,善人载尸。民之方殿屎,则莫我敢葵?丧乱蔑资,曾莫惠我师?

天之牖民,如埙如篪,如璋如圭,如取如携。携无曰益,牖民孔易。民之多辟,无自立辟。

价人维藩,大师维垣,大邦维屏,大宗维翰,怀德维宁,宗子维城。无俾城坏,无独斯畏。

敬天之怒,无敢戏豫。敬天之渝,无敢驰驱。昊天曰明,及尔出王。昊天曰旦,及尔游衍。

!!大雅 荡之什 荡

荡荡上帝,下民之辟。疾威上帝,其命多辟。天生烝民,其命匪谌。靡不有初,鲜克有终。

文王曰咨,咨汝殷商。曾是彊御?曾是掊克?曾是在位?曾是在服?天降滔德,女兴是力。

文王曰咨,咨女殷商。而秉义类,彊御多怼。流言以对。寇攘式内。侯作侯祝,靡届靡究。

文王曰咨,咨女殷商。女炰烋于中国。敛怨以为德。不明尔德,时无背无侧。尔德不明,以无陪无卿。

文王曰咨,咨女殷商。天不湎尔以酒,不义从式。既衍尔止。靡明靡晦。式号式呼。俾昼作夜。

文王曰咨,咨女殷商。如蜩如螗,如沸如羹。小大近丧,人尚乎由行。内奰于中国,覃及鬼方。

文王曰咨,咨女殷商。匪上帝不时,殷不用旧。虽无老成人,尚有典刑。曾是莫听,大命以倾。

文王曰咨,咨女殷商。人亦有言:颠沛之揭,枝叶未有害,本实先拨。殷鉴不远,在夏后之世。

!!大雅 荡之什 抑

抑抑威仪,维德之隅。人亦有言:靡哲不愚,庶人之愚,亦职维疾。哲人之愚,亦维斯戾。

无竞维人,四方其训之。有觉德行,四国顺之。訏谟定命,远犹辰告。敬慎威仪,维民之则。

其在于今,兴迷乱于政。颠覆厥德,荒湛于酒。女虽湛乐从,弗念厥绍。罔敷求先王,克共明刑。

肆皇天弗尚,如彼泉流,无沦胥以亡。夙兴夜寐,洒扫庭内,维民之章。修尔车马,弓矢戎兵,用戒戎作,用逷蛮方。

质尔人民,谨尔侯度,用戒不虞。慎尔出话,敬尔威仪,无不柔嘉。白圭之玷,尚可磨也;斯言之玷,不可为也!

无易由言,无曰苟矣,莫扪朕舌,言不可逝矣。无言不仇,无德不报。惠于朋友,庶民小子。子孙绳绳,万民靡不承。

视尔友君子,辑柔尔颜,不遐有愆。相在尔室,尚不愧于屋漏。无曰不显,莫予云覯。神之格思,不可度思,矧可射思!

辟尔为德,俾臧俾嘉。淑慎尔止,不愆于仪。不僣不贼,鲜不为则。投我以桃,报之以李。彼童而角,实虹小子。

荏染柔木,言缗之丝。温温恭人,维德之基。其维哲人,告之话言,顺德之行。其维愚人,覆谓我僣。民各有心。

于乎小子,未知臧否。匪手携之,言示之事。匪面命之,言提其耳。借曰未知,亦既抱子。民之靡盈,谁夙知而莫成?

昊天孔昭,我生靡乐。视尔梦梦,我心惨惨。诲尔谆谆,听我藐藐。匪用为教,覆用为虐。借曰未知,亦聿既耄。

于乎,小子,告尔旧止。听用我谋,庶无大悔。天方艰难,曰丧厥国。取譬不远,昊天不忒。回遹其德,俾民大棘。

!!大雅 荡之什 桑柔

菀彼桑柔,其下侯旬,捋采其刘,瘼此下民。不殄心忧,仓兄填兮。倬彼昊天,宁不我矜?

四牡骙々,旟旐有翩。乱生不夷,靡国不泯。民靡有黎,具祸以烬。于乎有哀,国步斯频。

国步灭资,天不我将。靡所止疑,云徂何往?君子实维,秉心无竞。谁生厉阶,至今为梗?

忧心殷殷,念我土宇。我生不辰,逢天僤怒。自西徂东,靡所定处。多我覯痻,孔棘我圉。

为谋为毖,乱况斯削。告尔忧恤,诲尔序爵。谁能执热,逝不以濯?其何能淑,载胥及溺。

如彼溯风,亦孔之僾。民有肃心,{艹幵}云不逮。好是稼穑,力民代食。稼穑维宝,代食维好?

天降丧乱,灭我立王。降此蟊贼,稼穑卒痒。哀恫中国,具赘卒荒。靡有旅力,以念穹苍。

维此惠君,民人所瞻。秉心宣犹,考慎其相。维彼不顺,自独俾臧。自有肺肠,俾民卒狂。

瞻彼中林,甡甡其鹿。朋友已谮,不胥以穀。人亦有言:进退维谷。

维此圣人,瞻言百里。维彼愚人,覆狂以喜。匪言不能,胡斯畏忌?

维此良人,弗求弗迪。维彼忍心,是顾是复。民之贪乱,宁为荼毒。

大风有隧,有空大谷。维此良人,作为式穀。维彼不顺,征以中垢。

大风有隧,贪人败类。听言则对,诵言如醉。匪用其良,复俾我悖。

嗟尔朋友,予岂不知而作。如彼飞虫,时亦弋获。既之阴女,反予来赫。

民之罔极,职凉善背。为民不利,如云不克。民之回遹,职竞用力。

民之未戾,职盗为寇。凉曰不可,覆背善詈。虽曰匪予,既作尔歌!

!!大雅 荡之什 云汉

倬彼云汉,昭回于天。王曰:於乎!何辜今之人?天降丧乱,饥馑荐臻。靡神不举,靡爱斯牲。圭壁既卒,宁莫我听?

旱既大甚,蕴隆虫虫。不殄禋祀,自郊徂宫。上下奠瘗,靡神不宗。后稷不克,上帝不临。耗斁下土,宁丁我躬。

旱既太甚,则不可推。兢兢业业,如霆如雷。周余黎民,靡有孑遗。昊天上帝,则不我遗。胡不相畏?先祖于摧。

旱既太甚,则不可沮。赫赫炎炎,云我无所。大命近止,靡瞻靡顾。群公先正,则不我助。父母先祖,胡宁忍予?

旱既太甚,涤涤山川。旱魃为虐,如惔如焚。我心惮暑,忧心如熏。群公先正,则不我闻。昊天上帝,宁俾我遁?

旱既太甚,黾勉畏去。胡宁瘨我以旱?憯不知其故。祈年孔夙,方社不莫。昊天上帝,则不我虞。

敬恭明神,宜无悔怒。旱既太甚,散无友纪。鞫哉庶正,疚哉冢宰。趣马师氏,膳夫左右。靡人不周。无不能止,瞻卬昊天,云如何里!

瞻卬昊天,有嘒其星。大夫君子,昭假无赢。大命近止,无弃尔成。何求为我。以戾庶正。瞻卬昊天,曷惠其宁?

!!大雅 荡之什 崧高

崧高维岳,骏极于天。维岳降神,生甫及申。维申及甫,维周之翰。四国于蕃。四方于宣。

亹亹申伯,王缵之事。于邑于谢,南国是式。王命召伯,定申伯之宅。登是南邦,世执其功。

王命申伯,式是南邦。因是谢人,以作尔庸。王命召伯,彻申伯土田。王命傅御,迁其私人。

申伯之功,召伯是营。有俶其城,寝庙既成。既成藐藐,王锡申伯。四牡蹻々,钩膺濯濯。

王遣申伯,路车乘马。我图尔居,莫如南土。锡尔介圭,以作尔宝。往近王舅,南土是保。

申伯信迈,王饯于郿。申伯还南,谢于诚归。王命召伯,彻申伯土疆。以峙其粻,式遄其行。

申伯番番,既入于谢。徒御啴々。周邦咸喜,戎有良翰。不显申伯,王之元舅,文武是宪。

申伯之德,柔惠且直。揉此万邦,闻于四国。吉甫作诵,其诗孔硕。其风肆好,以赠申伯。

!!大雅 荡之什 烝民

天生烝民,有物有则。民之秉彝,好是懿德。天监有周,昭假于下。保兹天子,生仲山甫。

仲山甫之德,柔嘉维则。令仪令色。小心翼翼。古训是式。威仪是力。天子是若,明命使赋。

王命仲山甫,式是百辟,缵戎祖考,王躬是保。出纳王命,王之喉舌。赋政于外,四方爰发。

肃肃王命,仲山甫将之。邦国若否,仲山甫明之。既明且哲,以保其身。夙夜匪解,以事一人。

人亦有言,柔则茹之,刚则吐之。维仲山甫,柔亦不茹,刚亦不吐。不侮矜寡,不畏强御。

人亦有言,德輶如毛,民鲜克举之。我仪图之,维仲山甫举之。爱莫助之。衮职有阙,维仲山甫补之。

仲山甫出祖。四牡业业。征夫捷捷,每怀靡及。四牡彭彭,八鸾锵锵。王命仲山甫,城彼东方。

四牡骙々,八鸾喈喈。仲山甫徂齐,式遄其归。吉甫作诵,穆如清风。仲山甫永怀,以慰其心。

!!大雅 荡之什 韩奕

奕奕梁山,维禹甸之,有倬其道。韩侯受命,王亲命之:缵戎祖考,无废朕命。夙夜匪解,虔共尔位,朕命不易。榦不庭方,以佐戎辟。

四牡奕奕,孔修且张。韩侯入觐,以其介圭,入觐于王。王锡韩侯,淑旂绥章,簟茀错衡,玄衮赤舄,钩膺镂锡,鞹鞃浅幭,鞗革金厄。

韩侯出祖,出宿于屠。显父饯之,清酒百壶。其殽维何?炰鳖鲜鱼。其蔌维何?维筍及蒲。其赠维何?乘马路车。笾豆有且。侯氏燕胥。

韩侯取妻,汾王之甥,蹶父之子。韩侯迎止,于蹶之里。百两彭彭,八鸾锵锵,不显其光。诸娣从之,祁祁如云。韩侯顾之,烂其盈门。

蹶父孔武,靡国不到。为韩姞相攸,莫如韩乐。孔乐韩土,川泽訏訏,鲂鱮甫甫,麀鹿噳々,有熊有罴,有猫有虎。庆既令居,韩姞燕誉。

溥彼韩城,燕师所完。以先祖受命,因时百蛮。王锡韩侯,其追其貊。奄受北国,因以其伯。实墉实壑,实亩实藉。献其貔皮,赤豹黄罴。

!!大雅 荡之什 江汉

江汉浮浮,武夫滔滔。匪安匪游,淮夷来求。既出我车,既设我旟。匪安匪舒,淮夷来铺。

江汉汤汤,武夫洸々。经营四方,告成于王。四方既平,王国庶定。时靡有争,王心载宁。

江汉之浒,王命召虎:式辟四方,彻我疆土。匪疚匪棘,王国来极。于疆于理,至于南海。

王命召虎:来旬来宣。文武受命,召公维翰。无曰予小子,召公是似。肇敏戎公,用锡尔祉。

厘尔圭瓒,秬鬯一卣。告于文人,锡山土田。于周受命,自召祖命,虎拜稽首:天子万年!

虎拜稽首,对扬王休。作召公考:天子万寿!明明天子,令闻不已,矢其文德,洽此四国。

!!大雅 荡之什 常武

赫赫明明。王命卿士,南仲大祖,大师皇父。整我六师,以修我戎。既敬既戒,惠此南国。

王谓尹氏,命程伯休父,左右陈行。戒我师旅,率彼淮浦,省此徐土。不留不处,三事就绪。

赫赫业业,有严天子。王舒保作,匪绍匪游。徐方绎骚,震惊徐方。如雷如霆,徐方震惊。

王奋厥武,如震如怒。进厥虎臣,阚如虓虎。铺敦淮濆,仍执丑虏。截彼淮浦,王师之所。

王旅啴々,如飞如翰。如江如汉,如山之苞。如川之流,绵绵翼翼。不测不克,濯征徐国。

王犹允塞,徐方既来。徐方既同,天子之功。四方既平,徐方来庭。徐方不回,王曰还归。

!!大雅 荡之什 瞻卬

瞻卬昊天,则不我惠。孔填不宁,降此大厉。邦靡有定,士民其瘵。蟊贼蟊疾,靡有夷届。罪罟不收,靡有夷瘳。

人有土田,女反有之。人有民人,女覆夺之。此宜无罪,女反收之。彼宜有罪,女覆说之。

哲夫成城,哲妇倾城。懿厥哲妇,为枭为鸱。妇有长舌,维厉之阶。乱匪降自天,生自妇人。匪教匪诲,时维妇寺。

鞫人忮忒。谮始竞背。岂曰不极?伊胡为慝?如贾三倍,君子是识。妇无公事,休其蚕织。

天何以剌?何神不富?舍尔介狄,维予胥忌。不吊不祥,威仪不类。人之云亡,邦国殄瘁。

天之降罔,维其优矣。人之云亡,心之忧矣。天之降罔,维其几矣。人之云亡,心之悲矣。

觱沸槛泉,维其深矣。心之忧矣,宁自今矣?不自我先,不自我后。藐藐昊天,无不克巩。无忝皇祖,式救尔后。

!!大雅 荡之什 召旻

旻天疾威,天笃降丧。瘨我饥馑,民卒流亡。我居圉卒荒。

天降罪罟,蟊贼内讧。昏椓靡共,溃溃回遹,实靖夷我邦。

皋皋訿々,曾不知其玷。兢兢业业,孔填不宁,我位孔贬。

如彼岁旱,草不溃茂,如彼栖苴。我相此邦,无不溃止。

维昔之富不如时,维今之疚不如兹。彼疏斯粺,胡不自替?职兄斯引。

池之竭矣,不云自频。泉之竭矣,不云自中。溥斯害矣,职兄斯弘,不烖我躬。

昔先王受命,有如召公,日辟国百里,今也日蹙国百里。於乎哀哉!维今之人,不尚有旧!
  定公(元年~十五年)

  

  !定公元年

  【经】元年春王三月。晋人执宋仲几于京师。夏六月癸亥,公之丧至自乾侯。

  戊辰,公即位。秋七月癸巳,葬我君昭公。九月,大雩。立炀宫。冬十月,陨霜杀菽。

  

  【传】元年春,王正月辛巳,晋魏舒合诸侯之大夫于狄泉,将以城成周。魏子莅政。卫彪傒曰:“将建天子,而易位以令,非义也。大事奸义,必有大咎。

  晋不失诸侯,魏子其不免乎!”是行也,魏献子属役于韩简子及原寿过,而田于大陆,焚焉,还,卒于宁。范献子去其柏椁,以其未复命而田也。

  孟懿子会城成周,庚寅,栽。宋仲几不受功,曰:“滕、薛、郳,吾役也。”

  薛宰曰:“宋为无道,绝我小国于周,以我适楚,故我常从宋。晋文公为践土之盟,曰:‘凡我同盟,各复旧职。’若从践土,若从宋,亦唯命。”仲几曰:“践土固然。”薛宰曰:“薛之皇祖奚仲,居薛以为夏车正。奚仲迁于邳,仲虺居薛,以为汤左相。若复旧职,将承王官,何故以役诸侯?”仲几曰:“三代各异物,薛焉得有旧?为宋役,亦其职也。”士弥牟曰:“晋之从政者新,子姑受功。归,吾视诸故府。”仲几曰:“纵子忘之,山川鬼神其忘诸乎?”士伯怒,谓韩简子曰:“薛征于人,宋征于鬼,宋罪大矣。且己无辞而抑我以神,诬我也。

  启宠纳侮,其此之谓矣。必以仲几为戮。”乃执仲几以归。三月,归诸京师。

  城三旬而毕,乃归诸侯之戍。

  齐高张后,不从诸侯。晋女叔宽曰:“周苌弘、齐高张皆将不免。苌叔违天,高子违人。天之所坏,不可支也。众之所为,不可奸也。”

  夏,叔孙成子逆公之丧于乾侯。季孙曰:“子家子亟言于我,未尝不中吾志也。吾欲与之从政,子必止之,且听命焉。”子家子不见叔孙,易几而哭。叔孙请见子家子,子家子辞,曰:“羁未得见,而从君以出。君不命而薨,羁不敢见。”

  叔孙使告之曰:“公衍、公为实使群臣不得事君。若公子宋主社稷,则群臣之愿也。凡从君出而可以入者,将唯子是听。子家氏未有后,季孙愿与子从政,此皆季孙之愿也,使不敢以告。”对曰:“若立君,则有卿士、大夫与守龟在,羁弗敢知。若从君者,则貌而出者,入可也;寇而出者,行可也。若羁也,则君知其出也,而未知其入也,羁将逃也。”

  丧及坏隤,公子宋先入,从公者皆自坏隤反。

  六月癸亥,公之丧至自乾侯。戊辰,公即位。季孙使役如阚,公氏将沟焉。

  荣驾鹅曰:“生不能事,死又离之,以自旌也。纵子忍之,后必或耻之。”乃止。

  季孙问于荣驾鹅曰:“吾欲为君谥,使子孙知之。”对曰:“生弗能事,死又恶之,以自信也。将焉用之?”乃止。

  秋七月癸巳,葬昭公于墓道南。孔子之为司寇也,沟而合诸墓。

  昭公出,故季平子祷于炀公。九月,立炀宫。

  周巩简公弃其子弟,而好用远人。

  

  

  !定公二年

  【经】二年春王正月。夏五月壬辰,雉门及两观灭。秋,楚人伐吴。冬十月,新作雉门及两观。

  

  【传】二年夏四月辛酉,巩氏之群子弟贼简公。

  桐叛楚。吴子使舒鸠氏诱楚人,曰:“以师临我,我伐桐,为我使之无忌。”

  秋,楚囊瓦伐吴,师于豫章。吴人见舟于豫章,而潜师于巢。冬十月,吴军楚师于豫章,败之。遂围巢,克之,获楚公子繁。

  邾庄公与夷射姑饮酒,私出。阍乞肉焉。夺之杖以敲之。

  

  

  !定公三年

  【经】三年春王正月,公如晋,至河,乃复。二月辛卯,邾子穿卒。夏四月。

  秋,葬邾庄公。冬,仲孙何忌及邾子盟于拔。

  

  【传】三年春二月辛卯,邾子在门台,临廷。阍以瓶水沃廷。邾子望见之,怒。阍曰:“夷射姑旋焉。”命执之,弗得,滋怒。自投于床,废于炉炭,烂,遂卒。先葬以车五乘,殉五人。庄公卞急而好洁,故及是。

  秋九月,鲜虞人败晋师于平中,获晋观虎,恃其勇也。

  冬,盟于郯,修邾好也。

  蔡昭侯为两佩与两裘,以如楚,献一佩一裘于昭王。昭王服之,以享蔡侯。

  蔡侯亦服其一。子常欲之,弗与,三年止之。唐成公如楚,有两肃爽马,子常欲之,弗与,亦三年止之。唐人或相与谋,请代先从者,许之。饮先从者酒,醉之,窃马而献之子常。子常归唐侯。自拘于司败,曰:“君以弄马之故,隐君身,弃国家,群臣请相夫人以偿马,必如之。”唐侯曰:“寡人之过也,二三子无辱。”

  皆赏之。蔡人闻之,固请而献佩于子常。子常朝,见蔡侯之徒,命有司曰:“蔡君之久也,官不共也。明日,礼不毕,将死。”蔡侯归,及汉,执玉而沈,曰“余所有济汉而南者,有若大川。”蔡侯如晋,以其子元与其大夫之子为质焉,而请伐楚。

  

  

  !定公四年

  【经】四年春王二月癸巳,陈侯吴卒。三月,公会刘子、晋侯、宋公、蔡侯、卫侯、陈子、郑伯、许男、曹伯、莒子、邾子、顿子、胡子、滕子、薛伯、杞伯、小邾子、齐国夏于召陵,侵楚。夏四月庚辰,蔡公孙姓帅师灭沈,以沈子嘉归,杀之。五月,公及诸侯盟于皋鼬。杞伯成卒于会。六月,葬陈惠公。许迁于容城。

  秋七月,至自会。刘卷卒。葬杞悼公。楚人围蔡。晋士鞅、卫孔围帅师伐鲜虞。

  葬刘文公。冬十有一月庚午,蔡侯以吴子及楚人战于柏举,楚师败绩。楚囊瓦出奔郑。庚辰,吴入郢。

  

  【传】四年春三月,刘文公合诸侯于召陵,谋伐楚也。

  晋荀寅求货于蔡侯,弗得。言于范献子曰:“国家方危,诸侯方贰,将以袭敌,不亦难乎!水潦方降,疾疟方起,中山不服,弃盟取怨,无损于楚,而失中山,不如辞蔡侯。吾自方城以来,楚未可以得志,只取勤焉。”乃辞蔡侯。

  晋人假羽旄于郑,郑人与之。明日,或旆以会。晋于是乎失诸侯。将会,卫子行敬子言于灵公曰:“会同难,啧有烦言,莫之治也。其使祝佗从!”公曰:“善。”乃使子鱼。子鱼辞,曰:“臣展四体,以率旧职,犹惧不给而烦刑书,若又共二,徼大罪也。且夫祝,社稷之常隶也。社稷不动,祝不出竟,官之制也。

  君以军行,祓社衅鼓,祝奉以从,于是乎出竟。若嘉好之事,君行师从,卿行旅从,臣无事焉。”公曰:“行也。”及皋鼬,将长蔡于卫。卫侯使祝佗私于苌弘曰:“闻诸道路,不知信否。若闻蔡将先卫,信乎?”苌弘曰:“信。蔡叔,康叔之兄也,先卫,不亦可乎?”子鱼曰:“以先王观之,则尚德也。昔武王克商,成王定之,选建明德,以蕃屏周。故周公相王室,以尹天下,于周为睦。分鲁公以大路,大旂,夏后氏之璜,封父之繁弱,殷民六族,条氏、徐氏、萧氏、索氏、长勺氏、尾勺氏。使帅其宗氏,辑其分族,将其类丑,以法则周公,用即命于周。

  是使之职事于鲁,以昭周公之明德。分之土田陪敦,祝、宗、卜、史,备物、典策,官司、彝器。因商奄之民,命以伯禽,而封于少皞之虚。分康叔以大路、少帛、綪茷、旃旌、大吕,殷民七族,陶氏、施氏、繁氏、锜氏、樊氏、饥氏、终葵氏;封畛土略,自武父以南,及圃田之北竟,取于有阎之土,以共王职。

  取于相土之东都,以会王之东蒐。聃季授土,陶叔授民,命以《康诰》,而封于殷虚。皆启以商政,疆以周索。分唐叔以大路,密须之鼓,阙巩,沽洗,怀姓九宗,职官五正。命以《唐诰》,而封于夏虚,启以夏政,疆以戎索。三者皆叔也,而有令德,故昭之以分物。不然,文、武、成、康之伯犹多,而不获是分也,唯不尚年也。管蔡启商,惎间王室。王于是乎杀管叔而蔡蔡叔,以车七乘,徒七十人。其子蔡仲,改行帅德,周公举之,以为己卿士。见诸王而命之以蔡,其命书云:‘王曰:胡!无若尔考之违王命也。’若之何其使蔡先卫也?武王之母弟八人,周公为大宰,康叔为司寇,聃季为司空,五叔无官,岂尚年哉!曹,文之昭也;晋,武之穆也。曹为伯甸,非尚年也。今将尚之,是反先王也。晋文公为践土之盟,卫成公不在,夷叔,其母弟也,犹先蔡。其载书云:‘王若曰,晋重、鲁申、卫武、蔡甲午、郑捷、齐潘、宋王臣、莒期。’藏在周府,可覆视也。吾子欲复文、武之略,而不正其德,将如之何?”苌弘说,告刘子,与范献子谋之,乃长卫侯于盟。

  反自召陵,郑子大叔未至而卒。晋赵简子为之临,甚哀,曰:“黄父之会,夫子语我九言,曰:‘无始乱,无怙富,无恃宠,无违同,无敖礼,无骄能,无复怒,无谋非德,无犯非义。’”沈人不会于召陵,晋人使蔡伐之。夏,蔡灭沈。

  秋,楚为沈故,围蔡。伍员为吴行人以谋楚。楚之杀郤宛也,伯氏之族出。

  伯州犁之孙嚭为吴大宰以谋楚。楚自昭王即位,无岁不有吴师。蔡侯因之,以其子乾与其大夫之子为质于吴。

  冬,蔡侯、吴子、唐侯伐楚。舍舟于淮汭,自豫章与楚夹汉。左司马戌谓子常曰:“子沿汉而与之上下,我悉方城外以毁其舟,还塞大隧、直辕、冥厄,子济汉而伐之,我自后击之,必大败之。”既谋而行。武城黑谓子常曰:“吴用木也,我用革也,不可久也。不如速战。”史皇谓子常:“楚人恶子而好司马,若司马毁吴舟于淮,塞城口而入,是独克吴也。子必速战,不然不免。”乃济汉而陈,自小别至于大别。三战,子常知不可,欲奔。史皇曰:“安求其事,难而逃之,将何所入?子必死之,初罪必尽说。”

  十一月庚午,二师陈于柏举。阖庐之弟夫概王,晨请于阖庐曰:“楚瓦不仁,其臣莫有死志,先伐之,其卒必奔。而后大师继之,必克。”弗许。夫概王曰:“所谓‘臣义而行,不待命’者,其此之谓也。今日我死,楚可入也。”以其属五千,先击子常之卒。子常之卒奔,楚师乱,吴师大败之。子常奔郑。史皇以其乘广死。吴从楚师,及清发,将击之。夫王曰:“困兽犹斗,况人乎?若知不免而致死,必败我。若使先济者知免,后者慕之,蔑有斗心矣。半济而后可击也。”

  从之。又败之。楚人为食,吴人及之,奔。食而从之,败诸雍澨,五战及郢。

  己卯,楚子取其妹季羋畀我以出,涉睢。针尹固与王同舟,王使执燧象以奔吴师。

  庚辰,吴入郢,以班处宫。子山处令尹之宫,夫王欲攻之,惧而去之,夫王入之。

  左司马戌及息而还,败吴师于雍澨,伤。初,司马臣阖庐,故耻为禽焉。谓其臣曰:“谁能免吾首?”吴句卑曰:“臣贱,可乎?”司马曰:“我实失子,可哉!”三战皆伤,曰:“吾不用也已。”句卑布裳,刭而裹之,藏其身而以其首免。楚子涉雎,济江,入于云中。王寝,盗攻之,以戈击王。王孙由于以背受之。中肩。王奔郧,钟建负季羋以从,由于徐苏而从。郧公辛之弟怀将弑王,曰:“平王杀吾父,我杀其子,不亦可乎?”辛曰:“君讨臣,谁敢仇之?君命,天也,若死天命,将谁仇?《诗》曰:‘柔亦不茹,刚亦不吐,不侮矜寡,不畏强御。’唯仁者能之。违强陵弱,非勇也。乘人之约,非仁也。灭宗废祀,非孝也。

  动无令名,非知也。必犯是,余将杀女。”斗辛与其弟巢以王奔随。吴人从之,谓随人曰:“周之子孙在汉川者,楚实尽之。天诱其衷,致罚于楚,而君又窜之。

  周室何罪?君若顾报周室,施及寡人,以奖天衷,君之惠也。汉阳之田,君实有之。”楚子在公宫之北,吴人在其南。子期似王,逃王,而己为王,曰:“以我与之,王必免。”随人卜与之,不吉。乃辞吴曰:“以随之辟小而密迩于楚,楚实存之,世有盟誓,至于今未改。若难而弃之,何以事君?执事之患,不唯一人。

  若鸠楚竟,敢不听命。”吴人乃退。鑢金初宦于子期氏,实与随人要言。王使见,辞,曰:“不敢以约为利。”王割子期之心,以与随人盟。

  初,伍员与申包胥友。其亡也,谓申包胥曰:“我必复楚国。”申包胥曰:“勉之!子能复之,我必能兴之。”及昭王在随,申包胥如秦乞师,曰:“吴为封豕、长蛇,以荐食上国,虐始于楚。寡君失守社稷,越在草莽。使下臣告急,曰:‘夷德无厌,若邻于君,疆埸之患也。逮吴之未定,君其取分焉。若楚之遂亡,君之土也。若以君灵抚之,世以事君。’”秦伯使辞焉,曰:“寡人闻命矣。

  子姑就馆,将图而告。”对曰:“寡君越在草莽,未获所伏。下臣何敢即安?”立,依于庭墙而哭,日夜不绝声,勺饮不入口七日。秦哀公为之赋《无衣》,九顿首而坐,秦师乃出。

  

  

  !定公五年

  【经】五年春王三月辛亥朔,日有食之。夏,归粟于蔡。于越入吴。六月丙申,季孙意如卒。秋七月壬子,叔孙不敢卒。冬,晋士鞅帅师围鲜虞。

  

  【传】五年春,王人杀子朝于楚。

  夏,归粟于蔡,以周亟,矜无资。

  越入吴,吴在楚也。

  六月,季平子行东野,还,未至,丙申,卒于房。阳虎将以与璠敛,仲梁怀弗与,曰:“改步改玉。”阳虎欲逐之,告公山不狃。不狃曰:“彼为君也,子何怨焉?”既葬,桓子行东野,及费。子泄为费宰,逆劳于郊,桓子敬之。劳仲梁怀,仲梁怀弗敬。子泄怒,谓阳虎:“子行之乎?”申包胥以秦师至,秦子蒲、子虎帅车五百乘以救楚。子蒲曰:“吾未知吴道。”

  使楚人先与吴人战,而自稷会之,大败夫王于沂。吴人获薳射于柏举,其子帅奔徒以从子西,败吴师于军祥。秋七月,子期、子蒲灭唐。

  九月,夫王归,自立也。以与王战而败,奔楚,为堂溪氏。吴师败楚师于雍澨,秦师又败吴师。吴师居麇,子期将焚之,子西曰:“父兄亲暴骨焉,不能收,又焚之,不可。”子期曰:“国亡矣!死者若有知也,可以歆旧祀,岂惮焚之?”焚之,而又战,吴师败。又战于公婿之溪,吴师大败,吴子乃归。囚闉舆罢,闉舆罢请先,遂逃归。叶公诸梁之弟后臧从其母于吴,不待而归。叶公终不正视。

  乙亥,阳虎囚季桓子及公父文伯,而逐仲梁怀。冬十月丁亥,杀公何藐。己丑,盟桓子于稷门之内。庚寅,大诅,逐公父歜及秦遄,皆奔齐。

  楚子入于郢。初,斗辛闻吴人之争宫也,曰:“吾闻之:‘不让则不和,不和不可以远征。’吴争于楚,必有乱。有乱则必归,焉能定楚?”王之奔随也,将涉于成臼,蓝尹亹涉其帑,不与王舟。及宁,王欲杀之。子西曰:“子常唯思旧怨以败,君何效焉?”王曰:“善。使复其所,吾以志前恶。”王赏斗辛、王孙由于、王孙圉、钟建、斗巢、申包胥、王孙贾、宋木、斗怀。子西曰:“请舍怀也。”王曰:“大德灭小怨,道也。”申包胥曰:“吾为君也,非为身也。君既定矣,又何求?且吾尤子旗,其又为诸?”遂逃赏。王将嫁季羋,季羋辞曰:“所以为女子,远丈夫也。钟建负我矣。”以妻钟建,以为乐尹。

  王之在随也,子西为王舆服以保路,国于脾泄。闻王所在,而后从王。王使由于城麇,复命,子西问高厚焉,弗知。子西曰:“不能,如辞。城不知高厚,小大何知?”对曰:“固辞不能,子使余也。人各有能有不能。王遇盗于云中,余受其戈,其所犹在。”袒而示之背,曰:“此余所能也。脾泄之事,余亦弗能也。”

  晋士鞅围鲜虞,报观虎之役也。

  

  

  !定公六年

  【经】六年春王正月癸亥,郑游速帅师灭许,以许男斯归。二月,公侵郑。

  公至自侵郑。夏,季孙斯、仲孙何忌如晋。秋,晋人执宋行人乐祁犁。冬,城中城。季孙斯、仲孙忌帅师围郓。

  

  【传】六年春,郑灭许,因楚败也。

  二月,公侵郑,取匡,为晋讨郑之伐胥靡也。往不假道于卫;及还,阳虎使季、孟自南门入,出自东门,舍于豚泽。卫侯怒,使弥子瑕追之。公叔文子老矣,辇而如公,曰:“尤人而效之,非礼也。昭公之难,君将以文之舒鼎,成之昭兆,定之鞶鉴,苟可以纳之,择用一焉。公子与二三臣之子,诸侯苟忧之,将以为之质。此群臣之所闻也。今将以小忿蒙旧德,无乃不可乎!大姒之子,唯周公、康叔为相睦也。而效小人以弃之,不亦诬乎!天将多阳虎之罪以毙之,君姑待之,若何?”乃止。

  夏,季桓子如晋,献郑俘也。阳虎强使孟懿子往报夫人之币。晋人兼享之。

  孟孙立于房外,谓范献子曰:“阳虎若不能居鲁,而息肩于晋,所不以为中军司马者,有如先君!”献子曰:“寡君有官,将使其人。鞅何知焉?”献子谓简子曰:“鲁人患阳虎矣,孟孙知其衅,以为必适晋,故强为之请,以取入焉。”

  四月己丑,吴大子终累败楚舟师,获潘子臣、小惟子及大夫七人。楚国大惕,惧亡。子期又以陵师败于繁扬。令尹子西喜曰:“乃今可为矣。”于是乎迁郢于鄀,而改纪其政,以定楚国。

  周儋翩率王子朝之徒,因郑人将以作乱于周。郑于是乎伐冯、滑、胥靡、负黍、狐人、阙外。六月,晋阎没戍周,且城胥靡。

  秋八月,宋乐祁言于景公曰:“诸侯唯我事晋,今使不往,晋其憾矣。”乐祁告其宰陈寅。陈寅曰:“必使子往。”他日,公谓乐祁曰:“唯寡人说子之言,子必往。”陈寅曰:“子立后而行,吾室亦不亡,唯君亦以我为知难而行也。”

  见溷而行。赵简子逆,而饮之酒于绵上,献杨楯六十于简子。陈寅曰:“昔吾主范氏,今子主赵氏,又有纳焉。以杨楯贾祸,弗可为也已。然子死晋国,子孙必得志于宋。”范献子言于晋侯曰:“以君命越疆而使,未致使而私饮酒,不敬二君,不可不讨也。”乃执乐祁。

  阳虎又盟公及三桓于周社,盟国人于亳社,诅于五父之衢。

  冬,十二月,天王处于姑莸,辟儋翩之乱也。

  

  

  !定公七年

  【经】七年春王正月。夏四月。秋,齐侯、郑伯盟于咸。齐人执卫行人北宫结以侵卫。齐侯、卫侯盟于沙。大雩。齐国夏帅师伐我西鄙。九月,大雩。冬十月。

  

  【传】七年春二月,周儋翩入于仪栗以叛。

  齐人归郓、阳关,阳虎居之以为政。

  夏四月,单武公、刘桓公败尹氏于穷谷。

  秋,齐侯、郑伯盟于咸,征会于卫。卫侯欲叛晋,诸大夫不可。使北宫结如齐,而私于齐侯曰:“执结以侵我。”齐侯从之,乃盟于琐。

  齐国夏伐我。阳虎御季桓子,公敛处父御孟懿子,将宵军齐师。齐师闻之,堕,伏而待之。处父曰:“虎不图祸,而必死。”苫夷曰:“虎陷二子于难,不待有司,余必杀女。”虎惧,乃还,不败。

  冬十一月戊午,单子、刘子逆王于庆氏。晋籍秦送王。己巳,王入于王城,馆于公族党氏,而后朝于庄宫。

  

  

  !定公八年

  【经】八年春王正月,公侵齐。公至自侵齐。二月,公侵齐。三月,公至自侵齐。曹伯露卒。夏,齐国夏帅师伐我西鄙。公会晋师于瓦。公至自瓦。秋七月戊辰,陈侯柳卒。晋士鞅帅师侵郑,遂侵卫。葬曹靖公。九月,葬陈怀公。季孙斯、仲孙何忌帅师侵卫。冬,卫侯、郑伯盟于曲濮。从祀先公。盗窃宝玉、大弓。

  

  【传】八年春,王正月,公侵齐,门于阳州。士皆坐列,曰:“颜高之弓六钧。”皆取而传观之。阳州人出,颜高夺人弱弓,籍丘子鉏击之,与一人俱毙。

  偃,且射子鉏,中颊,殪。颜息射人中眉,退曰:“我无勇,吾志其目也。”师退,冉猛伪伤足而先。其兄会乃呼曰:“猛也殿!”二月己丑,单子伐谷城,刘子伐仪栗。辛卯,单子伐简城,刘子伐盂,以定王室。

  赵鞅言于晋侯曰:“诸侯唯宋事晋,好逆其使,犹惧不至。今又执之,是绝诸侯也。”将归乐祁。士鞅曰:“三年止之,无故而归之,宋必叛晋。“献子私谓子梁曰:“寡君惧不得事宋君,是以止子。子姑使溷代子。”子梁以告陈寅,陈寅曰:“宋将叛晋,是弃溷也,不如侍之。”乐祁归,卒于大行。士鞅曰:“宋必叛,不如止其尸以求成焉。”乃止诸州。

  公侵齐,攻廪丘之郛。主人焚冲,或濡马褐以救之,遂毁之。主人出,师奔。

  阳虎伪不见冉猛者,曰:“猛在此,必败。”猛逐之,顾而无继,伪颠。虎曰:“尽客气也。”苫越生子,将待事而名之。阳州之役获焉,名之曰阳州。

  夏,齐国夏、高张伐我西鄙。晋士鞅、赵鞅、荀寅救我。公会晋师于瓦。范献子执羔,赵简子、中行文子皆执雁。鲁于是始尚羔。

  晋师将盟卫侯于鄟泽。赵简子曰:“群臣谁敢盟卫君者?”涉佗、成何曰:“我能盟之。”卫人请执牛耳。成何曰:“卫,吾温、原也,焉得视诸侯?”将歃,涉佗捘卫侯之手,及捥。卫侯怒,王孙贾趋进,曰:“盟以信礼也。有如卫君,其敢不唯礼是事,而受此盟也。”

  卫侯欲叛晋,而患诸大夫。王孙贾使次于郊,大夫问故。公以晋诟语之,且曰:“寡人辱社稷,其改卜嗣,寡人从焉。”大夫曰:“是卫之祸,岂君之过也?”公曰:“又有患焉。谓寡人‘必以而子与大夫之子为质。’”大夫曰:“苟有益也,公子则往。群臣之子,敢不皆负羁绁以从?”将行。王孙贾曰:“苟卫国有难,工商未尝不为患,使皆行而后可。”公以告大夫,乃皆将行之。行有日,公朝国人,使贾问焉,曰:“若卫叛晋,晋五伐我,病何如矣?”皆曰:“五伐我,犹可以能战。”贾曰:“然则如叛之,病而后质焉,何迟之有?”乃叛晋。晋人请改盟,弗许。

  秋,晋士鞅会成桓公,侵郑,围虫牢,报伊阙也。遂侵卫。

  九月,师侵卫,晋故也。

  季寤、公鉏极、公山不狃皆不得志于季氏,叔孙辄无宠于叔孙氏,叔仲志不得志于鲁。故五人因阳虎。阳虎欲去三桓,以季寤更季氏,以叔孙辄更叔孙氏,己更孟氏。冬十月,顺祀先公而祈焉。辛卯,禘于僖公。壬辰,将享季氏于蒲圃而杀之,戒都车曰:“癸巳至。”成宰公敛处父告孟孙,曰:“季氏戒都车,何故?”孟孙曰:“吾弗闻。”处父曰:“然则乱也,必及于子,先备诸?”与孟孙以壬辰为期。

  阳虎前驱,林楚御桓子,虞人以铍盾夹之,阳越殿,将如蒲圃。桓子咋谓林楚曰:“而先皆季氏之良也,尔以是继之。”对曰:“臣闻命后。阳虎为政,鲁国服焉。违之,征死。死无益于主。”桓子曰:“何后之有?而能以我适孟氏乎?”对曰:“不敢爱死,惧不免主。”桓子曰:“往也。”孟氏选圉人之壮者三百人,以为公期筑室于门外。林楚怒马及衢而骋,阳越射之,不中,筑者阖门。有自门间射阳越,杀之。阳虎劫公与武叔,以伐孟氏。公敛处父帅成人,自上东门入,与阳氏战于南门之内,弗胜。又战于棘下,阳氏败。阳虎说甲如公宫,取宝玉、大弓以出,舍于五父之衢,寝而为食。其徒曰:“追其将至。”虎曰:“鲁人闻余出,喜于征死,何暇追余?”从者曰:“嘻!速驾!公敛阳在。”公敛阳请追之,孟孙弗许。阳欲杀桓子,孟孙惧而归之。子言辨舍爵于季氏之庙而出。阳虎入于讙、阳关以叛。

  郑驷歂嗣子大叔为政。

  

  

  !定公九年

  【经】九年春王正月。夏四月戊申,郑伯虿卒。得宝玉、大弓。六月,葬郑献公。秋,齐侯、卫侯次于五氏。秦伯卒。冬,葬秦哀公。

  

  【传】九年春,宋公使乐大心盟于晋,且逆乐祁之尸。辞,伪有疾。乃使向巢如晋盟,且逆子梁之尸。子明谓桐门右师出,曰:“吾犹衰绖,而子击钟,何也?”右师曰:“丧不在此故也。”既而告人曰:“己衰绖而生子,余何故舍钟?”子明闻之,怒,言于公曰:“右师将不利戴氏,不肯适晋,将作乱也。不然无疾。”

  乃逐桐门右师。

  郑驷歂杀邓析,而用其《竹刑》。君子谓子然:“于是不忠。苟有可以加于国家者,弃其邪可也。《静女》之三章,取彤管焉。《竿旄》‘何以告之’,取其忠也。故用其道,不弃其人。《诗》云:‘蔽芾甘棠,勿翦勿伐、召伯所茇。’思其人犹爱其树,况用其道而不恤其人乎?子然无以劝能矣。”

  夏,阳虎归宝玉、大弓。书曰“得”,器用也。凡获器用曰得,得用焉曰获。

  六月,伐阳关。阳虎使焚莱门。师惊,犯之而出,奔齐,请师以伐鲁,曰:“三加必取之。”齐侯将许之。鲍文子谏曰:“臣尝为隶于施氏矣,鲁未可取也。

  上下犹和,众庶犹睦,能事大国,而无天灾,若之何取之?阳虎欲勤齐师也,齐师罢,大臣必多死亡,己于是乎奋其诈谋。夫阳虎有宠于季氏,而将杀季孙,以不利鲁国,而求容焉。亲富不亲仁,君焉用之?君富于季氏,而大于鲁国,兹阳虎所欲倾覆也。鲁免其疾,而君又收之,无乃害乎!”齐侯执阳虎,将东之。阳虎愿东,乃囚诸西鄙。尽借邑人之车,锲其轴,麻约而归之。载葱灵,寝于其中而逃。追而得之,囚于齐。又以葱灵逃,奔晋,适赵氏。仲尼曰:“赵氏其世有乱乎!”秋,齐侯伐晋夷仪。敝无存之父将室之,辞,以与其弟,曰:“此役也不死,反,必娶于高、国。”先登,求自门出,死于溜下。东郭书让登,犁弥从之,曰:“子让而左,我让而右,使登者绝而后下。”书左,弥先下。书与王猛息。猛曰:“我先登。”书敛甲,曰:“曩者之难,今又难焉!”猛笑曰:“吾从子如骖之靳。”

  晋车千乘在中牟。卫侯将如五氏,卜过之,龟焦。卫侯曰:“可也。卫车当其半,寡人当其半,敌矣。”乃过中牟。中牟人欲伐之,卫褚师圃亡在中牟,曰:“卫虽小,其君在焉,未可胜也。齐师克城而骄,其帅又贱,遇,必败之。不如从齐。”乃伐齐师,败之。齐侯致禚、媚、杏于卫。齐侯赏犁弥,犁弥辞,曰:“有先登者,臣从之,皙帻而衣狸制。”公使视东郭书,曰:“乃夫子也,吾贶子。”公赏东郭书,辞,曰:“彼,宾旅也。”乃赏犁弥。

  齐师之在夷仪也,齐侯谓夷仪人曰:“得敝无存者,以五家免。”乃得其尸。

  公三襚之。与之犀轩与直盖,而先归之。坐引者,以师哭之,亲推之三。

  

  

  !定公十年

  【经】十年春王三月,乃齐平。夏,公会齐侯于夹谷。公至自夹谷。晋赵鞅帅师围卫。齐人来归郓、讙、龟阴田。叔孙州仇、仲孙何忌帅师围郈。秋,叔孙州仇、仲孙何忌帅师围郈。宋乐大心出奔曹。宋公子地出奔陈。冬,齐侯、卫侯、郑游速会于安甫。叔孙州仇如齐。宋公之弟辰暨仲佗、石彄出奔陈。

  

  【传】十年春,及齐平。

  夏,公会齐侯于祝其,实夹谷。孔丘相。犁弥言于齐侯曰:“孔丘知礼而无勇,若使莱人以兵劫鲁侯,必得志焉。”齐侯从之。孔丘以公退,曰:“士,兵之!两君合好,而裔夷之俘以兵乱之,非齐君所以命诸侯也。裔不谋夏,夷不乱华,俘不干盟,兵不逼好。于神为不祥,于德为愆义,于人为失礼,君必不然。”

  齐侯闻之,遽辟之。

  将盟,齐人加于载书曰:“齐师出竟,而不以甲车三百乘从我者,有如此盟。”

  孔丘使兹无还揖对曰:“而不反我汶阳之田,吾以共命者,亦如之。”齐侯将享公,孔丘谓梁丘据曰:“齐、鲁之故,吾子何不闻焉?事既成矣,而又享之,是勤执事也。且犠象不出门,嘉乐不野合。飨而既具,是弃礼也。若其不具,用秕稗也。用秕稗,君辱,弃礼,名恶,子盍图之?夫享,所以昭德也。不昭,不如其已也。”乃不果享。

  齐人来归郓、欢、龟阴之田。

  晋赵鞅围卫,报夷仪也。

  初,卫侯伐邯郸午于寒氏,城其西北而守之,宵熸。及晋围卫,午以徒七十人门于卫西门,杀人于门中,曰:“请报寒氏之役。”涉佗曰:“夫子则勇矣,然我往,必不敢启门。”亦以徒七十人,旦门焉,步左右,皆至而立,如植。日中不启门,乃退。反役,晋人讨卫之叛故,曰:“由涉佗、成何。”于是执涉佗以求成于卫。卫人不许,晋人遂杀涉佗。成何奔燕。君子曰:“此之谓弃礼,必不钧。《诗》曰:‘人而无礼,胡不遄死。’涉佗亦遄矣哉!”初,叔孙成子欲立武叔,公若藐固谏曰:“不可。”成子立之而卒。公南使贼射之,不能杀。公南为马正,使公若为郈宰。武叔既定,使郈马正侯犯杀公若,不能。其圉人曰:“吾以剑过朝,公若必曰:‘谁也剑也?’吾称子以告,必观之。吾伪固,而授之末,则可杀也。”使如之,公若曰:“尔欲吴王我乎?”遂杀公若。侯犯以郈叛,武叔懿子围郈,弗克。

  秋,二子及齐师复围郈,弗克。叔孙谓郈工师驷赤曰:“郈非唯叔孙氏之忧,社稷之患也。将若之何?”对曰:“臣之业,在《扬水》卒章之四言矣。”

  叔孙稽首。驷赤谓侯犯曰:“居齐、鲁之际,而无事,必不可矣。子盍求事于齐以临民?不然,将叛。”侯犯从之。齐使至,驷赤与郈人为之宣言于郈中曰:“侯犯将以郈易于齐,齐人将迁郈民。”众凶惧。驷赤谓侯犯曰:“众言异矣。子不如易于齐,与其死也。犹是郈也,而得纾焉,何必此?齐人欲以此逼鲁,必倍与子地。且盍多舍甲于子之门,以备不虞?”侯犯曰:“诺。”乃多舍甲焉。侯犯请易于齐,齐有司观郈,将至。驷赤使周走呼曰:“齐师至矣!”郈人大骇,介侯犯之门甲,以围侯犯。驷赤将射之。侯犯止之,曰:“谋免我。”

  侯犯请行,许之。驷赤先如宿,侯犯殿。每出一门,郈人闭之。及郭门,止之,曰:“子以叔孙氏之甲出,有司若诛之,群臣惧死。”驷赤曰:“叔孙氏之甲有物,吾未敢以出。”犯谓驷赤曰:“子止而与之数。”驷赤止,而纳鲁人。侯犯奔齐,齐人乃致郈。

  宋公子地嬖蘧富猎,十一分其室,而以其五与之。公子地有白马四。公嬖向魋,魋欲之,公取而朱其尾鬛以与之。地怒,使其徒抶魋而夺之。魋惧,将走。

  公闭门而泣之,目尽肿。母弟辰曰:“子分室以与猎也,而独卑魋,亦有颇焉。

  子为君礼,不过出竟,君必止子。”公子地奔陈,公弗止。辰为之请,弗听。辰曰:“是我<辶壬>吾兄也。吾以国人出,君谁与处?”冬,母弟辰暨仲佗、石彄出奔陈。

  武叔聘于齐,齐侯享之,曰:“子叔孙!若使郈在君之他竟,寡人何知焉?属与敝邑际,故敢助君忧之。”对曰:“非寡君之望也。所以事君,封疆社稷是以。敢以家隶勤君之执事?夫不令之臣,天下之所恶也。君岂以为寡君赐?”

  

  !定公十一年

  【经】十有一年春,宋公之弟辰及仲佗、石彄、公子地自陈入于萧以叛。

  夏四月。秋,宋乐大心自曹入于萧。冬,及郑平。叔还如郑莅盟。

  

  【传】十一年春,宋公母弟辰暨仲佗、石彄、公子地入于萧以叛。秋,乐大心从之,大为宋患,宠向魋故也。

  冬,及郑平,始叛晋也。

  

  

  !定公十二年

  【经】十有二年春,薛伯定卒。夏,葬薛襄公。叔孙州仇帅师堕郈。卫公孟彄帅师伐曹。季孙斯、仲孙何忌帅师堕费。秋,大雩。冬十月癸亥,公会齐侯盟于黄。十有一月丙寅朔,日有食之。公至自黄。十有二月,公围成。公至自围成。

  

  【传】十二年夏,卫公孟彄伐曹,克郊。还,滑罗殿。未出,不退于列。

  其御曰:“殿而在列,其为无勇乎?”罗曰:“与其素厉,宁为无勇。”

  仲由为季氏宰,将堕三都,于是叔孙氏堕郈。季氏将堕费,公山不狃、叔孙辄帅费人以袭鲁。公与三子入于季氏之宫,登武子之台。费人攻之,弗克。入及公侧。仲尼命申句须、乐颀下,伐之,费人北。国人追之,败诸姑蔑。二子奔齐,遂堕费。将堕成,公敛处父谓孟孙:“堕成,齐人必至于北门。且成,孟氏之保障也,无成,是无孟氏也。子伪不知,我将不堕。”

  冬十二月,公围成,弗克。

  

  

  !定公十三年

  【经】十有三年春,齐侯、卫侯次于垂葭。夏,筑蛇渊囿。大蒐于比蒲。卫公孟彄帅师伐曹。晋赵鞅入于晋阳以叛。冬,晋荀寅、士吉射入于朝歌以叛。

  晋赵鞅归于晋。薛弑其君比。

  

  【传】十三年春,齐侯、卫侯次于垂葭,实郹氏。使师伐晋,将济河。诸大夫皆曰:“不可。”邴意兹曰:“可。锐师伐河内,传必数日而后及绛。绛不三月,不能出河,则我既济水矣。”乃伐河内。齐侯皆敛诸大夫之轩,唯邴意兹乘轩。齐侯欲与卫侯乘,与之宴,而驾乘广,载甲焉。使告曰:“晋师至矣!”齐侯曰:“比君之驾也,寡人请摄。”乃介而与之乘,驱之。或告曰:“无晋师。”

  乃止。

  晋赵鞅谓邯郸午曰:“归我卫贡五百家,吾舍诸晋阳。”午许诺。归,告其父兄,父兄皆曰:“不可。卫是以为邯郸,而置诸晋阳,绝卫之道也。不如侵齐而谋之。”乃如之,而归之于晋阳。赵孟怒,召午,而囚诸晋阳。使其从者说剑而入,涉宾不可。乃使告邯郸人曰:“吾私有讨于午也,二三子唯所欲立。”遂杀午。赵稷、涉宾以邯郸叛。夏六月,上军司马籍秦围邯郸。邯郸午,荀寅之甥也;荀寅,范吉射之姻也,而相与睦。故不与围邯郸,将作乱。董安于闻之,告赵孟,曰:“先备诸?”赵孟曰:“晋国有命,始祸者死,为后可也。”安于曰:“与其害于民,宁我独死,请以我说。”赵孟不可。秋七月,范氏、中行氏伐赵氏之宫,赵鞅奔晋阳。晋人围之。范皋夷无宠于范吉射,而欲为乱于范氏。梁婴父嬖于知文子,文子欲以为卿。韩简子与中行文子相恶,魏襄子亦与范昭子相恶。

  故五子谋,将逐荀寅而以梁婴父代之,逐范吉射而以范皋夷代之。荀跞言于晋侯曰:“君命大臣,始祸者死,载书在河。今三臣始祸,而独逐鞅,刑已不钧矣。

  请皆逐之。”

  冬十一月,荀跞、韩不信、魏曼多奉公以伐范氏、中行氏,弗克。二子将伐公,齐高强曰:“三折肱知为良医。唯伐君为不可,民弗与也。我以伐君在此矣。

  三家未睦,可尽克也。克之,君将谁与?若先伐君,是使睦也。”弗听,遂伐公。

  国人助公,二子败,从而伐之。丁未,荀寅、士吉射奔朝歌。

  韩、魏以赵氏为请。十二月辛未,赵鞅入于绛,盟于公宫。

  初,卫公叔文子朝而请享灵公。退,见史鳅而告之。史鳅曰:“子必祸矣。

  子富而君贪,其及子乎!”文子曰:“然。吾不先告子,是吾罪也。君既许我矣,其若之何?”史鳅曰:“无害。子臣,可以免。富而能臣,必免于难,上下同之。

  戌也骄,其亡乎。富而不骄者鲜,吾唯子之见。骄而不亡者,未之有也。戌必与焉。”及文子卒,卫侯始恶于公叔戌,以其富也。公叔戌又将去夫人之党,夫人诉之曰:“戌将为乱。”

  

  

  !定公十四年

  【经】十有四年春,卫公叔戌来奔。卫赵阳出奔宋。二月辛巳,楚公子结、陈公孙佗人帅师灭顿,以顿子牂归。夏,卫北宫结来奔。五月,于越败吴于槜李。

  吴子光卒。公会齐侯、卫侯于牵。公至自会。秋,齐侯、宋公会于洮。天王使石尚来归脤。卫世子蒯聩出奔宋。卫公孟彄出奔郑。宋公之弟辰自萧来奔。大蒐于比蒲。邾子来会公。城莒父及霄。

  

  【传】十四年春,卫侯逐公叔戌与其党,故赵阳奔宋,戌来奔。

  梁婴父恶董安于,谓知文子曰:“不杀安于,使终为政于赵氏,赵氏必得晋国。盍以其先发难也,讨于赵氏?”文子使告于赵孟曰:“范、中行氏虽信为乱,安于则发之,是安于与谋乱也。晋国有命,始祸者死。二子既伏其罪矣,敢以告。”

  赵孟患之。安于曰:“我死而晋国宁,赵氏定,将焉用生?人谁不死,吾死莫矣。”

  乃缢而死。赵孟尸诸市,而告于知氏曰:“主命戮罪人,安于既伏其罪矣,敢以告。”知伯从赵孟盟,而后赵氏定,祀安于于庙。

  顿子牂欲事晋,背楚而绝陈好。二月,楚灭顿。

  夏,卫北宫结来奔,公叔戌之故也。

  吴伐越。越子句践御之,陈于槜李。句践患吴之整也,使死士再禽焉,不动。

  使罪人三行,属剑于颈,而辞曰:“二君有治,臣奸旗鼓,不敏于君之行前,不敢逃刑,敢归死。”遂自刭也。师属之目,越子因而伐之,大败之。灵姑浮以戈击阖庐,阖庐伤将指,取其一屦。还,卒于陉,去槜李七里。夫差使人立于庭,苟出入,必谓己曰:“夫差!而忘越王之杀而父乎?”则对曰:“唯,不敢忘!”三年,乃报越。

  晋人围朝歌,公会齐侯、卫侯于脾、上梁之间,谋救范、中行氏。析成鲋、小王桃甲率狄师以袭晋,战于绛中,不克而还。士鲋奔周,小王桃甲入于朝歌。

  秋,齐侯、宋公会于洮,范氏故也。

  卫侯为夫人南子召宋朝,会于洮。大子蒯聩献盂于齐,过宋野。野人歌之曰:“既定尔娄猪,盍归吾艾豭。”大子羞之,谓戏阳速曰:“从我而朝少君,少君见我,我顾,乃杀之。”速曰:“诺。”乃朝夫人。夫人见大子,大子三顾,速不进。夫人见其色,啼而走,曰:“蒯聩将杀余。”公执其手以登台。大子奔宋,尽逐其党。故公孟彄出奔郑,自郑奔齐。

  大子告人曰:“戏阳速祸余。”戏阳速告人曰:“大子则祸余。大子无道,使余杀其母。余不许,将戕于余;若杀夫人,将以余说。余是故许而弗为,以纾余死。谚曰:‘民保于信。’吾以信义也。”

  冬十二月,晋人败范、中行氏之师于潞,获籍秦、高强。又败郑师及范氏之师于百泉。

  

  

  !定公十五年

  【经】十有五年春王正月,邾子来朝。鼷鼠食郊牛,牛死,改卜牛。二月辛丑,楚子灭胡,以胡子豹归。夏五辛亥,郊。壬申,公薨于高寝。郑罕达帅师伐宋。齐侯、卫侯次于渠蒢。邾子来奔丧。秋七月壬申,姒氏卒。八月庚辰朔,日有食之。九月,滕子来会葬。丁巳,葬我君定公,雨,不克葬。戊午,日下昊,乃克葬。辛巳,葬定姒。冬,城漆。

  

  【传】十五年春,邾隐公来朝。子贡观焉。邾子执玉高,其容仰。公受玉卑,其容俯。子贡曰:“以礼观之,二君者,皆有死亡焉。夫礼,死生存亡之体也。

  将左右周旋,进退俯仰,于是乎取之;朝祀丧戎,于是乎观之。今正月相朝,而皆不度,心已亡矣。嘉事不体,何以能久?高仰,骄也,卑俯,替也。骄近乱,替近疾。君为主,其先亡乎!”吴之入楚也,胡子尽俘楚邑之近胡者。楚既定,胡子豹又不事楚,曰:“存亡有命,事楚何为?多取费焉。”二月,楚灭胡。

  夏五月壬申,公薨。仲尼曰:“赐不幸言而中,是使赐多言者也。”

  郑罕达败宋师于老丘。

  齐侯、卫侯次于蘧挐,谋救宋也。

  秋七月壬申,姒氏卒。不称夫人,不赴,且不祔也。

  葬定公。雨,不克襄事,礼也。

  葬定姒。不称小君,不成丧也。

  冬,城漆。书,不时告也。
  

  《礼记坊记》

  

  子言之:“君子之道,辟则坊与?坊,民之所不足者也。大为之坊,民犹踰之。故君子礼以坊德,刑以坊淫,命以坊欲。”

  

  子云:“小人贫斯约,富斯骄,约斯盗,骄斯乱。礼者,因人之情而为之节文,以为民坊者也。故圣人之制富贵也,使民富不足以骄,贫不至于约,贵不慊于上。故乱益亡。”

  

  子云:“贫而好乐,富而好礼,众而以宁者,天下其几矣。诗云:‘民之贪乱,宁为荼毒。’故制国不过千乘,都城不过百雉,家富不过百乘。以此坊民,诸侯犹有畔者。”

  

  子云:“夫礼者,所以章疑别微,以为民坊者也。故贵贱有等,衣服有别,朝廷有位,则民有所让。”

  

  子云:“天无二日,土无二王,家无二主,尊无二上,示民有君臣之别也。春秋不称楚越之王丧,礼,君不称天,大夫不称君,恐民之惑也。诗云:‘相彼盍旦,尚犹患之。’”

  

  子云:“君不与同姓同车,与异姓同车不同服,示民不嫌也。以此坊民,民犹得同姓以弒其君。”

  

  子云:“君子辞贵不辞贱,辞富不辞贫,则乱益亡。故君子与其使食浮于人也,宁使人浮于食。”

  

  子云:“觞酒豆肉,让而受恶,民犹犯齿。衽席之上,让而坐下,民犹犯贵。朝延之位,让而就贱,民犹犯君。诗云:‘民之无良,相怨一方。受爵不让,至于已斯亡。’”

  

  子云:“君子贵人而贱己,先人而后己,则民作让。故称人之君曰君,自称其君曰寡君。”

  

  子云:“利禄先死者而后生者则民不偝,先亡者而后存者则民可以托。诗云:‘先君之

  

  思,以畜寡人。’以此坊民,民犹偝死而号无告。”

  

  子云:“有国家者贵人而贱禄则民兴让,尚技而贱车则民兴艺。故君子约言,小人先言。”

  

  子云:“上酌民言,则下天上施。上不酌民言,则犯也。下不天上施,则乱也。故君子信让以莅百姓,则民之报礼重。诗云:‘先民有言,询于刍荛。’”

  

  子云:“善则称人,过则称己,则民不争。善则称人,过则称己,则怨益亡。诗云:‘尔卜尔筮,履无咎言。’”

  

  子云:“善则称人,过则称己,则民让善。诗云:‘考卜惟王,度是镐京。惟龟正之,武王成之。’”

  

  子云:“善则称君,过则称己,则民作忠。君陈曰:‘尔有嘉谋嘉猷,入告尔君于内。女乃顺之于外曰:此谋此猷,惟我君之德。于乎是惟良显哉!’”

  

  子云:“善则称亲,过则称己,则民作孝。大誓曰:‘予克纣,非予武,惟朕文考无罪。纣克予,非朕文考有罪.惟予小子无良。’”

  

  子云:“君子弛其亲之过而敬其美。论语曰:‘三年无改于父之道,可谓孝矣。’高宗云:‘三年其惟不言,言乃讙。’”

  

  子云:“从命不忿,微谏不倦,劳而不怨,可谓孝矣。诗云:‘孝子不匮。’”

  

  子云:“于父母之党,可谓孝矣。故君子因睦以合族。诗云:‘此令兄弟,绰绰有裕。不令兄弟,交相为愈。’”

  

  子云:“于父之执,可以乘其车,不可以衣其衣。君子以广孝也。”

  

  子云:“小人皆能养其亲,君子不敬,何以辨?”

  

  子云:“父子不同位,以厚敬也。书云:‘厥辟不辟,忝厥祖。’”

  

  子云:“父母在,不称老,言孝不言慈。闺门之内,戏而不叹。君子以此坊民,民犹薄于孝而厚于慈。”

  

  子云:“长民者,朝廷敬老则民作孝。”

  

  子云:“祭祀之有尸也,宗庙之主也,示民有事也。修宗庙,敬祀事,教民追孝也。以此坊民,民犹忘其亲。”

  

  子云:“敬则用祭器,故君子不以菲废礼,不以美没礼。故食礼,主人亲馈则客祭,主人不亲馈则客不祭。故君子苟无礼,虽美不食焉。易曰:‘东邻杀牛,不如西邻之禴祭,寔受其福。’诗云:‘既醉以酒,既饱以德。’以此示民,民犹争利而忘义。”

  

  子云:“七日戒,三日齐,承一人焉以为尸,过之者趋走,以教敬也。醴酒在室,醍酒在堂,澄酒在下,示不淫也。尸饮三,众宾饮一,示民有上下也。因其酒肉,聚其宗族,以教民睦也。故堂上观乎室,堂下观乎上。诗云:‘礼仪卒度,笑语卒获。’”

  

  子云:“宾礼每进以让,丧礼每加以远。浴于中溜,饭于牖下,小敛于户内,大敛于阼,殡于客位,祖于庭,葬于墓,所以示远也。殷人吊于圹,周人吊于家,示民不偝也。”

  

  子云:“死,民之卒事也,吾从周。以此坊民,诸侯犹有薨而不葬者。”

  

  子云:“升自客阶,受吊于宾位,教民追孝也。未没丧,不称君,示民不争也。故鲁春秋记晋丧曰:‘杀其君之子奚齐,及其君卓。’以此坊民,子犹有弒其父者。”

  

  子云:“孝以事君,弟以事长,示民不贰也。故君子有君不谋仕,唯卜之日称二君。丧父三年,丧君三年,示民不疑也。父母在不敢有其身,不敢私其财,示民有上下也。故天子四海之内,无客礼莫敢为主焉。故君适其臣,升自阼阶,即位于堂,示民不敢有其室也。父母在,馈献不及车马,示民不敢专也。以此坊民,民犹忘其亲而贰其君。”

  

  子云:“礼之先,币帛也,欲民之先事而后禄也。先财而后礼则民利,无辞而行情则民争。故君子于有馈者弗能见,则不视其馈。易曰:‘不耕获,不菑畬,凶。’以此坊民,民犹贵禄而贱行。”

  

  子云:“君子不尽利以遗民。诗云:‘彼有遗秉,此有不敛穧,伊寡妇之利。’故君子仕则不稼,田则不渔,食时不力珍,大夫不坐羊,士不坐犬。诗云:‘采葑采菲,无以下体,德音莫违,及尔同死。’以此坊民,民犹忘义而争利,以亡其身。”

  

  子云:“夫礼坊民所淫,章民之别,使民无嫌,以为民纪者也。故男女无媒不交,无币不相见,恐男女之无别也。以此坊民,民犹有自献其身。诗云:‘伐柯如之何?匪斧不克,取妻如之何?匪媒不得。蓺麻如之何?横从其亩。取妻如之何?必告父母。’”

  

  子云:“取妻不取同姓,以厚别也。故买妾不知其姓,则卜之。以此坊民,鲁春秋犹去夫人之姓曰吴,其死曰孟子卒。”

  

  子云:“礼,非祭,男女不交爵。以此坊民,阳侯犹杀缪侯而窃其夫人。故大飨废夫人之礼。”

  

  子云:“寡妇之子不有见焉则弗友也,君子以辟远也。故朋友之交,主人不在,不有大故,则不入其门。以此坊民,民犹以色厚于德。”

  

  子云:“好德如好色,诸侯不下渔色,故君子远色以为民纪。故男女授受不亲,御妇人则进左手。姑姊妹女子子已嫁而反,男子不与同席而坐。寡妇不夜哭。妇人疾,问之,不问其疾。以此坊民,民犹淫泆而乱于族。”

  

  子云:“昏礼,婿亲迎,见于舅姑,舅姑承子以授婿,恐事之违也。以此坊民,妇犹有不至者。”

  

  
  《礼记服问》

  

  传曰:有从轻而重,公子之妻为其皇姑。有从重而轻,为妻之父母。有从无服而有服,公子之妻为公子之外兄弟。有从有服而无服,公子为其妻之父母。

  

  传曰:母出,则为继母之党服。母死,则为其母之党服。为其母之党服,则不为继母之党服。

  

  三年之丧既练矣,有期之丧既葬矣,则带其故葛带,绖期之绖,服其功衰。有大功之丧,亦如之。小功无变也。麻之有本者,变三年之葛。既练,遇麻断本者,于免绖之既,免去绖。每可以绖,必绖。既绖,去之。小功不易丧之练冠。如免,则绖其缌小功之绖。因其初葛带,缌之麻不变小功之葛,小功之麻不变大功之葛。以有本为税。殇长中,变三年之葛。终殇之月,算而反三年之葛。是非重麻,为其无卒哭之税。下殇则否。

  

  君为天子三年,夫人如外宗之为君也,世子不为天子服。

  

  君所主,夫人妻,大子,适妇。

  

  大夫之适子,为君夫人.大子如士服。

  

  君之母非夫人,则群臣无服,唯近臣及仆骖乘从服。唯君所服服也。

  

  公为卿大夫锡衰以居,出亦如之,当事则弁绖。大夫相为亦然。为其妻,往则服之,出则否。

  

  凡见人,无免绖。虽朝于君,无免绖。唯公门有税齐衰。传曰:君子不夺人之丧,亦不可夺丧也。

  

  传曰:罪多而刑五,丧多而服五。上附下附,列也。

  
  公冶长第五

  

  子谓公冶长:“可妻也,虽在缧绁之中,非其罪也!”以其子妻之。

  子谓南容,“邦有道,不废;邦无道,免于刑戮。”以其兄之子妻之。

  子谓子贱,“君子哉若人!鲁无君子者,斯焉取斯?”子贡问曰:“赐也何如?”子曰:“女,器也。”

  曰:“何器也?”曰:“瑚琏也。”

  或曰:“雍也仁而不佞。”子曰:“焉用佞?御人以口给,屡憎于人。不知其仁,焉用佞?”子使漆雕开仕。对曰:“吾斯之未能信。”子说。

  子曰:“道不行,乘桴浮于海。从我者,其由与?”子路闻之喜。子曰:“由也好勇过我,无所取材。”

  孟武伯问子路仁乎?子曰:“不知也。”又问。子曰:“由也,千乘之国,可使治其赋也,不知其仁也。”

  “求也何如?”子曰:“求也,千室之邑,百乘之家,可使为之宰也,不知其仁也。”

  “赤也何如?”子曰:“赤也,束带立于朝,可使与宾客言也,不知其仁也。”

  子谓子贡曰:“女与回也孰愈?”对曰:“赐也何敢望回?回也闻一以知十,赐也闻一以知二。”子曰:“弗如也。吾与女弗知也。”

  宰予昼寝。子曰:“朽木不可雕也,粪土之墙,不可杇也;于予与何诛?”子曰:“始吾于人也,听其言而信其行;今吾于人也,听其言而观其行。于予与改是。”

  子曰:“吾未见刚者。”或对曰:“申枨。”子曰:“枨也欲,焉得刚。”

  子贡曰:“我不欲人之加诸我也,吾亦欲无加诸人。”子曰:“赐也,非尔所及也。”

  子贡曰:“夫子之文章,可得而闻也;夫子之言性与天道,不可得而闻也。”

  子路有闻,未之能行,唯恐有闻。

  子贡问曰:“孔文子何以谓之‘文’也?”子曰:“敏而好学,不耻下问,是以谓之‘文’也。”

  子谓子产:“有君子之道四焉:其行己也恭,其事上也敬,其养民也惠,其使民也义。”

  子曰:“晏平仲善与人交,久而敬之。”

  子曰:“臧文仲居蔡,山节藻棁,何如其知也。”

  子张问曰:“令尹子文三仕为令尹,无喜色;三已之,无愠色。旧令尹之政,必以告新令尹。何如?”子曰:“忠矣。”曰:“仁矣乎?”曰:“未知,焉得仁?”崔子弑齐君,陈文子有马十乘,弃而违之。至于他邦,则曰:“犹吾大夫崔子也。”违之。之一邦,则又曰:“犹吾大夫崔子也。”违之。何如?”子曰:“清矣。”曰:“仁矣乎?”曰:“未知,焉得仁?”季文子三思而后行。子闻之曰:“再,斯可矣。”

  子曰:“宁武子,邦有道,则知;邦无道,则愚。其知可及也,其愚不可及也。”

  子在陈,曰:“归与!归与!吾党之小子狂简,斐然成章,不知所以裁之。”

  子曰:“伯夷、叔齐,不念旧恶,怨是用希。”

  子曰:“孰谓微生高直?或乞醯焉,乞诸其邻而与之。”

  子曰:“巧言,令色,足恭,左丘明耻之,丘亦耻之。匿怨而友其人,左丘明耻之,丘亦耻之。”

  颜渊、季路侍。子曰:“盍各言尔志。”

  子路曰:“愿车马衣轻裘,与朋友共,敝之而无憾。”

  颜渊曰:“愿无伐善,无施劳。”

  子路曰:“愿闻子之志。”子曰:“老者安之,朋友信之,少者怀之。”

  子曰:“已矣乎,吾未见能见其过而内自讼者也。”

  子曰:“十室之邑,必有忠信如丘者焉,不如丘之好学也。”

  
 谷梁传哀公  

  !哀公(经一一)元年   

  春,王正月,公即位。  

  (经一二)楚子、陈侯、随侯、许男围蔡。  

  (经一三)鼷鼠食郊牛角,改卜牛。夏,四月辛巳,郊。  

  (传)此该之变而道之也。于变之中,又有言焉。「鼷鼠食郊牛角,改卜牛」,志不敬也。郊牛日展觓角而知伤,展道尽矣!郊自正月至于三月,郊之时也。夏四月郊,不时也;五月郊,不时也。夏之始可以承春,以秋之末,承春之始,盖不可矣!九月用郊,用者,不宜用者也。郊三卜,礼也;四卜,非礼也;五卜,强也。卜免牲者,吉则免之,不吉则否。牛伤,不言伤之者,伤自牛作也,故其辞缓。全曰牲,伤曰牛,未牲曰牛,其牛一也;其所以为牛者异。有变而不郊,故卜免牛也。已牛矣,其尚卜免之,何也?礼,与其亡也宁有。尝置之上帝矣,故卜而后免之,不敢专也。卜之不吉,则如之何?不免,安置之,系而待六月上甲,始庀牲,然后左右之。子之所言者,牲之变也。而曰:我一该郊之变而道之,何也?我以六月上甲,始庀牲;十月上甲,始系牲。十一月、十二月,牲虽有变,不道也。待正月,然后言牲之变,此乃所以该郊。郊,享道也。贵其时,大其礼,其养牲虽小,不备可也。子不忘三月卜郊,何也?郊自正月至于三月,郊之时也。我以十二月下辛卜正月上辛;如不从,则以正月下辛卜二月上辛;如不从,则以二月下辛卜三月上辛;如不从,则不郊矣!  

  (经一四)秋,齐侯、卫侯伐晋。  

  (经一五)冬,仲孙何忌帅师伐邾。  

  !哀公(经二一)二年   

  春,王二月,季孙斯、叔孙州仇、仲孙何忌帅师伐邾,取漷东田。  

  (传)漷东未尽也。  

  (经二一)及沂西田。  

  (传)沂西未尽也。  

  (经二二)癸巳,叔孙州仇、仲孙何忌及邾子盟于句绎。  

  (传)三人伐而二人盟,何也?各盟其得也。  

  (经二三)夏,四月丙子,卫侯元卒。  

  (经二四)滕子来朝。  

  (经二五)晋赵鞅帅师,纳卫世子蒯瞆于戚。  

  (传)纳者,内弗受也。帅师而后纳者,有伐也。何用弗受也?以辄不受也。以辄不受父之命,受之王父也。信父而辞王父,则是不尊王父也。其弗受,以尊王父也。  

  (经二六)秋,八月甲戌,晋赵鞅帅师,及郑罕达帅师,战于铁。郑师败绩。  

  (经二七)冬,十月,葬卫灵公。  

  (经二八)十有一月,蔡迁于州来。  

  (经二九)蔡杀其大夫公子驷。  

  !哀公(经三一)三年   

  春,齐国夏、卫石曼姑帅师围戚。  

  (传)此卫事也,其先国夏,何也?子不围父也。不系戚于卫者,子不有父也。  

  (经三二)夏,四月甲午,地震。  

  (经三三)五月辛卯,桓宫、僖宫灾。  

  (传)言及,则祖有尊卑;由我言之,则一也。  

  (经三四)季孙斯、叔孙州仇帅师城启阳。  

  (经三五)宋乐髡帅师伐曹。  

  (经三六)秋,七月丙子,季孙斯卒。  

  (经三七)蔡人放其大夫公孙猎于吴。  

  (经三八)冬,十月癸卯,秦伯卒。  

  (经三九)叔孙州仇、仲孙何忌帅师围邾。  

  !哀公(经四一)四年   

  春,王二月庚戌,盗弒蔡侯申。  

  (传)称盗以弒君,不以上下道道也。内其君而外弒者,不以弒道道也。《春秋》有三盗:微杀大夫,谓之盗;非所取而取之,谓之盗;辟中国之正道以袭利,谓之盗。  

  (经四二)蔡公孙辰出奔吴。  

  (经四三)葬秦惠公。  

  (经四四)宋人执小邾子。  

  (经四五)夏,蔡杀其大夫公孙姓、公孙霍。  

  (经四六)晋人执戎蛮子赤归于楚。  

  (经四七)城西郛。  

  (经四八)六月,辛丑,亳社灾。  

  (传)亳社者,亳之社也。亳,亡国也。亡国之社以为庙,屏戒也。其屋亡国之社,不得达上也。  

  (经四九)秋,八月甲寅,滕子结卒。  

  (经四十)冬,十有二月,葬蔡昭公。  

  (经四十一)葬滕顷公。  

  !哀公(经五一)五年   

  春,城毗。  

  (经五二)夏,齐侯伐宋。  

  (经五三)晋赵鞅帅师伐卫。  

  (经五四)秋,九月癸酉,齐侯杵臼卒。  

  (经五五)冬,叔还如齐。  

  (经五六)闰月,葬齐景公。  

  (传)不正其闰也。  

  !哀公(经六一)六年   

  春,城邾瑕。  

  (经六二)晋赵鞅帅师伐鲜虞。  

  (经六三)吴伐陈。  

  (经六四)夏,齐国夏及高张来奔。  

  (经六五)叔还会吴于柤。  

  (经六六)秋,七月庚寅,楚子轸卒。  

  (经六七)齐阳生入于齐。齐陈乞弒其君荼。  

  (传)阳生入而弒其君,以陈乞主之,何也?不以阳生君荼也。其不以阳生君荼,何也?阳生正,荼不正。不正则其曰君,何也?荼虽不正,已受命矣!入者,内弗受也。荼不正,何用弗受?以其受命,可以言弗受也。阳生其以国氏,何也?取国于荼也。  

  (经六八)冬,仲孙何忌帅师伐邾。  

  (经六九)宋向巢帅师伐曹。  

  !哀公(经七一)七年   

  春,宋皇瑗帅师侵郑。  

  (经七二)晋魏曼多帅师侵卫。  

  (经七三)夏,公会吴于缯。  

  (经七四)秋,公伐邾。  

  (经七五)八月己酉,入邾,以邾子益来。  

  (传)以者,不以者也。益之名,恶也。《春秋》有临天下之言焉,有临一国之言焉,有临一家之言焉。其言来者,有外鲁之辞焉。  

  (经七六)宋人围曹。  

  (经七七)冬,郑驷弘帅师救曹。  

  !哀公(经八一)八年   

  春,王正月,宋公入曹,以曹伯阳归。  

  (经八二)吴伐我。  

  (经八三)夏,齐人取讙及阐。  

  (传)恶内也。  

  (经八四)归邾子益于邾。  

  (传)益之名,失国也。  

  (经八五)秋,七月。  

  (经八六)冬,十有二月癸亥,杞伯过卒。  

  (经八七)齐人归讙及阐。  

  !哀公(经九一)九年   

  春,王二月,葬杞僖公。  

  (经九二)宋皇瑗帅师取郑师于雍丘。  

  (传)取,易辞也。以师而易取,郑病矣!  

  (经九三)夏,楚人伐陈。  

  (经九四)秋,宋公伐郑。  

  (经九五)冬,十月。  

  !哀公(经十一)十年   

  春,王二月,邾子益来奔。  

  (经十二)公会吴伐齐。  

  (经十三)三月戊戌,齐侯阳生卒。  

  (经十四)夏,宋人伐郑。  

  (经十五)晋赵鞅帅师侵齐。  

  (经十六)五月,公至自伐齐。  

  (经十七)葬齐悼公。  

  (经十八)卫公孟彄自齐归于卫。  

  (经十九)薛伯夷卒。  

  (经十十)秋,葬薛惠公。  

  (经十十一)冬,楚公子结帅师伐陈。吴救陈。  

  !哀公(经十一一)十有一年   

  春,齐国书帅师伐我。  

  (经十一二)夏,陈辕颇出奔郑。  

  (经十一三)五月,公会吴伐齐。  

  (经十一四)甲戌,齐国书帅师,及吴战于艾陵。齐师败绩。获齐国书。  

  (经十一五)秋,七月辛酉,滕子虞母卒。  

  (经十一六)冬,十有一月,葬滕隐公。  

  (经十一七)卫世叔齐出奔宋。  

  !哀公(经十二一)十有二年   

  春,用田赋。  

  (传)古者公田什一。用田赋,非正也。  

  (经十二二)夏,五月甲辰,孟子卒。  

  (传)孟子者,何也?昭公夫人也。其不言夫人,何也?讳取同姓也。  

  (经十二三)公会吴于橐皋。  

  (经十二四)秋,公会卫侯、宋皇瑗于郧。  

  (经十二五)宋向巢帅师伐郑。  

  (经十二六)冬,十有二月,螽。  

  !哀公(经十三一)十有三年   

  春,郑罕达帅师取宋师于嵒。  

  (传)取,易辞也。以师而易取,宋病矣。  

  (经十三二)夏,许男成卒。  

  (经十三三)公会晋侯及吴子于黄池。  

  (传)黄池之会,吴子进乎哉!遂子矣。吴,夷狄之国也,祝发文身,欲因鲁之礼,因晋之权,而请冠端而袭。其藉于成周,以尊天王,吴进矣。吴,东方之大国也,累累致小国以会诸侯,以合乎中国。吴能为之,则不臣乎!吴进矣。王,尊称也;子,卑称也。辞尊称而居卑称,以会乎诸侯,以尊天王。吴王夫差曰:「好冠来。」孔子曰:「大矣哉!夫差未能言冠而欲冠也。」  

  (经十三四)楚公子申帅师伐陈。  

  (经十三五)于越入吴。  

  (经十三六)秋,公至自会。  

  (经十三七)晋魏曼多帅师侵卫。  

  (经十三八)葬许元公。  

  (经十三九)九月,螽。  

  (经十三十)冬,十有一月,有星孛于东方。  

  (经十三十一)盗杀陈夏区夫。  

  (经十三十二)十有二月,螽。  

  !哀公(经十四一)十有四年   

  春,西狩获麟。  

  (传)引取之也。狩地,不地不狩也。非狩而曰狩,大获麟,故大其适也。其不言来,不外麟于中国也。其不言有,不使麟不恒于中国也。
  谷梁传成公  

  !成公(经一一)元年   

  春,王正月,公即位。  

  (经一二)二月辛酉,葬我君宣公。  

  (经一三)无冰。  

  (传)终时无冰则志,此未终时而言无冰,何也?终无冰矣。加之寒之辞也。  

  (经一四)三月,作丘甲。  

  (传)作,为也。丘,为甲也。丘甲,国之事也。丘作甲,非正也。丘作甲之为非正,何也?古者立国家,百官具,农工皆有职以事上。古者有四民:有士民,有商民、有农民、有工民。夫甲,非人人之所能为也。丘作甲,非正也。  

  (经一五)夏,臧孙许及晋侯盟于赤棘。  

  (经一六)秋,王师败绩于贸戎。  

  (传)不言战,莫之敢敌也。为尊者讳,敌不讳败;为亲者讳,败不讳敌。尊尊亲亲之义也。然则孰败之?晋也。  

  (经一七)冬,十月。  

  (传)季孙行父秃,晋郄克眇,卫孙良夫跛,曹公子手偻,同时而聘于齐。齐使秃者御秃者,使眇者御眇者,使跛者御跛者,使偻者御偻者。萧同侄子处台上而笑之;闻于客,客不说而去。相与立胥闾而语,移日不解。齐人有知之者,曰:「齐之患,必自此始矣!」  

  !成公(经二一)二年   

  春,齐侯伐我北鄙。  

  (经二二)夏,四月丙戌,卫孙良夫帅师,及齐师战于新筑。卫师败绩。  

  (经二三)六月癸酉,季孙行父、臧孙许、叔孙侨如、公孙婴齐帅师,会晋郄克、卫孙良夫、曹公子手,及齐侯战于鞍。齐师败绩。  

  (传)其日,或曰日,其战也;或曰日,其悉也。曹无大夫,其曰公子,何也?以吾之四大夫在焉,举其贵者也。  

  (经二四)秋,七月,齐侯使国佐如师。己酉,及国佐盟于爰娄。  

  (传)鞍,去国五百里。爰娄,去国五十里。一战绵地五百里,焚雍门之茨,侵车东至海。君子闻之曰:「夫甚甚之辞焉。齐有以取之也。」齐之有以取之,何也?败卫师于新筑,侵我北鄙,敖郄献子,齐有以取之也。爰娄在师之外,郄克曰:「反鲁、卫之侵地,以纪侯之甗来,以萧同侄子之母为质,使耕者皆东其亩,然后与子盟。」国佐曰:「反鲁、卫之侵地,以纪侯之甗来,则诺。以萧同侄子之母为质,则是齐侯之母也。齐侯之母犹晋君之母也,晋君之母犹齐侯之母也。使耕者尽东其亩,则是终土齐也。不可,请一战。一战不克,请再。再不克,请三。三不克,请四。四不克,请五。五不克,举国而授。」于是而与之盟。  

  (经二四)八月壬午,宋公鲍卒。  

  (经二五)庚寅,卫侯速卒。  

  (经二六)取汶阳田。  

  (经二七)冬,楚师、郑师侵卫。  

  (经二八)十有一月,公会楚公子婴齐于蜀。  

  (传)楚无大夫,其曰公子,何也?婴齐,亢也。  

  (经二九)丙申,公及楚人、秦人、宋人、陈人、卫人、郑人、齐人、曹人、邾人、薛人、缯人盟于蜀。  

  (传)楚其称人,何也?于是而后,公得其所也。会与盟同月,则地会,不地盟。不同月,则地会,地盟。此其地会,地盟,何也?以公得其所,申其事也。今之屈,向之骄也。  

  !成公(经三一)三年   

  春,王正月,公会晋侯、宋公、卫侯、曹伯伐郑。  

  (经三二)辛亥,葬卫穆公。  

  (经三三)二月,公至自伐郑。  

  (经三四)甲子,新宫灾,三日哭。  

  (传)新宫者,祢宫也。三日哭,哀也。其哀,礼也。迫近不敢称祢,恭也。其辞恭且哀,以成公为无讥矣。  

  (经三五)乙亥,葬宋文公。  

  (经三六)夏,公如晋。  

  (经三七)郑公子去疾帅师伐许。  

  (经三八)公至自晋。  

  (经三九)秋,叔孙侨如帅师围棘。  

  (经三十)大雩。  

  (经三十一)晋郄克、卫孙良夫伐墙咎如。  

  (经三十二)冬,十有一月,晋侯使荀庚来聘。  

  (经三十三)卫侯使孙良夫来聘。丙午,及荀庚盟。丁未,及孙良夫盟。  

  (传)其日,公也,来聘而求盟。不言及者,以国与之也。不言其人,亦以国与之也。不言求,两欲之也。  

  (经三十四)郑伐许。  

  !成公(经四一)四年   

  春,宋公使华元来聘。  

  (经四二)三月壬申,郑伯坚卒。  

  (经四三)杞伯来朝。  

  (经四四)夏,四月甲寅,臧孙许卒。  

  (经四五)公如晋。  

  (经四六)葬郑襄公。  

  (经四七)秋,公至自晋。  

  (经四八)冬,城郓。  

  (经四九)郑伯伐许。  

  !成公(经五一)五年   

  春,王正月,杞叔姬来归。  

  (传)妇人之义,嫁曰归,反曰来归。  

  (经五二)仲孙蔑如宋。  

  (经五三)夏,叔孙侨如会晋荀首于谷。  

  (经五四)梁山崩。  

  (传)不日,何也?高者有崩道也。有崩道,则何以书也?曰:梁山崩,壅遏河三日不流,晋君召伯尊而问焉。伯尊来遇辇者,辇者不辟,使车右下而鞭之。辇者曰:「所以鞭我者,其取道远矣。」伯尊下车而问焉,曰:「子有闻乎?」对曰:「梁山崩,壅遏河三日不流。」伯尊曰:「君为此召我也,为之奈何?」辇者曰:「天有山,天崩之;天有河,天壅之。虽召伯尊如之何?」伯尊由忠问焉。辇者曰:「君亲素缟、帅群臣而哭之,既而祠焉,斯流矣。」伯尊至,君问之曰:「梁山崩,壅遏河三日不流,为之奈何?」伯尊曰:「君亲素缟、帅群臣而哭之,既而祠焉,斯流矣。」孔子闻之曰:「伯尊其无绩乎!攘善也。」  

  (经五五)秋,大水。  

  (经五六)冬,十一月己酉,天王崩。  

  (经五七)十有二月己丑,公会晋侯、齐侯、宋公、卫侯、郑伯、曹伯、邾子、杞伯,同盟于虫牢。  

  !成公(经六一)六年   

  春,王正月,公至自会。  

  (经六二)二月辛巳,立武宫。  

  (传)立者,不宜立也。  

  (经六三)取鄟。  

  (传)鄟,国也。  

  (经六四)卫孙良夫帅师侵宋。  

  (经六五)夏,六月,邾子来朝。  

  (经六六)公孙婴齐如晋。  

  (经六七)壬申,郑伯费卒。  

  (经六八)秋,仲孙蔑、叔孙侨如帅师侵宋。  

  (经六九)楚公子婴齐帅师伐郑。  

  (经六十)冬,季孙行父如晋。  

  (经六十一)晋栾书帅师救郑。  

  !成公(经七一)七年   

  春,王正月,鼷鼠食郊牛角。  

  (传)不言日,急辞也,过有司也。郊牛日,展觓角而知伤,展道尽矣!其所以备灾之道不尽也。  

  (经七一)改卜牛,鼷鼠又食其角。  

  (传)又,有继之辞也。其缓辞也,曰:亡乎人矣!非人之所能也。所以免有司之过也。  

  (经七一)乃免牛。  

  (传)乃者,亡乎人之辞也。免牲者,为之缁衣纁裳,有司玄端,奉送至于南郊。免牛亦然。免牲不曰不郊,免牛亦然。  

  (经七二)吴伐郯。  

  (经七二)夏,五月,曹伯来朝。  

  (经七三)不郊,犹三望。  

  (经七四)秋,楚公子婴齐帅师伐郑。  

  (经七五)公会晋侯、齐侯、宋公、卫侯、曹伯、莒子、邾子、杞伯,救郑。  

  (经七六)八月戊辰,同盟于马陵。公至自会。  

  (经七七)吴入州来。  

  (经七八)冬,大雩。  

  (传)雩不月而时,非之也。冬无为雩也。  

  (经七九)卫孙林父出奔晋。  

  !成公(经八一)八年   

  春,晋侯使韩穿来言汶阳之田,归之于齐。  

  (传)于齐,缓辞也。不使尽我也。  

  (经八二)晋栾书帅师侵蔡。  

  (经八三)公孙婴齐如莒。  

  (经八四)宋公使华元来聘。  

  (经八五)夏,宋公使公孙寿来纳币。  

  (经八六)晋杀其大夫赵同赵括。  

  (经八七)秋,七月,天子使召伯来锡公命。  

  (传)礼有受命,无来锡命,锡命非正也。曰「天子」,何也?曰:见一称也。  

  (经八八)冬,十月癸卯,杞叔姬卒。  

  (经八九)晋侯使士燮来聘。  

  (经八十)叔孙侨如会晋士燮、齐人、邾人伐郯。  

  (经八十一)卫人来媵。  

  (传)媵,浅事也,不志;此其志,何也?以伯姬之不得其所,故尽其事也。  

  !成公(经九一)九年   

  春,王正月,杞伯来逆叔姬之丧以归。  

  (传)传曰:夫无逆出妻之丧而为之也。  

  (经九二)公会晋侯、齐侯、宋公、卫侯、郑伯、曹伯、莒子、杞伯,同盟于蒲。公至自会。  

  (经九三)二月,伯姬归于宋。  

  (经九四)夏,季孙行父如宋致女。  

  (传)致者,不致者也。妇人在家制于父,既嫁制于夫。如宋致女,是以我尽之也。不正,故不与内称也。逆者微,故致女。详其事,贤伯姬也。  

  (经九五)晋人来媵。  

  (传)媵,浅事也,不志;此其志,何也?以伯姬之不得其所,故尽其事也。  

  (经九六)秋,七月丙子,齐侯无野卒。  

  (经九七)晋人执郑伯。  

  (经九八)晋栾书帅师伐郑。  

  (传)不言战,以郑伯也。为尊者讳耻,为贤者讳过,为亲者讳疾。  

  (经九九)冬,十有一月,葬齐顷公。  

  (经九十)楚公子婴齐帅师伐莒。  

  (经九十一)庚申,莒溃。  

  (传)其日,莒虽夷狄,犹中国也。大夫溃莒而之楚,是以知其上为事也。恶之,故谨而日之也。  

  (经九十二)楚人入郓。  

  (经九十三)秦人、白狄伐晋郑人围许。  

  (经九十四)城中城。  

  (传)城中城者,非外民也。  

  !成公(经十一)十年   

  春,卫侯之弟黑背帅师侵郑。  

  (经十二)夏,四月,五卜郊不从,乃不郊。  

  (传)「夏,四月」,不时也。五卜,强也。乃者,亡乎人之辞也。  

  (经十三)五月,公会晋侯、齐侯、宋公、卫侯、曹伯伐郑。  

  (经十四)齐人来媵。  

  (经十五)丙午,晋侯獳卒。  

  (经十六)秋,七月,公如晋。  

  (经十七)冬,十月。  

  !成公(经十一一)十有一年   

  春,王三月,公至自晋。  

  (经十一二)晋侯使郄犨来聘。己丑,及郄犨盟。  

  (经十一三)夏,季孙行父如晋。  

  (经十一四)秋,叔孙侨如如齐。  

  (经十一四)冬,十月。  

  !成公(经十二一)十有二年   

  春,周公出奔晋。  

  (传)周有入无出,其曰出,上下一见之也。言其上下之道,无以存也。上虽失之,下孰敢有之?今上下皆失之矣!  

  (经十二二)夏,公会晋侯、卫侯于琐泽。  

  (经十二三)秋,晋人败狄于交刚。  

  (传)中国与夷狄不言战,皆曰败之,夷狄不日。  

  (经十二四)冬,十月。  

  !成公(经十三一)十有三年   

  春,晋侯使郄锜来乞师。  

  (传)乞,重辞也。古之人重师,故以乞言之也。  

  (经十三二)三月,公如京师。  

  (传)公如京师不月,月非如也。非如而曰如,不叛京师也。  

  (经十三三)夏,五月,公至自京师,遂会晋侯、齐侯、宋公、卫侯、郑伯、曹伯、邾人、滕人,伐秦。  

  (传)言受命,不敢叛周也。  

  (经十三三)曹伯庐卒于师。  

  (传)传曰:闵之也。公大夫在师曰师,在会曰会。  

  (经十三四)秋,七月,公至自伐秦。  

  (经十三五)冬,葬曹宣公。  

  (传)葬时,正也。  

  !成公(经十四一)十有四年   

  春,王正月,莒子朱卒。  

  (经十四二)夏,卫孙林父自晋归于卫。  

  (经十四三)秋,叔孙侨如如齐逆女。  

  (经十四四)郑公子喜帅师伐许。  

  (经十四五)九月,侨如以夫人妇姜氏至自齐。  

  (传)大夫不以夫人;以夫人,非正也。刺不亲迎也。侨如之挈,由上致之也。  

  (经十四六)冬,十月庚寅,卫侯臧卒。  

  (经十四七)秦伯卒。  

  !成公(经十五一)十有五年   

  春,王二月,葬卫定公。三月乙巳,仲婴齐卒。  

  (传)此公孙也,其曰仲,何也?子由父疏之也。  

  (经十五二)癸丑,公会晋侯、卫侯、郑伯、曹伯、宋世子成、齐国佐、邾人,同盟于戚。晋侯执曹伯,归于京师。  

  (传)以晋侯而斥执曹伯,恶晋侯也,不言之急辞也,断在晋侯也。  

  (经十五二)公至自会。  

  (经十五三)夏,六月,宋公固卒。  

  (经十五四)楚子伐郑。  

  (经十五五)秋,八月庚辰,葬宋共公。  

  (传)月卒日葬,非葬者也,此其言葬,何也?以其葬共姬,不可不葬共公也。葬共姬则其不可不葬共公,何也?夫人之义,不逾君也,为贤者崇也。  

  (经十五六)宋华元出奔晋。宋华元自晋归于宋。  

  (经十五七)宋杀其大夫山。  

  (经十五八)宋鱼石出奔楚。  

  (经十五九)冬,十有一月,叔孙侨如会晋士燮、齐高无咎、宋华元、卫孙林父、郑公子鳅、邾人,会吴于钟离。  

  (传)会又会,外之也。  

  (经十五十)许迁于叶。  

  (传)迁者,犹得其国家以往者也。其地,许复见也。  

  !成公(经十六一)十有六年   

  春,王正月,雨木冰。  

  (传)雨而木冰也,志异也。传曰:根枝折。  

  (经十六二)夏,四月辛未,滕子卒。  

  (经十六三)郑公孙喜帅师侵宋。  

  (经十六四)六月丙寅朔,日有食之。  

  (经十六五)晋侯使栾黡来乞师。  

  (经十六六)甲午,晦,晋侯及楚子、郑伯战于鄢陵。楚子、郑师败绩。  

  (传)日事遇晦曰晦,四体偏断曰败。此其败则目也。楚不言师,君重于师也。  

  (经十六七)楚杀其大夫公子侧。秋,公会晋侯、齐侯、卫侯、宋华元、邾人于沙随。不见公。  

  (传)不见公者,可以见公也。可以见公而不见公,讥在诸侯也。  

  (经十六七)公至自会。  

  (经十六八)公会尹子、晋侯、齐国佐、邾人,伐郑。  

  (经十六九)曹伯归自京师。  

  (传)不言所归,归之善者也。出入不名,以为不失其国也。归为善,自某归次之。  

  (经十六十)九月,晋人执季孙行父,舍之于苕丘。  

  (传)执者不舍;而舍,公所也。执者致;而不致,公在也。何其执而辞也?犹在公也。存意公亦存也。公存也。  

  (经十六十一)冬,十月乙亥,叔孙侨如出奔齐。  

  (经十六十二)十有二月乙丑,季孙行父及晋郄犨盟于扈。  

  (经十六十三)公至自会。  

  (经十六十四)乙酉,刺公子偃。  

  (传)大夫日卒,正也。先刺后名,杀无罪也。  

  !成公(经十七一)十有七年   

  春,卫北宫括帅师侵郑。  

  (经十七二)夏,公会尹子、单子、晋侯、齐侯、宋公、卫侯、曹伯、邾人,伐郑。六月乙酉,同盟于柯陵。  

  (传)柯陵之盟,谋复伐郑也。  

  (经十七二)秋,公至自会。  

  (传)不曰至自伐郑也,公不周乎伐郑也。何以知公之不周乎伐郑?以其以会致也。何以知其盟复伐郑也?以其后会之人尽盟者也。不周乎伐郑,则何为日也?言公之不背柯陵之盟也。  

  (经十七三)齐高无咎出奔莒。  

  (经十七四)九月辛丑,用郊。  

  (传)夏之始可以承春,以秋之末承春之始,盖不可矣!九月用郊,用者不宜用也。宫室不设,不可以祭;衣服不修,不可以祭;车马器械不备,不可以祭;有司一人不备其职,不可以祭。祭者,荐其时也,荐其敬也,荐其美也,非享味也。  

  (经十七五)晋侯使荀罃来乞师。  

  (经十七六)冬,公会单子、晋侯、宋公、卫侯、曹伯、齐人、邾人,伐郑。  

  (传)言公不背柯陵之盟也。  

  (经十七六)十有一月,公至自伐郑。  

  (经十七七)壬申,公孙婴齐,卒于狸蜃。  

  (传)十一月无壬申,壬申乃十月也。致公而后录,臣子之义也。其地,未逾竟也。  

  (经十七八)十有二月丁巳朔,日有食之。  

  (经十七九)邾子貜且卒。  

  (经十七十)晋杀其大夫郄锜、郄犨、郄至。  

  (传)自祸于是起矣!  

  (经十七十一)楚人灭舒庸。  

  !成公(经十八一)十有八年   

  春,王正月,晋杀其大夫胥童。庚申,晋弒其君州蒲。  

  (传)称国以弒其君,君恶甚矣!  

  (经十八二)齐杀其大夫国佐。  

  (经十八三)公如晋。  

  (经十八四)夏,楚子、郑伯伐宋。宋鱼石复入于彭城。  

  (经十八五)公至自晋。  

  (经十八六)晋侯使士丐来聘。  

  (经十八七)秋,杞伯来朝。八月,邾子来朝。  

  (经十八八)筑鹿囿。  

  (传)筑,不志;此其志,何也?山林薮泽之利,所以与民共也;虞之,非正也。  

  (经十八九)己丑,公薨于路寝。  

  (传)路寝,正也。男子不绝妇人之手,以齐终也。  

  (经十八十)冬,楚人、郑人侵宋。  

  (经十八十一)晋侯使士鲂来乞师。  

  (经十八十二)十有二月,仲孙蔑会晋侯、宋公、卫侯、邾子、齐崔杼,同盟于虚朾。  

  (经十八十三)丁未,葬我君成公。  

 
  谷梁传定公  

  !定公(经一一)元年   

  春王。  

  (传)不言正月,定无正也。定之无正,何也?昭公之终,非正终也。定之始,非正始也。昭无正终,故定无正始。不言即位,丧在外也。  

  (经一二)三月,晋人执宋仲几于京师。  

  (传)此其大夫。其曰人,何也?微之也。何为微之?不正其执人于尊者之所也,不与大夫之伯讨也。  

  (经一三)夏,六月癸亥,公之丧至自干侯。戊辰,公即位。  

  (传)殡,然后即位也。定无正,见无以正也。逾年不言即位,是有故公也。言即位,是无故公也。即位,授受之道也。先君无正终,则后君无正始也。先君有正终,则后君有正始也。「戊辰,公即位」,谨之也。定之即位,不可不察也。公即位,何以日也?戊辰之日,然后即位也。癸亥,公之丧至自干侯,何为戊辰之日,然后即位也?正君乎国,然后即位也。沉子曰:「正棺乎两楹之间,然后即位也。」内之大事日,即位,君之大事也,其不日,何也?以年决者,不以日决也。此则其日,何也?着之也。何着焉?逾年即位,厉也。于厉之中,又有义焉!未殡,虽有天子之命犹不敢,况临诸臣乎!周人有丧,鲁人有丧,周人吊,鲁人不吊。周人曰:「固吾臣也,使人可也。」鲁人曰:「吾君也,亲之者也,使大夫则不可也。」故周人吊,鲁人不吊,以其下成康为未久也。君至尊也,去父之殡而往吊,犹不敢,况未殡而临诸臣乎!  

  (经一四)秋,七月癸巳,葬我君昭公。  

  (经一五)九月,大雩。  

  (传)雩月,雩之正也。秋大雩,非正也。冬大雩,非正也。秋大雩,雩之为非正,何也?毛泽未尽,人力未竭,未可以雩也。雩月,雩之正也。月之为雩之正,何也?其时穷,人力尽,然后雩,雩之正也。何谓其时穷、人力尽?是月不雨,则无及矣;是年不艾,则无食矣,是谓其时穷、人力尽也。雩之必待其时穷、人力尽,何也?雩者,为旱求者也。求者,请也,古之人重请。何重乎请?人之所以为人者,让也。请道去让也,则是舍其所以为人也,是以重之,焉请哉?请乎应上公。古之神人有应上公者,通乎阴阳,君亲帅诸大夫道之而以请焉。夫请者,非可诒托而往也,必亲之者也,是以重之。  

  (经一六)立炀宫。  

  (传)立者,不宜立者也。  

  (经一七)冬,十月,陨霜杀菽。  

  (传)未可以杀而杀,举重;可杀而不杀,举轻。其曰菽,举重也。  

  !定公(经二一)二年   

  春,王正月。  

  (经二二)夏,五月壬辰,雉门及两观灾。  

  (传)其不曰「雉门灾及两观」,何也?灾自两观始也,不以尊者亲灾也;先言雉门,尊尊也。  

  (经二三)秋,楚人伐吴。  

  (经二四)冬,十月,新作雉门及两观。  

  (传)言新,有旧也。作,为也,有加其度也。此不正其以尊者亲之,何也?虽不正也,于美犹可也。  

  !定公(经三一)三年   

  春,王正月,公如晋,至河乃复。  

  (经三二)三月辛卯,邾子穿卒。  

  (经三三)夏,四月。  

  (经三四)秋,葬邾庄公。  

  (经三五)冬,仲孙何忌及邾子盟于拔。  

  !定公(经四一)四年   

  春,王二月癸巳,陈侯吴卒。  

  (经四二)三月,公会刘子、晋侯、宋公、蔡侯、卫侯、陈子、郑伯、许男、曹伯、莒子、邾子、顿子、胡子、滕子、薛伯、杞伯、小邾子、齐国夏于召陵,侵楚。  

  (经四三)夏,四月庚辰,蔡公孙姓帅师灭沈,以沉子嘉归,杀之。  

  (经四四)五月,公及诸侯盟于皋鼬。  

  (传)后而再会,公志于后会也。后,志疑也。  

  (经四四)杞伯成卒于会。  

  (经四五)六月,葬陈惠公。  

  (经四六)许迁于容城。  

  (经四七)秋,七月,公至自会。  

  (经四八)刘卷卒。  

  (传)此不卒而卒者,贤之也。寰内诸侯也,非列土诸侯,此何以卒也?天王崩,为诸侯主也。  

  (经四九)葬杞悼公。  

  (经四十)楚人围蔡。  

  (经四十一)晋士鞅、卫孔圉帅师伐鲜虞。  

  (经四十二)葬刘文公。  

  (经四十三)冬,十有一月庚午,蔡侯以吴子及楚人战于伯举。楚师败绩。  

  (传)吴其称子,何也?以蔡侯之以之,举其贵者也。蔡侯之以之,则其举贵者,何也?吴信中国而攘夷狄,吴进矣。其信中国而攘夷狄奈何?子胥父诛于楚也,挟弓持矢而干阖庐,阖庐曰:「大之甚!勇之甚!为是欲兴师而伐楚。」子胥谏曰:「臣闻之:君不为匹夫兴师。且事君犹事父也,亏君之义,复父之雠,臣弗为也。」于是止。蔡昭公朝于楚,有美裘,正是日,囊瓦求之,昭公不与。为是拘昭公于南郢。数年,然后得归。归乃用事乎汉,曰:「茍诸侯有欲伐楚者,寡人请为前列焉!」楚人闻之而怒,为是兴师而伐蔡。蔡请救于吴,子胥曰:「蔡非有罪,楚无道也。君若有忧中国之心,则若此时可矣!」为是兴师而伐楚。何以不言救也?救大也。  

  (经四十四)楚囊瓦出奔郑。  

  (经四十五)庚辰,吴入楚。  

  (传)日入,易无楚也。易无楚者,坏宗庙,徙陈器,挞平王之墓。何以不言灭也?欲存楚也。其欲存楚奈何?昭王之军败而逃,父老送之,曰:「寡人不肖,亡先君之邑。父老反矣,何忧无君?寡人且用此入海矣!」父老曰:「有君如此其贤也!」以众不如吴,以必死不如楚,相与击之,一夜而三败吴人,复立。何以谓之吴也?狄之也。何谓狄之也?君居其君之寝,而妻其君之妻;大夫居其大夫之寝,而妻其大夫之妻。盖有欲妻楚王之母者,不正乘败人之绩而深为利。居人之国,故反其狄道也。  

  !定公(经五一)五年   

  春,王三月辛亥朔,日有食之。  

  (经五二)夏,归粟于蔡。  

  (传)诸侯无粟,诸侯相归粟,正也。孰归之?诸侯也。不言归之者,专辞也,义迩也。  

  (经五三)于越入吴。  

  (经五四)六月丙申,季孙意如卒。  

  (经五五)秋,七月壬子,叔孙不敢卒。  

  (经五六)冬,晋士鞅帅师围鲜虞。  

  !定公(经六一)六年   

  春,王正月癸亥,郑游速帅师灭许,以许男斯归。  

  (经六二)二月,公侵郑。公至自侵郑。  

  (经六三)夏,季孙斯、仲孙何忌如晋。  

  (经六四)秋,晋人执宋行人乐祁犁。  

  (经六五)冬,城中城。  

  (传)城中城者,三家张也。或曰非外民也。  

  (经六六)季孙斯、仲孙忌帅师围郓。  

  !定公(经七一)七年   

  春,王正月。  

  (经七二)夏,四月。  

  (经七三)秋,齐侯、郑伯盟于咸。齐人执卫行人北宫结以侵卫。  

  (传)以,重辞也。卫人重北宫结。  

  (经七四)齐侯、卫侯盟于沙。  

  (经七五)大雩。  

  (经七六)齐国夏帅师,伐我西鄙。  

  (经七七)九月,大雩。  

  (经七八)冬,十月。  

  !定公(经八一)八年   

  春,王正月,公侵齐。公至自侵齐。二月,公侵齐。三月,公至自侵齐。  

  (传)公如,往时致月,危致也;往月致时,危往也;往月致月,恶之也。  

  (经八二)曹伯露卒。  

  (经八三)夏,齐国夏帅师,伐我西鄙。  

  (经八四)公会晋师于瓦。公至自瓦。  

  (经八五)秋,七月戊辰,陈侯柳卒。  

  (经八六)晋士鞅帅师侵郑,遂侵卫。  

  (经八七)葬曹靖公。  

  (经八八)九月,葬陈怀公。  

  (经八九)季孙斯、仲孙何忌帅师侵卫。  

  (经八十)冬,卫侯、郑伯盟于曲濮。  

  (经八十一)从祀先公。  

  (传)贵复正也。  

  (经八十二)盗窃宝玉、大弓。  

  (传)宝玉者,封圭也。大弓者,武王之戎弓也。周公受赐,藏之鲁。非其所以与人而与人,谓之亡;非其所取而取之,谓之盗。  

  !定公(经九一)九年   

  春,王正月。  

  (经九二)夏,四月戊申,郑伯虿卒。  

  (经九三)得宝玉、大弓。  

  (传)其不地,何也?宝玉、大弓,在家则羞不目羞也。恶得之,得之堤下。或曰阳虎以解众也。  

  (经九四)六月,葬郑献公。  

  (经九五)秋,齐侯、卫侯次之于五氏。  

  (经九六)秦伯卒。冬,葬秦哀公。  

  !定公(经十一)十年   

  春,王三月,及齐平。  

  (经十二)夏,公会齐侯于颊谷。公至自颊谷。  

  (传)离会不致,何为致也?危之也。危之则以地致,何也?为危之也。其危奈何?曰:颊谷之会,孔子相焉。两君就坛,两相相揖,齐人鼓噪而起,欲以执鲁君。孔子历阶而上,不尽一等,而视归乎齐侯,曰:「两君合好,夷狄之民,何为来为?」命司马止之。齐侯逡巡而谢曰:「寡人之过也。」退而属其二三大夫曰:「夫人率其君与之行古人之道,二三子独率我而入夷狄之俗,何为?」罢会。齐人使优施舞于鲁君之幕下。孔子曰:「笑君者罪当死。」使司马行法焉,首足异门而出。齐人来归郓、讙、龟、阴之田者,盖为此也。因是以见:虽有文事,必有武备。孔子于颊谷之会见之矣。  

  (经十三)晋赵鞅帅师围卫。  

  (经十四)齐人来归郓、讙、龟、阴之田。  

  (经十五)叔孙州仇、仲孙何忌帅师围郈。秋,叔孙州仇、仲孙何忌帅师围郈。  

  (经十六)宋乐大心出奔曹。宋公子地出奔陈。  

  (经十七)冬,齐侯、卫侯、郑游速会于安甫。  

  (经十八)叔孙州仇如齐。  

  (经十九)宋公之弟辰,暨宋仲佗、石彄,出奔陈。  

  !定公(经十一一)十有一年   

  春,宋公之弟辰,  

  (传)未失其弟也,  

  (经十一一)及仲佗、石彄、公子地。  

  (传)以尊及卑也,  

  (经十一一)自陈。  

  (传)陈有奉焉尔,  

  (经十一一)入于萧以叛,  

  (传)入者,内弗受也;以者,不以也;叛,直叛也。  

  (经十一二)夏,四月。  

  (经十一三)秋,宋乐大心自曹入于萧。  

  (经十一四)冬,及郑平。  

  (经十一五)叔还如郑莅盟。  

  !定公(经十二一)十有二年   

  春,薛伯定卒。  

  (经十二二)夏,葬薛襄公。  

  (经十二三)叔孙州仇帅师堕郈。  

  (传)堕犹取也。  

  (经十二四)卫公孟彄帅师伐曹。  

  (经十二五)季孙斯、仲孙何忌帅师堕费。  

  (经十二六)秋,大雩。  

  (经十二七)冬,十月癸亥,公会齐侯盟于黄。  

  (经十二八)十有一月丙寅朔,日有食之。  

  (经十二九)公至自黄。  

  (经十二十)十有二月,公围成。  

  (传)非国言围。围成,大公也。  

  (经十二十)公至自围成。  

  (传)何以致?危之也。何危尔?边乎齐也。  

  !定公(经十三一)十有三年   

  春,齐侯次于垂葭。  

  (经十三二)夏,筑蛇渊囿。  

  (经十三三)大搜于比蒲。  

  (经十三四)卫公孟彄帅师伐曹。  

  (经十三五)秋,晋赵鞅入于晋阳以叛。  

  (传)以者,不以者也。叛,直叛也。  

  (经十三六)冬,晋荀寅、士吉射入于朝歌,以叛。  

  (经十三七)晋赵鞅归于晋。  

  (传)此叛也,其以归言之,何也?贵其以地反也。贵其以地反,则是大利也?非大利也,许悔过也。许悔过,则何以言叛也?以地正国也。以地正国,则何以言叛?其入无君命也。(  

  经十三八)薛弒其君比。  

  !定公(经十四一)十有四年   

  春,卫公叔戍来奔。  

  (经十四二)晋赵阳出奔宋。  

  (经十四三)二月辛巳,楚公子结、陈公孙佗人帅师灭顿,以顿子牂归。  

  (经十四四)夏,卫北宫结来奔。  

  (经十四五)五月,于越败吴于槜李。  

  (经十四六)吴子光卒。  

  (经十四七)公会齐侯、卫侯于牵。公至自会。  

  (经十四八)秋,齐侯、宋公会于洮。  

  (经十四九)天王使石尚来归脤。  

  (传)脤者,何也?俎实也,祭肉也。生曰脤,熟曰膰。其辞石尚,士也。何以知其士也?天子之大夫不名。石尚欲书《春秋》,谏曰:「久矣周之不行礼于鲁也!请行脤,贵复正也。」  

  (经十四十)卫世子蒯聩出奔宋,卫公孟彄出奔郑。  

  (经十四十一)宋公之弟辰,自萧来奔。  

  (经十四十二)大搜于比蒲。  

  (经十四十三)邾子来会公。  

  (经十四十四)城莒父及霄。  

  !定公(经十五一)十有五年   

  春,王正月,邾子来朝。  

  (经十五二)鼷鼠食郊牛,牛死,改卜牛。  

  (传)不敬莫大焉。  

  (经十五三)二月辛丑,楚子灭胡,以胡子豹归。  

  (经十五四)夏,五月辛亥,郊。  

  (经十五五)壬申,公薨于高寝。  

  (传)高寝,非正也。  

  (经十五六)郑罕达帅师伐宋。  

  (经十五七)齐侯、卫侯次于渠蒢。  

  (经十五八)邾子来奔丧。  

  (传)丧急,故以奔言之。  

  (经十五九)秋,七月壬申,弋氏卒。  

  (传)妾辞也,哀公之母也。  

  (经十五十)八月庚辰朔,日有食之。  

  (经十五十一)九月,滕子来会葬。丁巳,葬我君定公。雨不克葬。  

  (传)葬既有日,不为雨止,礼也。雨不克葬,丧不以制也。  

  (经十五十一)戊午,日下稷,乃克葬。  

  (传)乃,急辞也,不足乎日之辞也。  

  (经十五十一)辛巳,葬定弋。  

  (经十五十二)冬,城漆。  
 谷梁传桓公 

  !桓公(经一一)元年  

  春王。 

  (传)桓无王,其曰王,何也?谨始也。其曰无王,何也?桓弟弒兄、臣弒君,天子不能定,诸侯不能救,百姓不能去,以为无王之道,遂可以至焉尔。元年有王,所以治桓也。 

  (经一二)正月,公即位。 

  (传)继故不言即位,正也。继故不言即位之为正,何也?曰:先君不以其道终,则子弟不忍即位也。继故而言即位,则是与闻乎弒也。继故而言即位,是为与闻乎弒,何也?曰:先君不以其道终,己正即位之道而即位,是无恩于先君也。 

  (经一三)三月,公会郑伯于垂。 

  (传)会者,外为主焉尔。 

  (经一四)郑伯以璧假许田。 

  (传)假不言以,言以非假也。非假而曰假,讳易地也。礼,天子在上,诸侯不得以地相与也。无田则无许可知矣。不言许,不与许也。许田者,鲁朝宿之邑也。邴者,郑伯之所受命而祭泰山之邑也。用见鲁之不朝于周,而郑之不祭泰山也。 

  (经一五)夏,四月丁未,公及郑伯盟于越。 

  (传)及者,内为志焉尔。越,盟地之名也。 

  (经一六)秋,大水。(传)高下有水灾曰大水。 

  (经一七)冬,十月。 

  (传)无事焉,何以书?不遗时也。《春秋》编年,四时具而后为年。 

  !桓公(经二一)二年  

  春,王正月戊申,宋督弒其君与夷。 

  (传)桓无王,其曰王,何也?正与夷之卒也。 

  (经)及其大夫孔父。 

  (传)孔父先死,其曰及,何也?书尊及卑,《春秋》之义也。孔父之先死,何也?督欲弒君而恐不立,于是乎先杀孔父,孔父闲也。何以知其先杀孔父也?曰:子既死,父不忍称其名;臣既死,君不忍称其名,以是知君之累之也。孔氏父字,谥也。或曰:其不称名,盖为祖讳也。孔子故宋也。 

  (经二二)滕子来朝。 

  (经二三)三月,公会齐侯、陈侯、郑伯于稷,以成宋乱。 

  (传)以者,内为志焉尔。公为志乎成是乱也,此成矣,取不成事之辞而加之焉。于内之恶,而君子无遗焉尔。 

  (经二四)夏,四月,取郜大鼎于宋。戊申,纳于太庙。 

  (传)桓内弒其君,外成人之乱,受赂而退,以事其祖,非礼也。其道以周公为弗受也。郜鼎者,郜之所为也。曰宋,取之宋也,以是为讨之鼎也。孔子曰:「名从主人,物从中国。」故曰郜大鼎也。 

  (经二五)秋,七月,纪侯来朝。 

  (传)朝时,此其月,何也?桓内弒其君,外成人之乱,于是为齐侯、陈侯、郑伯讨。数日以赂,己即是事而朝之。恶之,故谨而月之也。 

  (经二六)蔡侯、郑伯会于邓。 

  (经二七)九月,入杞。 

  (传)我入之也。 

  (经二八)公及戎盟于唐。冬,公至自唐。 

  (传)桓无会而其致,何也?远之也。 

  !桓公(经三一)三年  

  春,正月,公会齐侯于嬴。 

  (经三二)夏,齐侯、卫侯胥命于蒲。 

  (传)胥之为言犹相也。相命而信谕,谨言而退,以是为近古也。是必一人先,其以相言之,何也?不以齐侯命卫侯也。 

  (经三三)六月,公会杞侯于郕。 

  (经三四)秋,七月壬辰朔,日有食之,既。 

  (传)言日言朔,食正朔也。既者,尽也,有继之辞也。 

  (经三五)公子翚如齐逆女。 

  (传)逆女,亲者也。使大夫,非正也。 

  (经三六)九月,齐侯送姜氏于讙。 

  (传)礼送女,父不下堂,母不出祭门,诸母兄弟不出阙门。父戒之曰:「谨慎从尔舅之言。」母戒之曰:「谨慎从尔姑之言。」诸母般申之曰:「谨慎从尔父母之言。」送女逾竟,非礼也。 

  (经三七)公会齐侯于讙。 

  (传)无讥乎,曰:为礼也。齐侯来也,公之逆而会之可也。 

  (经三八)夫人姜氏至自齐。 

  (传)其不言翚之以来,何也?公亲受之于齐侯也。子贡曰:「冕而亲迎,不已重乎?」孔子曰:「合二姓之好,以继万世之后,何谓已重乎!」 

  (经三九)冬,齐侯使其弟年来聘。 

  (经三十)有年。 

  (传)五谷皆熟,为有年也。 

  !桓公(经四一)四年  

  春,正月,公狩于郎。 

  (传)四时之田,皆为宗庙之事也。春曰田,夏曰苗,秋曰搜,冬曰狩。四时之田用三焉,唯其所先得,一为干豆,二为宾客,三为充君之庖。 

  (经四二)夏,天王使宰渠伯纠来聘。 

  !桓公(经五一)五年  

  春,正月甲戌、己丑,陈侯鲍卒。 

  (传)鲍卒何为以二日卒之?《春秋》之义:信以传信,疑以传疑。陈侯以甲戌之日出,己丑之日得,不知死之日,故举二日以包也。 

  (经五二)夏,齐侯、郑伯如纪。 

  (经五三)天王使任叔之子来聘。 

  (传)任叔之子者,录父以使子也。故微其君臣而着其父子,不正父在子代仕之辞也。 

  (经五四)葬陈桓公。 

  (经五五)城祝丘。 

  (经五六)秋,蔡人、卫人、陈人从王伐郑。 

  (传)举从者之辞也。其举从者之辞,何也?为天王讳伐郑也。郑,同姓之国也,在乎冀州,于是不服,为天子病矣。 

  (经五七)大雩。 

  (经五八)螽。 

  (传)螽,虫灾也。甚则月,不甚则时。 

  (经五九)冬,州公如曹。 

  (传)外相如不书,此其书,何也?过我也。 

  !桓公(经六一)六年  

  春,正月,寔来。 

  (传)寔来者,是来也。何谓是来?谓州公也。其谓之是来,何也?以其画我,故简言之也,诸侯不以过相朝也。 

  (经六二)夏,四月,公会纪侯于郕。 

  (经六三)秋,八月壬午,大阅。 

  (传)大阅者何?阅兵车也。修教明谕,国道也。平而修戎事,非正也。其日以为崇武,故谨而日之,盖以观妇人也。 

  (经六四)蔡人杀陈佗。 

  (传)陈佗者,陈君也,其曰陈佗,何也?匹夫行,故匹夫称之也。其匹夫行奈何?陈侯喜猎,淫猎于蔡,与蔡人争禽。蔡人不知其是陈君也而杀之。何以知其是陈君也?两下相杀不道;其不地,于蔡也。 

  (经六五)九月丁卯,子同生。 

  (传)疑故志之,时曰同乎人也。 

  (经六六)冬,纪侯来朝。 

  !桓公(经七一)七年  

  春,二月己亥,焚咸丘。 

  (传)其不言邾咸丘,何也?疾其以火攻也。 

  (经七二)夏,谷伯绥来朝。邓侯吾离来朝。 

  (传)其名,何也?失国也。失国则其以朝言之,何也?尝以诸侯与之接矣。虽失国,弗损吾异日也。 

  !桓公(经八一)八年  

  春,正月己卯,烝。 

  (传)烝,冬事也,春兴之,志不时也。 

  (经八二)天王使家父来聘。 

  (经八三)夏,五月丁丑,烝。 

  (传)烝,冬事也,春、夏兴之,黩祀也。志不敬也。 

  (经八四)秋,伐邾。 

  (经八五)冬,十月,雨雪。 

  (经八六)祭公来,遂逆王后于纪。 

  (传)其不言使焉,何也?不正。其以宗庙之大事,即谋于我,故弗与使也。遂,继事之辞也。其曰「遂逆王后」,故略之也。或曰天子无外,王命之则成矣。 

  !桓公(经九一)九年  

  春,纪季姜归于京师。 

  (传)为之中者归之也。 

  (经九二)夏,四月。 

  (经九三)秋,七月。 

  (经九四)冬,曹伯使其世子射姑来朝。 

  (传)朝不言使,言使非正也。使世子伉诸侯之礼而来朝,曹伯失正矣!诸侯相见曰朝,以待人父之道待人之子,以内为失正矣!内失正,曹伯失正,世子可以已矣!则是故命也。尸子曰:「夫已,多乎道。」 

  !桓公(经十一)十年  

  春,王正月庚申,曹伯终生卒。 

  (传)桓无王,其曰王,何也?正终生之卒也。 

  (经十二)夏,五月,葬曹桓公。 

  (经十三)秋,公会卫侯于桃丘。弗遇。 

  (传)弗遇者,志不相得也。弗,内辞也。 

  (经十四)冬,十有二月丙午,齐侯、卫侯、郑伯来战于郎。 

  (传)来战者,前定之战也。内不言战,言战则败也。不言其人,以吾败也。不言及者,为内讳也。 

  !桓公(经十一一)十有一年  

  春,正月,齐人、卫人、郑人盟于恶曹。 

  (经十一二)夏,五月癸未,郑伯寤生卒。 

  (经十一三)秋,七月,葬郑庄公。 

  (经十一四)九月,宋人执郑祭仲。 

  (传)宋人者,宋公也,其曰人,何也?贬之也。 

  (经十一五)突归于郑。 

  (传)曰突,贱之也。曰归,易辞也。祭仲易其事,权在祭仲也。死君难,臣道也,今立恶而黜正,恶祭仲也。 

  (经十一六)郑忽出奔卫。 

  (传)郑忽者,世子忽也。其名,失国也。 

  (经十一七)柔会宋公、陈侯、蔡叔盟于折。 

  (传)柔者何?吾大夫之未命者也。 

  (经十一八)公会宋公于夫钟。 

  (经十一九)冬,十有二月,公会宋公于阚。 

  !桓公(经十二一)十有二年  

  春,正月。 

  (经十二二)夏,六月壬寅,公会纪侯、莒子盟于曲池。 

  (经十二三)秋,七月丁亥,公会宋公、燕人盟于谷丘。 

  (经十二四)八月壬辰,陈侯跃卒。 

  (经十二五)公会宋公于虚。 

  (经十二六)冬,十有一月,公会宋公于龟。 

  (经十二七)丙戌,公会郑伯盟于武父。 

  (经十二八)丙戌,卫侯晋卒。 

  (传)再称日,决日义也。 

  (经十二九)十有二月,及郑师伐宋;丁未,战于宋。 

  (传)非与所与伐战也。不言与郑战,耻不和也。于伐与战,败也。内讳败,举其可道者也。 

  !桓公(经十三一)十有三年  

  春,二月,公会纪侯、郑伯。 

  (经十三二)己巳,及齐侯、宋公、卫侯、燕人。战齐师、宋师、卫师、燕师。败绩。 

  (传)其言及者,由内及之也。其曰战者,由外言之也。战称人,败称师,重众也。其不地,于纪也。 

  (经十三三)三月,葬卫宣公。 

  (经十三四)夏,大水。 

  (经十三五)秋,七月。 

  (经十三六)冬,十月。 

  !桓公(经十四一)十有四年  

  春,正月,公会郑伯于曹。 

  (经十四二)无冰。 

  (传)无冰,时燠也。 

  (经十四三)夏五。郑伯使其弟御来盟。 

  (传)诸侯之尊,弟兄不得以属通。其弟云者,以其来我举其贵者也。来盟,前定也。不日,前定之盟不日。孔子曰:「听远音者,闻其疾而不闻其舒;望远者,察其貌而不察其形。立乎定、哀,以指隐、桓,隐、桓之日远矣。『夏五』传疑也。」 

  (经十四四)秋,八月壬申,御廪灾。乙亥,尝。 

  (传)御廪之灾不志,此其志何也?以为唯未易灾之余,而尝可也,志不敬也。天子亲耕,以共粢盛;王后亲蚕,以共祭服。国非无良农工女也,以为人之所尽,事其祖祢,不若以己所自亲者也。何用见其未易灾之余而尝也?曰甸粟,而内之三宫;三宫米,而藏之御廪。夫尝必有兼甸之事焉。壬申,御廪灾;乙亥,尝。以为未易灾之余而尝也。 

  (经十四五)冬,十有二月丁巳,齐侯禄父卒。 

  (经十四六)宋人以齐人、蔡人、卫人、陈人伐郑。 

  (传)以者,不以者也。民者,君之本也。使人以其死,非正也。 

  !桓公(经十五一)十有五年  

  春,二月,天王使家父来求车。 

  (传)古者诸侯时献于天子,以其国之所有,故有辞让,而无征求。求车,非礼也;求金,甚矣! 

  (经十五二)三月乙未,天王崩。 

  (经十五三)夏,四月己巳,葬齐僖公。 

  (经十五四)五月,郑伯突出奔蔡。 

  (传)讥夺正也。 

  (经十五四)郑世子忽复归于郑。 

  (传)反正也。 

  (经十五五)许叔入于许。 

  (传)许叔,许之贵者也,莫宜乎许叔。其曰入,何也?其归之道,非所以归也。 

  (经十五六)公会齐侯于蒿。 

  (经十五七)邾人、牟人、葛人来朝。 

  (经十五八)秋,九月,郑伯突入于栎。 

  (经十五九)冬,十有一月,公会宋公、卫侯、陈侯、于袲伐郑。 

  (传)地而后伐,疑辞也,非其疑也。 

  !桓公(经十六一)十有六年  

  春,正月,公会宋公、蔡侯、卫侯于曹。 

  (经十六二)夏,四月,公会宋公、卫侯、陈侯、蔡侯伐郑。 

  (经十六三)秋,七月,公至自伐郑。 

  (传)桓无会,其致何也?危之也。 

  (经十六四)冬,城向。 

  (经十六五)十有一月,卫侯朔出奔齐。 

  (传)朔之名,恶也,天子召而不往也。 

  !桓公(经十七一)十有七年  

  春,正月丙辰,公会齐侯、纪侯盟于黄。 

  (经十七二)二月丙午,公及邾仪父盟于趡。 

  (经十七三)夏,五月丙午,及齐师战于郎。 

  (传)内讳败,举其可道者也。不言其人,以吾败也。不言及之者,为内讳也。 

  (经十七四)六月丁丑,蔡侯封人卒。 

  (经十七五)秋,八月,蔡季自陈归于蔡。 

  (传)蔡季,蔡之贵者也。自陈,陈有奉焉尔。 

  (经十七六)癸巳,葬蔡桓侯。 

  (经十七七)及宋人、卫人伐邾。 

  (经十七八)冬,十月朔,日有食之。 

  (传)言朔不言日,食既朔也。 

  !桓公(经十八一)十有八年  

  春,王正月,公会齐侯于泺。公与夫人姜氏遂如齐。 

  (传)泺之会,不言及夫人,何也?以夫人之伉,弗称数也。 

  (经十八二)夏,四月丙子,公薨于齐。 

  (传)其地,于外也。薨称公,举上也。 

  (经十八三)丁酉,公之丧至自齐。 

  (经十八四)秋,七月。 

  (经十八五)冬,十有二月,己丑,葬我君桓公。 

  (传)葬我君,接上下也。君弒,贼不讨不书葬,此其言葬,何也?不责逾国而讨于是也。桓公葬而后举谥,谥所以成德也,于卒事乎加之矣。知者虑,义者行,仁者守。有此三者备,然后可以会矣。 
 

  谷梁传闵公  

  !闵公(经一一)元年   

  春,王正月。  

  (传)继弒君不言即位,正也。亲之非父也,尊之非君也,继之如君父也者,受国焉尔。  

  (经一二)齐人救邢。  

  (传)善救邢也。  

  (经一三)夏,六月辛酉,葬我君庄公。  

  (传)庄公葬而后举谥,谥所以成德也,于卒事乎加之矣。  

  (经一四)秋,八月,公及齐侯盟于洛姑。  

  (传)盟纳季子也。  

  (经一四)季子来归。  

  (传)其曰季子,贵之也。其曰来归,喜之也。  

  (经一五)冬,齐仲孙来。  

  (传)其曰齐仲孙,外之也。其不目而曰仲孙,疏之也。其言齐,以累桓也。  

  !闵公(经二一)二年   

  春,王正月,齐人迁阳。  

  (经二二)夏,五月乙酉,吉禘于庄公。  

  (传)吉禘者,不吉者也。丧事未毕而举吉祭,故非之也。  

  (经二三)秋,八月辛丑,公薨。  

  (传)不地,故也。其不书葬,不以讨母葬子也。  

  (经二四)九月,夫人姜氏孙于邾。  

  (传)孙之为言犹孙也。讳奔也。  

  (经二五)公子庆父出奔莒。  

  (传)其曰出,绝之也,庆父不复见矣。  

  (经二六)冬,齐高子来盟。  

  (传)其曰来,喜之也。其曰高子,贵之也。盟立僖公也,不言使,何也?不以齐侯使高子也。  

  (经二七)十有二月,狄入卫。  

  (经二八)郑弃其师。  

  (传)恶其长也,兼不反其众,则是弃其师也。  
  谷梁传文公  

  !文公(经一一)元年   

  春,王正月,公即位。  

  (传)继正即位,正也。  

  (经一二)二月癸亥,日有食之。  

  (经一三)天王使叔服来会葬。  

  (传)葬曰会,其志重天子之礼也。  

  (经一四)夏,四月丁巳,葬我君僖公。  

  (传)薨称公,举上也。葬我君,接上下也。僖公葬而后举谥,谥所以成德也。于卒事乎加之矣!  

  (经一五)天王使毛伯来锡公命。  

  (传)礼,有受命,无来锡命。锡命,非正也。  

  (经一六)晋侯伐卫。  

  (经一七)叔孙得臣如京师。  

  (经一八)卫人伐晋。  

  (经一九)秋,公孙敖会晋侯于戚。  

  (经一十)冬,十月丁未,楚世子商臣弒其君髡。  

  (传)日髡之卒,所以谨商臣之弒也。夷狄不言正不正。  

  (经一十一)公孙敖如齐。  

  !文公(经二一)二年   

  春,王二月甲子,晋侯及秦师战于彭衙。秦师败绩。  

  (经二二)丁丑,作僖公主。  

  (传)作,为也,为僖公主也。立主,丧主于虞。吉主于练,作僖公主,讥其后也。作主坏庙,有时日于练焉!坏庙,坏庙之道,易檐可也,改涂可也。  

  (经二三)三月乙巳,及晋处父盟。  

  (传)不言公,处父伉也,为公讳也。何以知其与公盟?以其日也。何以不言公之如晋?所耻也。出不书,反不致也。  

  (经二四)夏,六月,公孙敖会宋公、陈侯、郑伯、晋士谷,盟于垂敛。  

  (传)内大夫可以会外诸侯。  

  (经二五)自十有二月不雨,至于秋七月。  

  (传)历时而言不雨,文不忧雨也。不忧雨者,无志乎民也。  

  (经二六)八月丁卯,大事于太庙,跻僖公。  

  (传)大事者何?大是事也,着祫尝。祫祭者,毁庙之主。陈于太祖,未毁庙之主,皆升合祭于太祖。跻,升也,先亲而后祖也,逆祀也。逆祀,则是无昭穆也。无昭穆,则是无祖也。无祖,则无天也。故曰:文无天。无天者,是无天而行也。君子不以亲亲害尊尊,此《春秋》之义也。  

  (经二七)冬,晋人、宋人、陈人、郑人伐秦。  

  (经二八)公子遂如齐纳币。  

  !文公(经三一)三年   

  春,王正月,叔孙得臣会晋人、宋人、陈人、卫人、郑人伐沉。沉溃。  

  (经三二)夏,五月,王子虎卒。  

  (传)叔服也,此不卒者也,何以卒之?以其来会葬,我卒之也。或曰以其尝执重以守也。  

  (经三三)秦人伐晋。  

  (经三四)秋,楚人围江。  

  (经三五)雨螽于宋。  

  (传)外灾不志,此何以志也?曰:灾甚也。其甚奈何?茅茨尽矣!着于上,见于下,谓之雨。  

  (经三六)冬,公如晋。  

  (经三七)十有二月己巳,公及晋侯盟。  

  (经三八)晋阳处父帅师伐楚,救江。  

  (传)此伐楚,其言救江,何也?江远楚近,伐楚所以救江也。  

  !文公(经四一)四年   

  春,公至自晋。  

  (经四二)夏,逆妇姜于齐。  

  (传)其曰妇姜,为其礼成乎齐也。其逆者谁也?亲逆而称妇。或者公与,何其速妇之也?曰:公也。其不言公,何也?非成礼于齐也。曰妇,有姑之辞也;其不言氏,何也?贬之也。何为贬之也?夫人与有贬也。  

  (经四三)狄侵齐。  

  (经四四)秋,楚人灭江。  

  (经四五)晋侯伐秦。  

  (经四六)卫侯使宁俞来聘。  

  (经四七)冬,十有一月壬寅,夫人风氏薨。  

  !文公(经五一)五年   

  春,王正月,王使荣叔归含且赗。  

  (传)含,一事也;赗,一事也;兼归之,非正也。其曰且,志兼也。其不言来,不周事之用也。赗以早,而含己晚。  

  (经五二)三月辛亥,葬我小君成风。  

  (经五三)王使毛伯来会葬。  

  (传)会葬之礼,于鄙上。  

  (经五四)夏,公孙敖如晋。  

  (经五五)秦人入鄀。  

  (经五六)秋,楚人灭六。  

  (经五七)冬,十月甲申,许男业卒。  

  !文公(经六一)六年   

  春,葬许僖公。  

  (经六二)夏,季孙行父如陈。  

  (经六三)秋,季孙行父如晋。  

  (经六四)八月乙亥,晋侯驩卒。  

  (经六五)冬,十月,公子遂如晋。  

  (经六六)葬晋襄公。  

  (经六七)晋杀其大夫阳处父。  

  (传)称国以杀,罪累上也。襄公已葬,其以累上之辞言之,何也?君漏言也。上泄则下暗,下暗则上聋。且暗且聋,无以相通,夜姑杀者也。夜姑之杀奈何?曰:晋将与狄战,使狐夜姑为将军,赵盾佐之,阳处父曰:「不可!古者君之使臣也,使仁者佐贤者,不使贤者佐仁者。今赵盾贤,夜姑仁,其不可乎?」襄公曰:「诺。」谓夜姑曰:「吾始使盾佐女。今女佐盾矣!」夜姑曰:「敬诺。」襄公死,处父主竟上事,夜姑使人杀之。君漏言也,故士造辟而言,诡辞而出,曰:「用我则可,不用我则无乱其德。」  

  (经六七)晋狐夜姑出奔狄。  

  (经六八)闰月不告月,犹朝于庙。  

  (传)不告月者,何也?不告朔也。不告朔,则何为不言朔也?闰月者,附月之余日也,积分而成于月者也。天子不以告朔,而丧事不数也。犹之为言,可以已也。  

  !文公(经七一)七年   

  春,公伐邾。三月甲戌,取须句。  

  (传)取邑不日,此其日,何也?不正其再取,故谨而日之也。  

  (经七一)遂城郚。  

  (传)遂,继事也。  

  (经七二)夏,四月,宋公壬臣卒。  

  (经七三)宋人杀其大夫。  

  (传)称人以杀,诛有罪也。  

  (经七四)戊子,晋人及秦人战于令狐。  

  (经七五)晋先蔑奔秦。  

  (传)不言出,在外也。辍战而奔秦,以是为逃军也。  

  (经七六)狄侵我西鄙。  

  (经七七)秋,八月,公会诸侯、晋大夫,盟于扈。  

  (传)其曰诸侯,略之也。  

  (经七八)冬,徐伐莒。  

  (经七九)公孙敖如莒莅盟。  

  (传)莅,位也。其曰位,何也?前定也。其不日,前定之盟不日也。  

  !文公(经八一)八年   

  春,王正月。  

  (经八二)夏,四月。  

  (经八三)秋,八月戊申,天王崩。  

  (经八四)冬,十月壬午,公子遂会晋赵盾,盟于衡雍。乙酉,公子遂会雒戎,盟于暴。  

  (经八五)公孙敖如京师。不至而复,丙戌,奔莒。  

  (传)不言所至,未如也。未如则未复也。未如而曰如,不废君命也。未复而曰复,不专君命也。其如非如也,其复非复也。唯奔莒之为信,故谨而日之也。  

  (经八六)螽。  

  (经八七)宋人杀其大夫司马。  

  (传)司马,官也。其以官称,无君之辞也。  

  (经八七)宋司城来奔。  

  (传)司城,官也。其以官称,无君之辞也。来奔者不言出,举其接我也。  

  !文公(经九一)九年   

  春,毛伯来求金。  

  (传)求车犹可,求金甚矣。  

  (经九二)夫人姜氏如齐。  

  (经九三)二月,叔孙得臣如京师。  

  (传)京,大也;师,众也。言周,必以众与大言之也。  

  (经九四)辛丑,葬襄王。  

  (传)天子志崩不志葬,举天下而葬一人,其道不疑也。志葬,危不得葬也。日之,甚矣!其不葬之辞也。  

  (经九五)晋人杀其大夫先都。  

  (经九六)三月,夫人姜氏至自齐。  

  (传)卑以尊致,病文公也。  

  (经九七)晋人杀其大夫士縠,及箕郑父。  

  (传)称人以杀,诛有罪也,郑父累也。  

  (经九八)楚人伐郑。  

  (经九九)公子遂会晋人、宋人、卫人、许人,救郑。  

  (经九十)夏,狄侵齐。  

  (经九十一)秋,八月,曹伯襄卒。  

  (经九十二)九月癸酉,地震。  

  (传)震,动也。地,不震者也;震,故谨而日之也。  

  (经九十三)冬,楚子使萩来聘。  

  (传)楚无大夫,其曰萩,何也?以其来我,褒之也。  

  (经九十四)秦人来归僖公、成风之襚。  

  (传)秦人弗夫人也,即外之弗夫人而见正焉。  

  (经九十五)葬曹共公。  

  !文公(经十一)十年   

  春,王三月辛卯,臧孙辰卒。  

  (经十二)夏,秦伐晋。  

  (经十三)楚杀其大夫宜申。  

  (经十四)自正月不雨,至于秋七月。  

  (传)历时而言不雨,文不闵雨也。不闵雨者,无志乎民也。  

  (经十五)及苏子盟于女栗。  

  (经十六)冬,狄侵宋。  

  (经十七)楚子、蔡侯次于厥貉。  

  !文公(经十一一)十有一年   

  春,楚子伐麇。  

  (经十一二)夏,叔彭生会晋郄缺于承匡。  

  (经十一三)秋,曹伯来朝。  

  (经十一四)公子遂如宋。  

  (经十一五)狄侵齐。  

  (经十一六)冬,十月甲午,叔孙得臣败狄于咸。  

  (传)不言帅师而言败,何也?直败,一人之辞也。一人而曰败,何也?以众焉言之也。传曰:长狄也。兄弟三人,佚宕中国,瓦石不能害。叔孙得臣,最善射者也。射其目,身横九亩,断其首而载之,眉见于轼。然则何为不言获也?曰:古者不重创,不禽二毛,故不言获,为内讳也。其之齐者,王子成父杀之,则未知其之晋者也。  

  !文公(经十二一)十有二年   

  春,王正月,郕伯来奔。  

  (经十二二)杞伯来朝。  

  (经十二三)二月庚子,子叔姬卒。  

  (传)其曰子叔姬,贵也,公之母姊妹也。其一传曰:许嫁,以卒之也。男子二十而冠,冠而列丈夫;三十而娶。女子十五而许嫁,二十而嫁。  

  (经十二四)夏,楚人围巢。  

  (经十二五)秋,滕子来朝。  

  (经十二六)秦伯使术来聘。  

  (经十二七)冬,十有二月戊午,晋人秦人战于河曲。  

  (传)不言及,秦晋之战已亟,故略之也。  

  (经十二八)季孙行父帅师,城诸及郓。  

  (传)称帅师,言有难也。  

  !文公(经十三一)十有三年   

  春,王正月。  

  (经十三二)夏,五月壬午,陈侯朔卒。  

  (经十三三)邾子籧篨卒。  

  (经十三四)自正月不雨,至于秋七月。  

  (经十三五)大室屋坏。  

  (传)大室屋坏者,有坏道也,讥不修也。大室犹世室也。周公曰「大庙」,伯禽曰「大室」,群公曰「宫」。礼,宗庙之事。君亲割,夫人亲舂,敬之至也。为社稷之主,而先君之庙坏,极称之,志不敬也。  

  (经十三六)冬,公如晋。  

  (经十三七)卫侯会公于沓。  

  (经十三八)狄侵卫。  

  (经十三九)十有二月己丑,公及晋侯盟,还自晋。  

  (传)还者,事未毕也。自晋,事毕也。  

  (经十三十)郑伯会公于棐。  

  !文公(经十四一)十有四年   

  春,王正月,公至自晋。  

  (经十四二)邾人伐我南鄙。  

  (经十四三)叔彭生帅师伐邾。  

  (经十四四)夏,五月乙亥,齐侯潘卒。  

  (经十四五)六月,公会宋公、陈侯、卫侯、郑伯、许伯、曹伯、晋赵盾。癸酉,同盟于新城。  

  (传)同者,有同也,同外楚也。  

  (经十四六)秋,七月,有星孛入于北斗。  

  (传)孛之为言犹茀也。其曰入北斗,斗有环域也。  

  (经十四六)公至自会。  

  (经十四七)晋人纳捷菑于邾,弗克纳。  

  (传)是郄克也,其曰人,何也?微之也。何为微之也?长毂五百乘,绵地千里,过宋、郑、滕、薛,夐入千乘之国,欲变人之主。至城下,然后知。何知之晚也!弗克纳。未伐而曰弗克,何也?弗克其义也。捷菑,晋出也;貜且,齐出也。貜且,正也;捷菑,不正也。  

  (经十四八)九月甲申,公孙敖,卒于齐。  

  (传)奔大夫不言卒,而言卒,何也?为受其丧,不可不卒也。其地于外也。  

  (经十四九)齐公子商人弒其君舍。  

  (传)舍未逾年,其曰君,何也?成舍之为君,所以重商人之弒也。商人其不以国氏,何也?不以嫌代嫌也。舍之不日,何也?未成为君也。  

  (经十四十)宋子哀来奔。  

  (传)其曰子哀,失之也。  

  (经十四十一)冬,单伯如齐。  

  (经十四十二)齐人执单伯。  

  (传)私罪也。单伯淫于齐,齐人执之。  

  (经十四十三)齐人执子叔姬。  

  (传)叔姬同罪也。  

  !文公(经十五一)十有五年   

  春,季孙行父如晋。  

  (经十五二)三月,宋司马华孙来盟。  

  (传)司马,官也。其以官称,无君之辞也。来盟者何?前定也。不言及者,以国与之也。  

  (经十五三)夏,曹伯来朝。  

  (经十五四)齐人归公孙敖之丧。  

  (经十五五)六月辛丑朔,日有食之,鼓用牲于社。  

  (经十五六)单伯至自齐。  

  (传)大夫执则致,致则名;此其不名,何也?天子之命大夫也。  

  (经十五七)晋郄缺帅师伐蔡。  

  (经十五八)戊申,入蔡。  

  (经十五九)秋,齐人侵我西鄙。  

  (传)其曰鄙,远之也。其远之,何也?不以难介我国也。  

  (经十五十)季孙行父如晋。  

  (经十五十一)冬,十有一月,诸侯盟于扈。  

  (经十五十二)十有二月,齐人来归子叔姬。  

  (传)其曰子叔姬,贵之也。其言来归,何也?父母之于子,虽有罪,犹欲其免也。  

  (经十五十三)齐侯侵我西鄙。  

  (经十五十四)遂伐曹,入其郛。  

  !文公(经十六一)十有六年   

  春,季孙行父会齐侯于阳谷。齐侯弗及盟。  

  (传)弗及者,内辞也。行父失命矣,齐得内辞也。  

  (经十六二)夏,五月,公四不视朔。  

  (传)天子告朔于诸侯,诸侯受乎祢庙,礼也。公四不视朔,公不臣也。以公为厌政以甚矣。  

  (经十六三)六月戊辰,公子遂及齐侯盟于师丘。  

  (传)复行父之盟也。  

  (经十六四)秋,八月辛未,夫人姜氏薨。  

  (经十六五)毁泉台。  

  (传)丧不贰事;贰事,缓丧也。以文为多失道矣!自古为之,今毁之,不如勿处而已矣。  

  (经十六六)楚人、秦人、巴人灭庸。  

  (经十六七)冬,十有一月,宋人弒其君杵臼。  

  !文公(经十七一)十有七年   

  春,晋人、卫人、陈人、郑人伐宋。  

  (经十七二)夏,四月癸亥,葬我小君声姜。  

  (经十七三)齐侯伐我西鄙。  

  (经十七四)六月癸未,公及齐侯盟于谷。  

  (经十七五)诸侯会于扈。  

  (经十七六)秋,公至自谷。  

  (经十七七)冬,公子遂如齐。  

  !文公(经十八一)十有八年   

  春,王二月丁丑,公薨于台下。  

  (传)台下,非正也。  

  (经十八二)秦伯罃卒。  

  (经十八三)夏,五月戊戌,齐人弒其君商人。  

  (经十八四)六月癸酉,葬我君文公。  

  (经十八五)秋,公子遂、叔孙得臣如齐。  

  (传)使举上客,而不称介。不正其同伦而相介,故列而数之也。  

  (经十八六)冬,十月,子卒。  

  (传)子卒,不日,故也。  

  (经十八七)夫人姜氏归于齐。  

  (传)恶宣公也。有不待贬绝,而罪恶见者;有待贬绝,而恶从之者。侄娣者,不孤子之意也。一人有子,三人缓带。一曰:就贤也。  

  (经十八八)季孙行父如齐。  

  (经十八九)莒弒其君庶其。  
  谷梁传僖公  

  !僖公(经一一)元年   

  春,王正月。(传)继弒君不言即位,正也。  

  (经一二)齐师、宋师、曹师次于聂北,救邢。  

  (传)救不言次,言次非救也,非救而曰救,何也?遂齐侯之意也。是齐侯与?齐侯也。何用见其是齐侯也?曹无师。曹师者,曹伯也,其不言曹伯,何也?以其不言齐侯,不可言曹伯也。其不言齐侯,何也?以其不足乎扬,不言齐侯也。  

  (经一三)夏,六月,邢迁于夷仪。  

  (传)迁者,犹得其国家以往者也。其地,邢复见也。  

  (经一四)齐师、宋师、曹师城邢。  

  (传)是向之师也,使之如改事然,美齐侯之功也。  

  (经一五)秋,七月戊辰,夫人姜氏薨于夷。  

  (传)夫人薨不地。地,故也。  

  (经一五)齐人以归。  

  (传)不言以丧归,非以丧归也。加丧焉,讳以夫人归也。其以归,薨之也。  

  (经一六)楚人伐郑。  

  (经一七)八月,公会齐侯、宋公、郑伯、曹伯、邾人于柽。  

  (经一八)九月,公败邾师于偃。  

  (传)不日,疑战也。疑战而曰败,胜内也。  

  (经一九)冬,十月壬午,公子友帅师,败莒师于丽。获莒挐。  

  (传)莒无大夫,其曰莒挐,何也?以吾获之目之也。内不言获,此其言获,何也?恶公子之绐。绐者奈何?公子友谓莒挐曰:「吾二人不相说,士卒何罪?」屏左右而相搏。公子友处下。左右曰:「孟劳。」孟劳者,鲁之宝刀也。公子友以杀之。然则何以恶乎绐也?曰:弃师之道也。  

  (经一十)十有二月丁巳,夫人氏之丧至自齐。  

  (传)其不言姜,以其杀二子,贬之也。或曰为齐桓讳杀同姓也。  

  !僖公(经二一)二年   

  春,王正月,城楚丘。  

  (传)楚丘者何?卫邑也。国而曰城;此邑也,其曰城,何也?封卫也。则其不言城卫,何也?卫未迁也。其不言卫之迁焉,何也?不与齐侯专封也。其言城之者,专辞也。故非天子不得专封诸侯,诸侯不得专封诸侯。虽通其仁,以义而不与也。故曰:仁不胜道。  

  (经二二)夏,五月辛巳,葬我小君哀姜。  

  (经二三)虞师、晋师灭夏阳。  

  (传)非国而曰灭,重夏阳也。虞无师,其曰师,何也?以其先晋,不可以不言师也。其先晋,何也?为主乎灭夏阳也。夏阳者,虞、虢之塞邑也,灭夏阳而虞、虢举矣;虞之为主乎灭夏阳,何也?晋献公欲伐虢。荀息曰:「君何不以屈产之乘,垂棘之璧,而借道乎虞也?」公曰:「此晋国之宝也。如受吾币而不借吾道,则如之何?」荀息曰:「此小国之所以事大国也。彼不借吾道,必不敢受吾币。如受吾币而借吾道,则是我取之中府,而藏之外府;取之中厩,而置之外厩也。」公曰:「宫之奇存焉,必不使受之也。」荀息曰:「宫之奇之为人也,达心而懦,又少长于君。达心则其言略,懦则不能强谏,少长于君,则君轻之。且夫玩好在耳目之前,而患在一国之后,此中知以上,乃能虑之。臣料虞君,中知以下也。」公遂借道而伐虢。宫之奇谏曰:「晋国之使者,其辞卑而币重,必不便于虞。」虞公弗听,遂受其币而借之道。宫之奇谏曰:「语曰:『唇亡则齿寒』,其斯之谓与!」挈其妻子以奔曹。献公亡虢,五年而后举虞,荀息牵马操璧而前曰:「璧则犹是也,而马齿加长矣。」  

  (经二四)秋,九月,齐侯、宋公、江人、黄人盟于贯。  

  (传)贯之盟,不期而至者,江人、黄人也。江人、黄人者,远国之辞也。中国称齐、宋,远国称江、黄,以为诸侯皆来至也。  

  (经二五)冬,十月,不雨。  

  (传)不雨者,勤雨也。  

  (经二六)楚人侵郑。  

  !僖公(经三一)三年   

  春,王正月,不雨。  

  (传)不雨者,勤雨也。  

  (经三二)夏,四月,不雨。  

  (传)一时言不雨者,闵雨也。闵雨者,有志乎民者也。  

  (经三三)徐人取舒。  

  (经三四)六月,雨。  

  (传)雨云者,喜雨也。喜雨者,有志乎民者也。  

  (经三五)秋,齐侯、宋公、江人、黄人会于阳谷。  

  (传)阳谷之会,桓公委端搢笏而朝诸侯,诸侯皆谕乎桓公之志。  

  (经三六)冬,公子季友如齐莅盟。  

  (传)莅者位也。其不日,前定也。不言及者,以国与之也。不言其人,亦以国与之也。  

  (经三七)楚人伐郑。  

  !僖公(经四一)四年   

  春,王正月,公会齐侯、宋公、陈侯、卫侯、郑伯、许男、曹伯侵蔡。蔡溃。  

  (传)溃之为言,上下不相得也。侵,浅事也。侵蔡而蔡溃,以桓公为知所侵也。不土其地,不分其民,明正也。  

  (经四一)遂伐楚,次于陉。  

  (传)遂,继事也。次,止也。  

  (经四二)夏,许男新臣卒。  

  (传)诸侯死于国,不地;死于外,地。死于师,何为不地?内桓师也。  

  (经四三)楚屈完来盟于师,盟于召陵。  

  (传)楚无大夫,其曰屈完,何也?以其来会桓,成之为大夫也。其不言使,权在屈完也,则是正乎?曰:非正也。以其来会诸侯,重之也。来者何?内桓师也。于师,前定也。于召陵,得志乎桓公也。得志者,不得志也,以桓公得志为仅矣。屈完曰:「大国之以兵向楚,何也?」桓公曰:「昭王南征不反,菁茅之贡不至,故周室不祭。」屈完曰:「菁茅之贡不至,则诺,昭王南征不反,我将问诸江。」  

  (经四四)齐人执陈袁涛涂。  

  (传)齐人者,齐侯也,其人之,何也?于是哆然外齐侯也。不正其逾国而执也。  

  (经四五)秋,及江人、黄人伐陈。  

  (传)不言其人及之者何?内师也。  

  (经四六)八月,公至自伐楚。  

  (传)有二事偶,则以后事致。后事小,则以先事致。其以伐楚致,大伐楚也。  

  (经四七)葬许穆公。  

  (经四八)冬,十有二月,公孙兹帅师,会齐人、宋人、卫人、郑人、许人、曹人,侵陈。  

  !僖公(经五一)五年   

  春,晋侯杀其世子申生。  

  (传)目晋侯斥杀,恶晋侯也。  

  (经五二)杞伯姬来朝其子。  

  (传)妇人既嫁,不逾竟;逾竟非正也。诸侯相见曰朝,伯姬为志乎朝其子也。伯姬为志乎朝其子,则是杞伯失夫之道矣!诸侯相见曰朝,以待人父之道待人之子,非正也。故曰「杞伯姬来朝其子」,参讥也。  

  (经五三)夏,公孙兹如牟。  

  (经五四)公及齐侯、宋公、陈侯、卫侯、郑伯、许男、曹伯,会王世子于首戴。  

  (传)及以会,尊之也。何尊焉?王世子云者,唯王之贰也。云可以重之存焉,尊之也。何重焉?天子世子世天下也。  

  (经五四)秋,八月,诸侯盟于首戴。  

  (传)无中事而复举诸侯,何也?尊王世子,而不敢与盟也。尊则其不敢与盟,何也?盟者,不相信也,故谨信也。不敢以所不信而加之尊者,桓诸侯也。不能朝天子,是不臣也。王世子,子也,块然受诸侯之尊己,而立乎其位,是不子也。桓不臣,王世子不子,则其所善焉何也?是则变之正也。天子微,诸侯不享觐。桓控大国,扶小国;统诸侯不能以朝天子,亦不敢致天王。尊王世子于首戴,乃所以尊天王之命也。世子含王命会齐桓,亦所以尊天王之命也。世子受之可乎?是亦变之正也。天子微,诸侯不享觐。世子受诸侯之尊己,而天王尊矣,世子受之可也。  

  (经五四)郑伯逃归不盟。  

  (传)以其去诸侯,故逃之也。  

  (经五五)楚人灭弦,弦子奔黄。  

  (传)弦,国也;其不日,微国也。  

  (经五六)九月戊申朔,日有食之。  

  (经五七)冬,晋人执虞公。  

  (传)执不言所于地,缊于晋也。其曰公,何也?犹曰其下执之之辞也。其犹下执之之辞,何也?晋命行乎虞民矣。虞、虢之相救,非相为赐也。今日亡虢,而明日亡虞矣!  

  !僖公(经六一)六年   

  春,王正月。  

  (经六二)夏,公会齐侯、宋公、陈侯、卫侯、曹伯伐郑,围新城。  

  (传)伐国不言围邑,此其言围,何也?病郑也。着郑伯之罪也。  

  (经六三)秋,楚人围许,诸侯遂救许。  

  (传)善救许也。  

  (经六四)冬,公至自伐郑。  

  (传)其不以救许致,何也?大伐郑也。  

  !僖公(经七一)七年   

  春,齐人伐郑。  

  (经七二)夏,小邾子来朝。  

  (经七三)郑,杀其大夫申侯。  

  (传)称国以杀大夫,杀无罪也。  

  (经七四)秋,七月,公会齐侯、宋公、陈世子款、郑世子华,盟于宁母。  

  (传)衣裳之会也。  

  (经七五)曹伯班卒。  

  (经七六)公子友如齐。  

  (经七七)冬,葬曹昭公。  

  !僖公(经八一)八年   

  春,王正月,公会王人、齐侯、宋公、卫侯、许男、曹伯、陈世子款,盟于洮。  

  (传)王人之先诸侯,何也?贵王命也。朝服虽敝,必加于上;弁冕虽旧,必加于首;周室虽衰,必先诸侯。兵车之会也。  

  (经八二)郑伯乞盟。  

  (传)以向之逃归乞之也。乞者,重辞也,重是盟也。乞者,处其所而请与也。盖汋之也。  

  (经八三)夏,狄伐晋。  

  (经八四)秋,七月,禘于太庙。用致夫人。  

  (传)用者,不宜用者也。致者,不宜致者也。言夫人必以其氏姓。言夫人而不以氏姓,非夫人也,立妾之辞也,非正也。夫人之,我可以不夫人之乎?夫人卒葬之,我可以不卒葬之乎?一则以宗庙临之而后贬焉,一则以外之弗夫人而见正焉。  

  (经八五)冬,十有二月丁未,天王崩。  

  !僖公(经九一)九年   

  春,王三月丁丑,宋公御说卒。  

  (经九二)夏,公会宰周公、齐侯、宋子、卫侯、郑伯、许男、曹伯于葵丘。  

  (传)天子之宰,通于四海,宋其称子,何也?未葬之辞也。礼:柩在堂上,孤无外事。今背殡而出会,以宋子为无哀矣!  

  (经九三)秋,七月乙酉,伯姬卒。  

  (传)内女也,未适人不卒,此何以卒也?许嫁笄而字之,死则以成人之丧治之。  

  (经九四)九月戊辰,诸侯盟于葵丘。  

  (传)桓盟不日,此何以日?美之也。为见天子之禁,故备之也。葵丘之会,陈牲而不杀,读书加于牲上,壹明天子之禁,曰:毋雍泉,毋讫籴,毋易树子,毋以妾为妻,毋使妇人与国事。  

  (经九五)甲子,晋侯诡诸卒。  

  (经九六)冬,晋里克杀其君之子奚齐。  

  (传)其君之子云者,国人不子也。国人不子,何也?不正其杀世子申生而立之也。  

  !僖公(经十一)十年   

  春,王正月,公如齐。  

  (经十二)狄灭温,温子奔卫。  

  (经十三)晋里克弒其君卓,及其大夫荀息。  

  (传)以尊及卑也,荀息闲也。  

  (经十四)夏,齐侯、许男伐北戎。  

  (经十五)晋杀其大夫里克。  

  (传)称国以杀,罪累上也。里克弒二君与一大夫,其以累上之辞言之,何也?其杀之不以其罪也。其杀之不以其罪,奈何?里克所为弒者,为重耳也。夷吾曰:「是又将杀我乎?」故杀之,不以其罪也。其为重耳弒,奈何?晋献公伐虢,得丽姬,献公私之。有二子,长曰奚齐,稚曰卓子。丽姬欲为乱,故谓君曰:「吾夜者梦夫人趋而来,曰:『吾苦畏。』胡不使大夫将卫士而卫冢乎?」公曰:「孰可使?」曰:「臣莫尊于世子,则世子可。」故君谓世子曰:「丽姬梦夫人趋而来曰『吾苦畏』,女其将卫士而往卫冢乎?」世子曰:「敬诺。」筑宫。宫成,丽姬又曰:「吾夜者梦夫人趋而来,曰:『吾苦饥。』世子之宫已成,则何为不使祠也?」故献公谓世子曰:「其祠。」世子祠。已祠,致福于君。君田而不在,丽姬以酖为酒,药脯以毒。献公田来,丽姬曰:「世子已祠。故致福于君。」君将食,丽姬跪曰:「食自外来者,不可不试也。」覆酒于地而地贲,以脯与犬,犬死。丽姬下堂而啼呼曰:「天乎!天乎!国子之国也,子何迟于为君?」君喟然叹曰:「吾与女未有过切,是何与我之深也!」使人谓世子曰:「尔其图之。」世子之傅里克谓世子曰:「入自明。入自明,则可以生;不入自明,则不可以生。」世子曰:「吾君已老矣,已昏矣。吾若此而入自明,则丽姬必死。丽姬死,则吾君不安。所以使吾君不安者,吾不若自死。吾宁自杀以安吾君。」以重耳为寄矣,刎脰而死。故里克所为弒者,为重耳也。夷吾曰:「是又将杀我也。」  

  (经十六)秋,七月。  

  (经十七)冬,大雨雪。  

  !僖公(经十一一)十有一年   

  春,晋杀其大夫丕郑父。  

  (传)称国,以杀罪累上也。  

  (经十一二)夏,公及夫人姜氏会齐侯于阳谷。  

  (经十一三)秋,八月,大雩。  

  (传)雩,月正也。雩,得雨曰雩,不得雨曰旱。  

  (经十一四)冬,楚人伐黄。  

  !僖公(经十二一)十有二年   

  春,王正月庚午,日有食之。  

  (经十二二)夏,楚人灭黄。  

  (传)贯之盟,管仲曰:「江、黄远齐而近楚,楚为利之国也。若伐而不能救,则无以宗诸侯矣!」桓公不听,遂与之盟。管仲死,楚伐江、灭黄,桓公不能救。故君子闵之也。  

  (经十二三)秋,七月。  

  (经十二四)冬,十有二月丁丑,陈侯杵臼卒。  

  !僖公(经十三一)十有三年   

  春,狄侵卫。  

  (经十三二)夏,四月,葬陈宣公。  

  (经十三三)公会齐侯、宋公、陈侯、卫侯、郑伯、许男、曹伯于咸。  

  (传)兵车之会也。  

  (经十三四)秋,九月,大雩。  

  (经十三五)冬,公子友如齐。  

  !僖公(经十四一)十有四年   

  春,诸侯城缘陵。  

  (传)其曰诸侯,散辞也。聚而曰散,何也?诸侯城,有散辞也。桓德衰矣。  

  (经十四二)夏,六月,季姬及缯子遇于防,使缯子来朝。  

  (传)遇者,同谋也。来朝者,来请己也。朝不言使,言使,非正也。以病缯子也。  

  (经十四三)秋,八月辛卯,沙鹿崩。  

  (传)林属于山为鹿。沙,山名也。无崩道而崩,故志之也。其日,重其变也。  

  (经十四四)狄侵郑。  

  (经十四五)冬,蔡侯肹卒。  

  (传)诸侯时卒,恶之也。  

  !僖公(经十五一)十有五年   

  春,王正月,公如齐。  

  (经十五二)楚人伐徐。  

  (经十五三)三月,公会齐侯、宋公、陈侯、卫侯、郑伯、许男、曹伯,盟于牡丘。  

  (传)兵车之会也。  

  (经十五三)遂次于匡。  

  (传)遂,继事也。次,止也,有畏也。  

  (经十五四)公孙敖帅师,及诸侯之大夫救徐。  

  (传)善救徐也。  

  (经十五五)夏,五月,日有食之。  

  (经十五六)秋,七月,齐师、曹师伐厉。  

  (经十五七)八月,螽。  

  (传)螽,虫灾也。甚则月,不甚则时。  

  (经十五八)九月,公至自会。  

  (经十五九)季姬归于缯。  

  (经十五十)己卯,晦,震夷伯之庙。  

  (传)晦,冥也。震,雷也。夷伯,鲁大夫也。因此以见天子至于士,皆有庙。天子七庙,诸侯五,大夫三,士二。故德厚者流光,德薄者流卑。是以贵始德之本也。始封必为祖。  

  (经十五十一)冬,宋人伐曹。  

  (经十五十二)楚人败徐于娄林。  

  (传)夷狄相败,志也。  

  (经十五十三)十有一月壬戌,晋侯及秦伯战于韩。获晋侯。  

  (传)韩之战,晋侯失民矣。以其民未败而君获也。  

  !僖公(经十六一)十有六年   

  春,王正月戊申朔,陨石于宋,五。  

  (传)先陨而后石,何也?陨而后石也。于宋,四竟之内曰宋。后数,散辞也,耳治也。  

  (经十六一)是月,六鶂退飞,过宋都。  

  (传)是月者,决不日而月也。六鶂退飞过宋都,先数,聚辞也,目治也。子曰:「石,无知之物;鶂微,有知之物。石无知,故日之;鶂微,有知之物,故月之。君子之于物,无所茍而已。石、鶂且犹尽其辞,而况于人乎!故五石六鶂之辞不设,则王道不亢矣!」民所聚曰都。  

  (经十六二)三月壬申,公子季友卒。  

  (传)大夫日卒,正也。称公弟叔仲,贤也。大夫不言公子公孙,疏之也。  

  (经十六三)夏,四月丙申,缯季姬卒。  

  (经十六四)秋,七月甲子,公孙兹卒。  

  (传)大夫日卒,正也。  

  (经十六五)冬,十有二月,公会齐侯、宋公、陈侯、卫侯、郑伯、许男、邢侯、曹伯于淮。  

  (传)兵车之会也。  

  !僖公(经十七一)十有七年   

  春,齐人、徐人伐英氏。  

  (经十七二)夏,灭项。  

  (传)孰灭之?桓公也。何以不言桓公也?为贤者讳也。项,国也,不可灭而灭之乎,桓公知项之可灭也,而不知己之不可以灭也。既灭人之国矣,何贤乎?君子恶恶疾其始,善善乐其终。桓公尝有存亡继绝之功,故君子为之讳也。  

  (经十七三)秋,夫人姜氏会齐侯于卞。九月,公至自会。  

  (经十七四)冬,十有二月乙亥,齐侯小白卒。  

  (传)此不正,其日之,何也?其不正前见矣。其不正之前见,何也?以不正入虚国,故称嫌焉尔。  

  !僖公(经十八一)十有八年   

  春,王正月,宋公、曹伯、卫人、邾人伐齐。  

  (传)非伐丧也。  

  (经十八一)夏,师救齐。  

  (传)善救齐也。  

  (经十八二)五月戊寅,宋师及齐师战于甗。齐师败绩。  

  (传)战不言伐,客不言及。言及,恶宋也。  

  (经十八二)狄救齐。  

  (传)善救齐也。  

  (经十八三)秋,八月丁亥,葬齐桓公。  

  (经十八四)冬,邢人、狄人伐卫。  

  (传)狄其称人,何也?善累而后进之。伐卫,所以救齐也。  

  !僖公(经十九一)十有九年   

  春,王三月,宋人执滕子婴齐。  

  (经十九二)夏,六月,宋公、曹人、邾人盟于曹南。  

  (经十九三)缯子会盟于邾。  

  (经十九四)己酉,邾人执缯子,用之。  

  (传)微国之君,因邾以求与之盟。人因己以求与之盟,己迎而执之--恶之,故谨而日之也。用之者,叩其鼻以衈社也。  

  (经十九五)秋,宋人围曹。  

  (经十九六)卫人伐邢。  

  (经十九七)冬,会陈人、蔡人、楚人、郑人,盟于齐。  

  (经十九八)梁亡。  

  (传)自亡也。湎于酒,淫于色,心昏,耳目塞;上无正长之治,大臣背叛,民为寇盗。梁亡,自亡也。如加力役焉,湎不足道也。梁亡,郑弃其师,我无加损焉,正名而已矣!梁亡,出恶正也。郑弃其师,恶其长也。  

  !僖公(经二十一)二十年   

  春,新作南门。  

  (传)作,为也,有加其度也。言新,有故也,非作也。南门者,法门也。  

  (经二十二)夏,郜子来朝。  

  (经二十三)五月乙巳,西宫灾。  

  (传)谓之新宫,则近为祢宫;以谥言之,则如疏之然。以是为闵宫也。  

  (经二十四)郑人入滑。  

  (经二十五)秋,齐人、狄人盟于邢。  

  (传)邢为主焉尔。邢小,其为主,何也?其为主乎救齐。  

  (经二十六)冬,楚人伐随。  

  (传)随,国也。  

  !僖公(经二一一)二十有一年   

  春,狄侵卫。  

  (经二一二)宋人、齐人、楚人盟于鹿上。  

  (经二一三)夏,大旱。  

  (传)旱时,正也。  

  (经二一四)秋,宋公、楚子、陈侯、蔡侯、郑伯、许男、曹伯会于雩,执宋公以伐宋。  

  (传)以,重辞也。  

  (经二一五)冬,公伐邾。  

  (经二一六)楚人使宜申来献捷。  

  (传)捷,军得也。其不曰宋捷,何也?不与楚捷于宋也。  

  (经二一七)十有二月癸丑,公会诸侯盟于薄。  

  (传)会者,外为主焉尔。  

  (经二一七)释宋公。  

  (传)外释不志,此其志,何也?以公之与之盟目之也。不言楚,不与楚专释也。  

  !僖公(经二二一)二十有二年   

  春,公伐邾,取须句。  

  (经二二二)夏,宋公、卫侯、许男、滕子伐郑。  

  (经二二三)秋,八月丁未,及邾人战于升陉。  

  (传)内讳败,举其可道者也。不言其人,以吾败也。不言及之者,为内讳也。  

  (经二二四)冬,十有一月己巳朔,宋公及楚人战于泓。宋师败绩。  

  (传)日事遇朔曰朔。《春秋》三十有四战,未有以尊败乎卑、以师败乎人者也。以尊败乎卑、以师败乎人,则骄其敌。襄公以师败乎人,而不骄其敌,何也?责之也。泓之战,以为复雩之耻也。雩之耻,宋襄公有以自取之。伐齐之丧,执滕子,围曹,为雩之会,不顾其力之不足,而致楚成王。成王怒而执之,故曰:礼人而不答,则反其敬;爱人而不亲,则反其仁;治人而不治,则反其知。过而不改,又之,是谓之过。襄公之谓也。古者被甲婴胄,非以兴国也,则以征无道也。岂曰以报其耻哉!宋公与楚人战于泓水之上,司马子反曰:「楚众我少,鼓险而击之,胜无幸焉!」襄公曰:「君子不推人危,不攻人厄,须其出。」既出,旌乱于上,陈乱于下。子反曰:「楚众我少,击之,胜无幸焉!」襄公曰:「不鼓不成列,须其成列而后击之。」则众败而身伤焉,七月而死。倍则攻,敌则战,少则守。人之所以为人者,言也;人而不能言,何以为人?言之所以为言也,信也;言而不信,何以为言?信之所以为信者,道也;信而不道,何以为道?道之贵者时,其行势也。  

  !僖公(经二三一)二十有三年   

  春,齐侯伐宋,围闵。  

  (传)伐国不言围邑,此其言围,何也?不正其以恶报恶也。  

  (经二三二)夏,五月庚寅,宋公兹父卒。  

  (传)兹父之不葬,何也?失民也。其失民,何也?以其不教民战,则是弃其师也。为人君而弃其师,其民孰以为君哉!  

  (经二三三)秋,楚人伐陈。  

  (经二三四)冬,十有一月,杞子卒。  

  !僖公(经二四一)二十有四年   

  春,王正月。  

  (经二四二)夏,狄伐郑。  

  (经二四三)秋,七月。  

  (经二四二)冬,天王出居于郑。  

  (传)天子无出。出,失天下也。居者,居其所也。虽失天下,莫敢有也。  

  (经二四三)晋侯夷吾卒。  

  !僖公(经二五一)二十有五年   

  春,王正月丙午,卫侯毁灭邢。  

  (传)毁之名何也?不正其伐本而灭同姓也。  

  (经二五二)夏,四月癸酉,卫侯毁卒。  

  (经二五三)宋荡伯姬来逆妇。  

  (传)妇人既嫁,不逾竟。宋荡伯姬来逆妇,非正也。其曰妇,何也?缘姑言之之辞也。  

  (经二五四)宋杀其大夫。  

  (传)其不称名姓,以其在祖之位,尊之也。  

  (经二五五)秋,楚人围陈,纳顿子于顿。  

  (传)纳者,内弗受也。围,一事也;纳,一事也;而遂言之,盖纳顿子者,陈也。  

  (经二五六)葬卫文公。  

  (经二五七)冬,十有二月癸亥,公会卫子、莒庆,盟于洮。  

  (传)莒无大夫,其曰莒庆,何也?以公之会目之也。  

  !僖公(经二六一)二十有六年   

  春,王正月己未,公会莒子、卫宁速盟于向。  

  (传)公不会大夫,其曰宁速,何也?以其随莒子可以言会也。  

  (经二六二)齐人侵我西鄙,公追齐师至巂,弗及。  

  (传)人,微者也。侵,浅事也。公之追之,非正也。至巂,急辞也。弗及者,弗与也,可以及而不敢及也。其侵也,曰人;其追也,曰师。以公之弗及,大之也。弗及,内辞也。  

  (经二六三)夏,齐人伐我北鄙。  

  (经二六四)卫人伐齐。公子遂如楚乞师。  

  (传)乞,重辞也。何重焉?重人之死也,非所乞也。师出,不必反;战,不必胜,故重之也。  

  (经二六五)秋,楚人灭夔,以夔子归。  

  (传)夔,国也。不日,微国也。以归,犹愈乎执也。  

  (经二六六)冬,楚人伐宋围闵。  

  (传)伐国不言围邑,此其言围,何也?以吾用其师、目其事也,非道用师也。  

  (经二六七)公以楚师伐齐,取谷。  

  (传)以者,不以者也。民者,君之本也。使民以其死,非其正也。  

  (经二六七)公至自伐齐。  

  (传)恶事不致,此其致之,何也?危之也。  

  !僖公(经二七一)二十有七年   

  春,杞子来朝。  

  (经二七二)夏,六月庚寅,齐侯昭卒。  

  (经二七三)秋,八月乙未,葬齐孝公。  

  (经二七四)乙巳,公子遂帅师入杞。  

  (经二七五)冬,楚人、陈侯、蔡侯、郑伯、许男围宋。  

  (传)楚人者,楚子也,其曰人,何也?人楚子,所以人诸侯也。其人诸侯,何也?不正其信夷狄而伐中国也。  

  (经二七六)十有二月甲戌,公会诸侯盟于宋。  

  !僖公(经二八一)二十有八年   

  春,晋侯侵曹。  

  (经二八二)晋侯伐卫。(传)再称晋侯,忌也。  

  (经二八三)公子买戍卫,不卒戍,刺之。  

  (传)先名后刺,杀有罪也。公子启曰:「不卒戍者,可以卒也。」可以卒而不卒,讥在公子也,刺之可也。  

  (经二八四)楚人救卫。  

  (经二八五)三月丙午,晋侯入曹,执曹伯,畀宋人。  

  (传)入者,内弗受也。日入,恶入者也。以晋侯而斥执曹伯,恶晋侯也。畀,与也。其曰人,何也?不以晋侯畀宋公也。  

  (经二八六)夏,四月己巳,晋侯、齐师、宋师、秦师,及楚人战于城濮,楚师败绩。  

  (经二八七)楚杀其大夫得臣。  

  (经二八八)卫侯出奔楚。  

  (经二八九)五月癸丑,公会晋侯、齐侯、宋公、蔡侯、郑伯、卫子、莒子,盟于践土。  

  (传)讳会天王也。  

  (经二八九)陈侯如会。  

  (传)如会,外乎会也。于会受命也。  

  (经二八十)公朝于王所。  

  (传)朝不言所;言所者,非其所也。  

  (经二八十一)六月,卫侯郑自楚复归于卫。  

  (传)自楚,楚有奉焉尔。复者,复中国也。归者,归其所也。郑之名,失国也。  

  (经二八十二)卫元咺出奔晋。  

  (经二八十三)陈侯款卒。  

  (经二八十四)秋,杞伯姬来。  

  (经二八十五)公子遂如齐。  

  (经二八十六)冬,公会晋侯、宋公、蔡侯、郑伯、陈子、莒子、邾子、秦人于温。  

  (传)讳会天王也。  

  (经二八十七)天王守于河阳。  

  (传)全天王之行也,为若将守而遇诸侯之朝也,为天王讳也。水北为阳,山南为阳。温,河阳也。  

  (经二八十八)壬申,公朝于王所。  

  (传)朝于庙,礼也;于外,非礼也。独公朝,与诸侯尽朝也。其日,以其再致天子,故谨而日之。主善以内,目恶以外。言曰公朝,逆辞也,而尊天子。会于温,言小诸侯。温,河北地,以河阳言之,大天子也。日系于月,月系于时,「壬申,公朝于王所」,其不月,失其所系也。以为晋文公之行事,为已傎矣!  

  (经二八十九)晋人执卫侯,归之于京师。  

  (传)此入而执,其不言入,何也?不外王命于卫也。归之于京师,缓辞也,断在京师也。  

  (经二八二十)卫元咺自晋复归于卫。  

  (传)自晋,晋有奉焉尔。复者,复中国也。归者,归其所也。  

  (经二八二十)诸侯遂围许。  

  (传)遂,继事也。  

  (经二八二一)曹伯襄复归于曹。  

  (传)复者,复中国也。天子免之,因与之会。其曰复,通王命也。  

  (经二八二一)遂会诸侯围许。  

  (传)遂,继事也。  

  !僖公(经二九一)二十有九年   

  春,介葛卢来。  

  (传)介,国也。葛卢,微国之君,未爵者也。其曰来,卑也。  

  (经二九二)公至自围许。  

  (经二九三)夏,六月,公会王人、晋人、宋人、齐人、陈人、蔡人、秦人,盟于翟泉。  

  (经二九四)秋,大雨雹。  

  (经二九五)冬,介葛卢来。!僖公(经三十一)三十年   

  春,王正月。  

  (经三十二)夏,狄侵齐。  

  (经三十三)秋,卫杀其大夫元咺。  

  (传)称国以杀,罪累上也,以是为讼君也。卫侯在外,其以累上之辞言之,何也?待其杀而后入也。  

  (经三十三)及公子瑕。  

  (传)公子瑕,累也,以尊及卑也。  

  (经三十四)卫侯郑归于卫。  

  (经三十五)晋人、秦人围郑。  

  (经三十六)介人侵萧。  

  (经三十七)冬,天王使宰周公来聘。  

  (传)天子之宰,通于四海。  

  (经三十七)公子遂如京师。遂如晋。  

  (传)以尊遂乎卑,此言不敢叛京师也。  

  !僖公(经三一一)三十有一年   

  春,取济西田。  

  (经三一二)公子遂如晋。  

  (经三一三)夏,四月,四卜郊。不从,乃免牲,犹三望。  

  (传)「夏,四月」,不时也。四卜,非礼也。免牲者,为之缁衣熏裳。有司玄端奉送,至于南郊。免牛亦然。乃者,亡乎人之辞也。犹者,可以已之辞也。  

  (经三一四)秋,七月。  

  (经三一五)冬,杞伯姬来求妇。  

  (传)妇人既嫁,不逾竟。杞伯姬来求妇,非正也。  

  (经三一六)狄,围卫。  

  (经三一七)十有二月,卫迁于帝丘。  

  !僖公(经三二一)三十有二年   

  春,王正月。  

  (经三二二)夏,四月己丑,郑伯捷卒。  

  (经三二三)卫人侵狄。  

  (经三二四)秋,卫人及狄盟。  

  (经三二五)冬,十有二月己卯,晋侯重耳卒。  

  !僖公(经三三一)三十有三年   

  春,王二月,秦人入滑。  

  (传)滑,国也。  

  (经三三二)齐侯使国归父来聘。  

  (经三三三)夏,四月辛巳,晋人及姜戎败秦师于殽。  

  (传)不言战而言败,何也?狄秦也。其狄之,何也?秦越千里之险,入虚国,进不能守,退败其师徒,乱人子女之教,无男女之别。秦之为狄,自殽之战始也。秦伯将袭郑,百里子与蹇叔子谏曰:「千里而袭人,未有不亡者也。」秦伯曰:「子之冢木已拱矣,何知!」师行。百里子与蹇叔子送其子而戒之曰:「女死,必于殽之岩唫之下。我将尸女于是。」师行,百里子与蹇叔子随其子而哭之。秦伯怒曰:「何为哭吾师也?」二子曰:「非敢哭师也,哭吾子也。我老矣!彼不死,则我死矣!」晋人与姜戎要而击之殽,匹马倚轮无反者。晋人者,晋子也,其曰人,何也?微之也。何为微之?不正其释殡,而主乎战也。  

  (经三三四)癸巳,葬晋文公。  

  (传)日葬,危不得葬也。  

  (经三三五)狄侵齐。  

  (经三三六)公伐邾,取訾楼。  

  (经三三七)秋,公子遂帅师伐邾。  

  (经三三八)晋人败狄于箕。  

  (经三三九)冬,十月,公如齐。十有二月,公至自齐。  

  (经三三十)乙巳,公薨于小寝。  

  (传)小寝,非正也。  

  (经三三十一)陨霜不杀草。  

  (传)未可杀而杀,举重也。可杀而不杀,举轻也。  

  (经三三十一)李、梅实。  

  (传)实之为言,犹实也。  

  (经三三十二)晋人、陈人、郑人伐许。  
  谷梁传襄公  

  !襄公(经一一)元年   

  春,王正月,公即位。  

  (传)继正即位,正也。  

  (经一二)仲孙蔑会晋栾黡、宋华元、卫宁殖、曹人、莒人、邾人、滕人、薛人,围宋彭城。  

  (传)系彭城于宋者,不与鱼石,正也。  

  (经一三)夏,晋韩厥帅师伐郑。  

  (经一四)仲孙蔑会齐崔杼、曹人、邾人、杞人,次于鄫。  

  (经一五)秋,楚公子壬夫帅师侵宋。  

  (经一六)九月辛酉,天王崩。  

  (经一七)邾子来朝。  

  (经一八)冬,卫侯使公孙剽来聘。晋侯使荀罃来聘。  

  !襄公(经二一)二年   

  春,王正月,葬简王。  

  (经二二)郑师伐宋。  

  (经二三)夏,五月庚寅,夫人姜氏薨。  

  (经二四)六月庚辰,郑伯睔卒。  

  (经二五)晋师、宋师、卫宁殖侵郑。  

  (传)其曰卫宁殖,如是而称于前事也。  

  (经二六)秋,七月,仲孙蔑会晋荀罃、宋华元、卫孙林父、曹人、邾人于戚。  

  (经二七)己丑,葬我小君齐姜。  

  (经二八)叔孙豹如宋。  

  (经二九)冬,仲孙蔑会晋荀罃、齐崔杼、宋华元、卫孙林父、曹人、邾人、滕人、薛人、小邾人于戚,遂城虎牢。  

  (传)若言中国焉,内郑也。  

  (经二十)楚杀其大夫公子申。  

  !襄公(经三一)三年   

  春,楚公子婴齐帅师伐吴。  

  (经三二)公如晋。  

  (经三三)夏,四月壬戌,公及晋侯盟于长樗。  

  (经三四)公至自晋。  

  (经三五)六月,公会单子、晋侯、宋公、卫侯、郑伯、莒子、邾子、齐世子光。己未,同盟于鸡泽。  

  (传)同者,有同也,同外楚也。  

  (经三五)陈侯使袁侨如会。  

  (传)如会,外乎会也,于会受命也。  

  (经三五)戊寅,叔孙豹及诸侯之大夫,及陈袁侨盟。  

  (传)及以及,与之也。诸侯以为可与则与之,不可与则释之。诸侯盟,又大夫相与私盟,是大夫张也。故鸡泽之会,诸侯始失正矣!大夫执国权,曰袁侨,异之也。  

  (经三五)秋,公至自会。  

  (经三六)冬,晋荀罃帅师伐许。  

  !襄公(经四一)四年   

  春,王三月己酉,陈侯午卒。  

  (经四二)夏,叔孙豹如晋。  

  (经四三)秋,七月戊子,夫人姒氏薨。  

  (经四四)葬陈成公。  

  (经四五)八月辛亥,葬我小君定姒。  

  (经四六)冬,公如晋。  

  (经四七)陈人围顿。  

  !襄公(经五一)五年   

  春,公至自晋。  

  (经五二)夏,郑伯使公子发来聘。  

  (经五三)叔孙豹、缯世子巫如晋。  

  (传)外不言如,而言如,为我事往也。  

  (经五四)仲孙蔑、卫孙林父会吴于善稻。  

  (传)吴谓善伊,谓稻缓,号从中国,名从主人。  

  (经五五)秋,大雩。  

  (经五六)楚杀其大夫公子壬夫。  

  (经五七)公会晋侯、宋公、陈侯、卫侯、郑伯、曹伯、莒子、邾子、滕子、薛伯、齐世子光、吴人、缯人于戚。公至自会。  

  (经五八)冬,戍陈。  

  (传)内辞也。  

  (经五九)楚公子贞帅师伐陈。  

  (经五十)公会晋侯、宋公、卫侯、郑伯、曹伯、莒子、邾子、滕子、薛伯、齐世子光,救陈。十有二月,公至自救陈。  

  (传)善救陈也。  

  (经五十一)辛未,季孙行父卒。  

  !襄公(经六一)六年   

  春,王三月壬午,杞伯姑容卒。  

  (经六二)夏,宋华弱来奔。  

  (经六三)秋,葬杞桓公。  

  (经六四)滕子来朝。  

  (经六五)莒人灭缯。  

  (传)非灭也。中国日,卑国月,夷狄时。缯,中国也,而时,非灭也。家有既亡,国有既灭,灭而不自知,由别之而不别也。莒人灭缯,非灭也。非立异姓以莅祭祀,灭亡之道也。  

  (经六六)冬,叔孙豹如邾。  

  (经六七)季孙宿如晋。  

  (经六八)十有二月,齐侯灭莱。  

  !襄公(经七一)七年   

  春,郯子来朝。  

  (经七二)夏,四月,三卜郊;不从,乃免牲。  

  (传)夏四月,不时也。三卜,礼也。乃者,亡乎人之辞也。  

  (经七三)小邾子来朝。  

  (经七四)城费。  

  (经七五)秋,季孙宿如卫。  

  (经七六)八月,螽。  

  (经七七)冬,十月,卫侯使孙林父来聘。壬戌,及孙林父盟。  

  (经七八)楚公子贞帅师围陈。  

  (经七九)十有二月,公会晋侯、宋公、陈侯、卫侯、曹伯、莒子、邾子于鄬。郑伯髡原如会。未见诸侯。丙戌,卒于操。  

  (传)未见诸侯,其曰如会,何也?致其志也。礼,诸侯不生名,此其生名,何也?卒之名也。卒之名,则何为加之如会之上?见以如会卒也。其见以如会卒,何也?郑伯将会中国,其臣欲从楚;不胜其臣,弒而死。其不言弒,何也?不使夷狄之民加乎中国之君也。其地,于外也;其日,未逾竟也。日卒时葬,正也。  

  (经七九)陈侯逃归。  

  (传)以其去诸侯,故逃之也。  

  !襄公(经八一)八年   

  春,王正月,公如晋。  

  (经八二)夏,葬郑僖公。  

  (经八三)郑人侵蔡,获蔡公子湿。  

  (传)人,微者也。侵,浅事也。而获公子,公子病矣!  

  (经八四)季孙宿会晋侯、郑伯、齐人、宋人、卫人、邾人于邢丘。  

  (传)见鲁之失正也。公在而大夫会也。  

  (经八五)公至自晋。  

  (经八六)莒人伐我东鄙。  

  (经八七)秋,九月,大雩。  

  (经八八)冬,楚公子贞帅师伐郑。  

  (经八九)晋侯使士丐来聘。  

  !襄公(经九一)九年   

  春,宋灾。  

  (传)外灾不志,此其志,何也?故宋也。  

  (经九二)夏,季孙宿如晋。  

  (经九三)五月辛酉,夫人姜氏薨。  

  (经九四)秋,八月癸未,葬我小君穆姜。  

  (经九五)冬,公会晋侯、宋公、卫侯、曹伯、莒子、邾子、滕子、薛伯、杞伯、小邾子、齐世子光,伐郑。十有二月,己亥,同盟于戏。  

  (传)不异郑,善得郑也。不致,耻不能据郑也。  

  (经九六)楚子伐郑。  

  !襄公(经十一)十年   

  春,公会晋侯、宋公、卫侯、曹伯、莒子、邾子、滕子、薛伯、杞伯、小邾子、齐世子光,会吴于柤。  

  (传)会又会,外之也。  

  (经十二)夏,五月甲午,遂灭傅阳。  

  (传)遂,直遂也;其曰遂何?不以中国从夷狄也。  

  (经十三)公至自会。  

  (传)会夷狄不致,恶事不致,此其致,何也?存中国也。中国有善事,则并焉;无善事,则异之存之也。汲郑伯,逃归陈侯。致柤之会,存中国也。  

  (经十四)楚子贞、郑公孙辄帅师伐宋。  

  (经十五)晋师伐秦。  

  (经十六)秋,莒人伐我东鄙。  

  (经十七)公会晋侯、宋公、卫侯、曹伯、莒子、邾子、齐世子光、滕子、薛伯、杞伯、小邾子,伐郑。  

  (经十八)冬,盗杀郑公子斐、公子发、公孙辄。  

  (传)称盗以杀大夫,弗以上下道,恶上也。  

  (经十八)戍郑虎牢。  

  (传)其曰郑虎牢,决郑乎虎牢也。  

  (经十九)楚公子贞帅师救郑。  

  (经十十)公至自伐郑。  

  !襄公(经十一一)十有一年   

  春,王正月,作三军。  

  (传)作,为也。古者天子六师,诸侯一军。作三军,非正也。  

  (经十一二)夏,四月,四卜郊。不从,乃不郊。  

  (传)夏四月,不时也。四卜,非礼也。  

  (经十一三)郑公孙舍之帅师侵宋。  

  (经十一四)公会晋侯、宋公、卫侯、曹伯、齐世子光、莒子、邾子、滕子、薛伯、杞伯、小邾子,伐郑。  

  (经十一五)秋,七月己未,同盟于京城北。  

  (经十一六)公至自伐郑。  

  (传)不以后致,盟后复伐郑也。  

  (经十一七)楚子、郑伯伐宋。  

  (经十一八)公会晋侯、宋公、卫侯、曹伯、齐世子光、莒子、邾子、滕子、薛伯、杞伯、小邾子伐郑,会于萧鱼。公至自会。  

  (传)伐而后会,不以伐郑致,得郑伯之辞也。  

  (经十一九)楚人执郑行人良霄。  

  (传)行人者,挈国之辞也。  

  (经十一十)冬,秦人伐晋。  

  !襄公(经十二一)十有二年   

  春,王三月,莒人伐我东鄙,围邰。  

  (传)伐国不言围邑,举重也;取邑不书围,安足书也。  

  (经十二二)季孙宿帅师救邰,遂入郓。  

  (传)遂,继事也。受命而救邰,不受命而入郓,恶季孙宿也。  

  (经十二三)夏,晋侯使士鲂来聘。  

  (经十二四)秋,九月,吴子乘卒。  

  (经十二五)冬,楚公子贞帅师侵宋。  

  (经十二六)公如晋。  

  !襄公(经十三一)十有三年   

  春,公至自晋。  

  (经十三二)夏,取邿。  

  (经十三三)秋,九月庚辰,楚子审卒。  

  (经十三四)冬,城防。  

  !襄公(经十四一)十有四年   

  春,王正月,季孙宿、叔老会晋士丐、齐人、宋人、卫人、郑公孙虿、曹人、莒人、邾人、滕人、薛人、杞人、小邾人,会吴于向。  

  (经十四二)二月乙未朔,日有食之。  

  (经十四三)夏,四月,叔孙豹会晋荀偃、齐人、宋人、卫北宫括、郑公孙虿、曹人、莒人、邾人、滕人、薛人、杞人、小邾人,伐秦。  

  (经十四四)己未,卫侯出奔齐。  

  (经十四五)莒人侵我东鄙。  

  (经十四六)秋,楚公子贞帅师伐吴。  

  (经十四七)冬,季孙宿会晋士丐、宋华阅、卫孙林父、郑公孙虿、莒人、邾人于戚。  

  !襄公(经十五一)十有五年   

  春,宋公使向戌来聘。二月己亥,及向戌盟于刘。  

  (经十五二)刘夏逆王后于齐。  

  (传)过我,故志之也。  

  (经十五三)夏,齐侯伐我北鄙,围成;公救成,至遇。  

  (经十五四)季孙宿、叔孙豹帅师城成郛。  

  (经十五五)秋,八月丁巳,日有食之。  

  (经十五六)邾人伐我南鄙。  

  (经十五七)冬,十有一月癸亥,晋侯周卒。  

  !襄公(经十六一)十有六年   

  春,王正月,葬晋悼公。  

  (经十六二)三月,公会晋侯、宋公、卫侯、郑伯、曹伯、莒子、邾子、薛伯、杞伯、小邾子于湨梁。戊寅,大夫盟。  

  (传)湨梁之会,诸侯失正矣!诸侯会而曰大夫盟,正在大夫也。诸侯在而不曰诸侯之大夫,大夫不臣也。  

  (经十六三)晋人执莒子、邾子以归。  

  (经十六四)齐侯伐我北鄙。  

  (经十六五)夏,公至自会。  

  (经十六五)五月甲子,地震。  

  (经十六六)叔老会郑伯、晋荀偃、卫宁殖、宋人,伐许。  

  (经十六七)秋,齐侯伐我北鄙,围成。  

  (经十六八)大雩。  

  (经十六九)冬,叔孙豹如晋。  

  !襄公(经十七一)十有七年   

  春,王二月庚午,邾子瞷卒。  

  (经十七二)宋人伐陈。  

  (经十七三)夏,卫石买帅师伐曹。  

  (经十七四)秋,齐侯伐我北鄙,围桃。齐高厚帅师伐我北鄙,围防。  

  (经十七五)九月,大雩。  

  (经十七六)宋华臣出奔陈。  

  (经十七七)冬,邾人伐我南鄙。  

  !襄公(经十八一)十有八年   

  春,白狄来。  

  (经十八二)夏,晋人执卫行人石买。  

  (传)称行人,怨接于上也。  

  (经十八三)秋,齐侯伐我北鄙。  

  (经十八四)冬,十月,公会晋侯、宋公、卫侯、郑伯、曹伯、莒子、邾子、滕子、薛伯、杞伯、小邾子,同围齐。  

  (传)非围而曰围,齐有大焉,亦有病焉。非大而足同与,诸侯同罪之也,亦病矣。  

  (经十八四)曹伯负刍卒于师。  

  (传)闵之也。  

  (经十八五)楚公子午帅师伐郑。  

  !襄公(经十九一)十有九年   

  春,王正月,诸侯盟于祝柯。  

  (经十九二)晋人执邾子。  

  (经十九三)公至自伐齐。  

  (传)《春秋》之义,已伐而盟,复伐者,则以伐致;盟不复伐者,则以会致。祝柯之盟,盟复伐齐与?曰:非也。然则何为以伐致也?曰:与人同事,或执其君,或取其地。  

  (经十九四)取邾田自漷水。  

  (传)轧辞也。其不日,恶盟也。  

  (经十九五)季孙宿如晋。  

  (经十九六)葬曹成公。  

  (经十九七)夏,卫孙林父帅师伐齐。  

  (经十九八)秋,七月,辛卯,齐侯环卒。  

  (经十九九)晋士丐帅师侵齐。至谷,闻齐侯卒,乃还。  

  (传)还者,事未毕之辞也。受命而诛,生死无所加其怒,不伐丧,善之也。善之,则何为未毕也?君不尸小事,臣不专大名。善则称君,过则称己,则民作让矣!士丐外专君命,故非之也。然则为士丐者宜奈何?宜墠帷而归命乎介。  

  (经十九十)八月丙辰,仲孙蔑卒。  

  (经十九十一)齐杀其大夫高厚。  

  (经十九十二)郑杀其大夫公子嘉。  

  (经十九十三)冬,葬齐灵公。  

  (经十九十四)城西郛。  

  (经十九十五)叔孙豹会晋士丐于柯。  

  (经十九十六)城武城。  

  !襄公(经二十一)二十年   

  春,王正月辛亥,仲孙速会莒人,盟于向。  

  (经二十二)夏,六月庚申,公会晋侯、齐侯、宋公、卫侯、郑伯、曹伯、莒子、邾子、滕子、薛伯、杞伯、小邾子,盟于澶渊。秋,公至自会。  

  (经二十三)仲孙速帅师伐邾。  

  (经二十四)蔡杀其大夫公子湿,蔡公子履出奔楚。  

  (经二十五)陈侯之弟光出奔楚。  

  (传)诸侯之尊,弟兄不得以属通。其弟云者,亲之也。亲而奔之,恶也。  

  (经二十六)叔老如齐。  

  (经二十七)冬,十月丙辰朔,日有食之。  

  (经二十八)季孙宿如宋。  

  !襄公(经二一一)二十有一年   

  春,王正月,公如晋。  

  (经二一二)邾庶其以漆闾丘来奔。  

  (传)以者,不以者也。来奔者,不言出,举其接我者也。漆闾丘不言及,小大敌也。  

  (经二一三)夏,公至自晋。  

  (经二一四)秋,晋栾盈出奔楚。  

  (经二一五)九月庚戌朔,日有食之。  

  (经二一六)冬,十月庚辰朔,日有食之。  

  (经二一七)曹伯来朝。  

  (经二一八)公会晋侯、齐侯、宋公、卫侯、郑伯、曹伯、莒子、邾子于商任。  

  (传)庚子,孔子生。  

  !襄公(经二二一)二十有二年   

  春,王正月,公至自会。  

  (经二二二)夏,四月。  

  (经二二三)秋,七月辛酉,叔老卒。  

  (经二二四)冬,公会晋侯、齐侯、宋公、卫侯、郑伯、曹伯、莒子、邾子、滕子、薛伯、杞伯、小邾子于沙随。公至自会。  

  (经二二五)楚杀其大夫公子追舒。  

  !襄公(经二三一)二十有三年   

  春,王二月癸酉朔,日有食之。  

  (经二三二)三月己巳,杞伯丐卒。  

  (经二三三)夏,邾畀我来奔。  

  (经二三四)葬杞孝公。  

  (经二三五)陈杀其大夫庆虎,及庆寅。  

  (传)称国以杀,罪累上也。及庆寅,庆寅累也。  

  (经二三五)陈侯之弟光自楚归于陈。  

  (经二三六)晋栾盈复入于晋,入于曲沃。  

  (经二三七)秋,齐侯伐卫,遂伐晋。  

  (经二三八)八月,叔孙豹帅师救晋,次于雍渝。  

  (传)言救后次,非救也。  

  (经二三九)己卯,仲孙速卒。  

  (经二三十)冬,十月乙亥,臧孙纥出奔邾。  

  (传)其日,正臧孙纥之出也。蘧伯玉曰:「不以道事其君者,其出乎!」  

  (经二三十一)晋人杀栾盈。  

  (传)恶之,弗有也。  

  (经二三十二)齐侯袭莒。  

  !襄公(经二四一)二十有四年   

  春,叔孙豹如晋。  

  (经二四二)仲孙羯帅师侵齐。  

  (经二四三)夏,楚子伐吴。  

  (经二四四)秋,七月甲子朔,日有食之,既。  

  (经二四五)齐崔杼帅师伐莒。  

  (经二四六)大水。  

  (经二四七)八月癸巳朔,日有食之。  

  (经二四八)公会晋侯、宋公、卫侯、郑伯、曹伯、莒子、邾子、滕子、薛伯、杞伯、小邾子于夷仪。  

  (经二四九)冬,楚子、蔡侯、陈侯、许男伐郑。  

  (经二四十)公至自会。  

  (经二四十一)陈针宜咎出奔楚。  

  (经二四十二)叔孙豹如京师。  

  (经二四十三)大饥。  

  (传)五谷不升为大饥。一谷不升谓之嗛,二谷不升谓之饥,三谷不升谓之馑,四谷不升谓之康,五谷不升谓之大侵。大侵之礼,君食不兼味,台榭不涂,弛侯,廷道不除,百官布而不制,鬼神祷而不祀。此大侵之礼也。  

  !襄公(经二五一)二十有五年   

  春,齐崔杼帅师伐我北鄙。  

  (经二五二)夏,五月乙亥,齐崔杼弒其君光。  

  (传)庄公失言,淫于崔氏。  

  (经二五三)公会晋侯、宋公、卫侯、郑伯、曹伯、莒子、邾子、滕子、薛伯、杞伯、小邾子于夷仪。  

  (经二五四)六月壬子,郑公孙舍之帅师入陈。  

  (经二五五)秋,八月己巳,诸侯同盟于重丘。  

  (经二五六)公至自会。  

  (经二五七)卫侯入于夷仪。  

  (经二五八)楚屈建帅师灭舒鸠。  

  (经二五九)冬,郑公孙夏帅师伐陈。  

  (经二五十)十有二月,吴子谒伐楚门于巢,卒。  

  (传)以伐楚之事门于巢,卒也。于巢者,外乎楚也。门于巢,乃伐楚也。诸侯不生名,取卒之名,加之「伐楚」之上者,见以伐楚卒也。其见以伐楚卒,何也?古者大国过小邑,小邑必饰城而请罪,礼也。吴子谒伐楚至巢,入其门,门人射吴子,有矢创,反舍而卒。古者虽有文事,必有武备。非巢之不饰城而请罪,非吴子之自轻也。  

  !襄公(经二六一)二十有六年   

  春,王二月辛卯,卫宁喜弒其君剽。  

  (传)此不正,其日何也?殖也立之,喜也君之,正也。  

  (经二六二)卫孙林父入于戚以叛。甲午,卫侯衎复归于卫。  

  (传)日归,见知弒也。  

  (经二六三)夏,晋侯使荀吴来聘。  

  (经二六四)公会晋人、郑良霄、宋人、曹人于澶渊。  

  (经二六五)秋,宋公杀其世子痤。  

  (经二六六)晋人执卫宁喜。  

  (经二六七)八月壬午,许男宁卒于楚。  

  (经二六五)冬,楚子、蔡侯、陈侯伐郑。  

  (经二六六)葬许灵公。  

  !襄公(经二七一)二十有七年   

  春,齐侯使庆封来聘。  

  (经二七二)夏,叔孙豹会晋赵武、楚屈建、蔡公孙归生、卫石恶、陈孔奂、郑良霄、许人、曹人于宋。  

  (经二七三)卫杀其大夫宁喜。  

  (传)称国以杀,罪累上也。宁喜弒君,其以累上之辞言之,何也?尝为大夫,与之涉公事矣!宁喜由君弒君,而不以弒君之罪罪之者,恶献公也。  

  (经二七三)卫侯之弟专出奔晋。  

  (传)专,喜之徒也。专之为喜之徒,何也?己虽急纳其兄,与人之臣谋弒其君,是亦弒君者也。专其曰弟,何也?专有是信者,君赂不入乎喜而杀喜,是君不直乎喜也,故出奔晋。织絇邯郸,终身不言卫。专之去,合乎《春秋》。  

  (经二七四)秋,七月辛巳,豹及诸侯之大夫盟于宋。  

  (传)湨梁之会,诸侯在而不曰诸侯之大夫,大夫不臣也。晋赵武耻之。豹云者,恭也。诸侯不在而曰诸侯之大夫,大夫臣也。其臣恭也,晋赵武为之会也。  

  (经二七五)冬,十有二月乙亥朔,日有食之。  

  !襄公(经二八一)二十有八年   

  春,无冰。  

  (经二八二)夏,卫石恶出奔晋。  

  (经二八三)邾子来朝。  

  (经二八四)秋,八月,大雩。  

  (经二八五)仲孙羯如晋。  

  (经二八六)冬,齐庆封来奔。  

  (经二八七)十有一月,公如楚。  

  (经二八八)十有二月甲寅,天王崩。  

  (经二八九)乙未,楚子昭卒。  

  !襄公(经二九一)二十有九年   

  春,王正月,公在楚。  

  (传)闵公也。  

  (经二九二)夏,五月,公至自楚。  

  (传)喜之也。致君者,殆其往;而喜其反,此致君之意义也。  

  (经二九三)庚午,卫侯衎卒。  

  (经二九四)阍弒吴子余祭。  

  (传)阍,门者也,寺人也。不称名姓,阍不得齐于人;不称其君,阍不得君其君也。礼:君不使无耻,不近刑人,不狎敌,不迩怨。贱人非所贵也,贵人非所刑也,刑人非所近也。举至贱而加之吴子,吴子近刑人也。阍弒吴子余祭,仇之也。  

  (经二九五)仲孙羯会晋荀盈、齐高止、宋华定、卫世叔仪、郑公孙段、曹人、莒人、邾人、滕人、薛人、小邾人,城杞。  

  (传)古者天子封诸侯,其地足以容其民,其民足以满城以自守也。杞危而不能自守,故诸侯之大夫,相帅以城之。此变之正也。  

  (经二九六)晋侯使士鞅来聘。  

  (经二九七)杞子来盟。  

  (经二九八)吴子使札来聘。  

  (传)吴其称子,何也?善使延陵季子,故进之也。身贤,贤也;使贤,亦贤也。延陵季子之贤,尊君也。其名,成尊于上也。  

  (经二九九)秋,七月,葬卫献公。  

  (经二九十)齐高止出奔北燕。  

  (传)其曰北燕,从史文也。  

  (经二九十一)冬,仲孙羯如晋。  

  !襄公(经三十一)三十年   

  春,王正月,楚子使薳罢来聘。  

  (经三十二)夏,四月,蔡世子般弒其君固。  

  (传)其不日,子夺父政,是谓夷之。  

  (经三十三)五月甲午,宋灾,伯姬卒。  

  (传)取卒之日,加之灾上者,见以灾卒也。其见以灾卒奈何?伯姬之舍失火,左右曰:「夫人少辟火乎?」伯姬曰:「妇人之义,傅母不在,宵不下堂。」左右又曰:「夫人少辟火乎?」伯姬曰:「妇人之义,保母不在,宵不下堂。」遂逮乎火而死。妇人以贞为行者也,伯姬之妇道尽矣!详其事,贤伯姬也。  

  (经三十四)天王杀其弟佞夫。  

  (传)传曰:诸侯且不首恶,况于天子乎!君无忍亲之义,天子、诸侯所亲者,唯长子母弟耳。天王杀其弟佞夫,甚之也!  

  (经三十四)王子瑕奔晋。  

  (经三十五)秋,七月,叔弓如宋,葬共姬。  

  (传)外夫人不书葬,此其言葬,何也?吾女也。卒灾,故隐而葬之也。  

  (经三十六)郑良霄出奔许,自许入于郑。郑人杀良霄。  

  (传)不言大夫,恶之也。  

  (经三十七)冬,十月,葬蔡景公。  

  (传)不日卒而月葬,不葬者也。卒而葬之,不忍使父失民于子也。  

  (经三十八)晋人、齐人、宋人、卫人、郑人、曹人、莒人、邾人、滕人、薛人、杞人、小邾人,会于澶渊,宋灾故。  

  (传)会不言其所为,其曰「宋灾故」,何也?不言灾故,则无以见其善也。其曰人,何也?救灾以众。何救焉?更宋之所丧财也。澶渊之会,中国不侵伐夷狄,夷狄不入中国,无侵伐八年,善之也。晋赵武、楚屈建之力也。  

  !襄公(经三一一)三十有一年   

  春,王正月。  

  (经三一二)夏,六月辛巳,公薨于楚宫。  

  (传)楚宫,非正也。  

  (经三一三)秋,九月癸巳,子野卒。  

  (传)子卒日,正也。  

  (经三一四)己亥,仲孙羯卒。  

  (经三一五)冬,十月,滕子来会葬。癸酉,葬我君襄公。  

  (经三一六)十有一月,莒人弒其君密州。  
  谷梁传宣公  

  !宣公(经一一)元年   

  春,王正月,公即位。  

  (传)继故而言即位,与闻乎故也。  

  (经一二)公子遂如齐逆女。三月,遂以夫人妇姜至自齐。  

  (传)其不言氏,丧未毕,故略之也。其曰妇,缘姑言之之辞也。遂之挈,由上致之也。  

  (经一三)夏,季孙行父如齐。  

  (经一四)晋放其大夫胥甲父于卫。  

  (传)放,犹屏也。称国以放,放无罪也。  

  (经一五)公会齐侯于平州。公子遂如齐。六月,齐人取济西田。  

  (传)内不言取,言取,授之也。以是为赂齐也。  

  (经一六)秋,邾子来朝。  

  (经一七)楚子、郑人侵陈,遂侵宋。  

  (传)遂,继事也。  

  (经一八)晋赵盾帅师救陈。  

  (传)善救陈也。  

  (经一九)宋公、陈侯、卫侯、曹伯会晋师于棐林,伐郑。  

  (传)列数诸侯而会晋赵盾,大赵盾之事也。其曰师,何也?以其大之也。于棐林地,而后伐郑,疑辞也。此其地何?则着其美也。  

  (经一十)冬,晋赵穿帅师侵崇。  

  (经一十一)晋人、宋人伐郑。  

  (传)伐郑,所以救宋也。  

  !宣公(经二一)二年   

  春,王二月,壬子,宋华元帅师,及郑公子归生帅师,战于大棘。宋师败绩,获宋华元。  

  (传)获者,不与之辞也。言尽其众,以救其将也。以三军敌华元,华元虽获,不病矣。  

  (经二二)秦师伐晋。  

  (经二三)夏,晋人、宋人、卫人、陈人侵郑。  

  (经二四)秋,九月乙丑,晋赵盾弒其君夷皋。  

  (传)穿弒也,盾不弒,而曰盾弒,何也?以罪盾也。其以罪盾,何也?曰:灵公朝诸大夫而暴弹之,观其辟丸也。赵盾入谏,不听。出亡,至于郊,赵穿弒公,而后反赵盾。史狐书贼曰:「赵盾弒公。」盾曰:「天乎!天乎!予无罪。孰为盾而忍弒其君者乎?」史狐曰:「子为正卿,入谏不听。出亡不远,君弒,反不讨贼,则志同。志同则书重,非子而谁?故书之曰『晋赵盾弒其君夷皋』者,过在下也。」曰:于盾也,见忠臣之至;于许世子止,见孝子之至。  

  (经二五)冬,十月乙亥,天王崩。  

  !宣公(经三一)三年   

  春,王正月,郊牛之口伤。  

  (传)之口,缓辞也,伤自牛作也。  

  (经三一)改卜牛,牛死,乃不郊。  

  (传)事之变也。乃者,亡乎人之辞也。  

  (经三一)犹三望。  

  (经三二)葬匡王。  

  (经三三)楚子伐陆浑戎。  

  (经三四)夏,楚人侵郑。  

  (经三五)秋,赤狄侵齐。  

  (经三六)宋师围曹。  

  (经三七)冬,十月丙戌,郑伯兰卒。  

  (经三八)葬郑穆公。  

  !宣公(经四一)四年   

  春,王正月,公及齐侯平莒及郯,莒人不肯。  

  (传)及者,内为志焉尔。平者,成也。不肯者,可以肯也。  

  (经四一)公伐莒取向。  

  (传)伐犹可,取向甚矣,莒人辞不受治也。伐莒,义兵也;取向,非也,乘义而为利也。  

  (经四二)秦伯稻卒。  

  (经四三)夏,六月乙酉,郑公子归生弒其君夷。  

  (经四四)赤狄侵齐。  

  (经四五)秋,公如齐,公至自齐。  

  (经四六)冬,楚子伐郑。  

  !宣公(经五一)五年   

  春,公如齐。  

  (经五二)夏,公至自齐。  

  (经五三)秋,九月,齐高固来逆子叔姬。  

  (传)诸侯之嫁子于大夫,主大夫以与之。来者,接内也;不正其接内,故不与夫妇之称也。  

  (经五四)叔孙得臣卒。  

  (经五五)冬,齐高固及子叔姬来。  

  (传)及者,及吾子叔姬也。为使来者,不使得归之意也。  

  (经五六)楚人伐郑。  

  !宣公(经六一)六年   

  春,晋赵盾、卫孙免侵陈。  

  (传)此帅师也,其不言帅师,何也?不正其败前事,故不与帅师也。  

  (经六二)夏,四月。  

  (经六三)秋,八月,螽。  

  (经六四)冬,十月。  

  !宣公(经七一)七年   

  春,卫侯使孙良夫来盟。  

  (传)来盟,前定也。不言及者,以国与之。不言其人,亦以国与之。不日,前定之盟不日。  

  (经七二)夏,公会齐侯伐莱。  

  (经七三)秋,公至自伐莱。  

  (经七四)大旱。  

  (经七五)冬,公会晋侯、宋公、卫侯、郑伯、曹伯于黑壤。  

  !宣公(经八一)八年   

  春,公至自会。  

  (经八二)夏,六月,公子遂如齐,至黄乃复。  

  (传)乃者,亡乎人之辞也。复者,事毕也,不专公命也。  

  (经八三)辛巳,有事于太庙。  

  (经八四)仲遂卒于垂。  

  (传)为若反命而后卒也。此公子也,其曰仲,何也?疏之也。何为疏之也?是不卒者也。不疏,则无用见其不卒也,则其卒之,何也?以讥乎宣也。其讥乎宣,何也?闻大夫之丧,则去乐卒事。  

  (经八四)壬午,犹绎。  

  (传)犹者,可以已之辞也。绎者,祭之旦日之享宾也。  

  (经八四)万入去龠。  

  (传)以其为之变,讥之也。  

  (经八五)戊子,夫人熊氏薨。  

  (经八六)晋师、白狄伐秦。  

  (经八七)楚人灭舒鄝。  

  (经八八)秋,七月甲子,日有食之,既。  

  (经八九)冬,十月己丑,葬我小君顷熊。雨不克葬。  

  (传)葬既有日,不为雨止,礼也。雨不克葬,丧不以制也。  

  (经八九)庚寅,日中而克葬。  

  (传)而,缓辞也,足乎日之辞也。  

  (经八十)城平阳。  

  (经八十一)楚师伐陈。  

  !宣公(经九一)九年   

  春,王正月,公如齐。公至自齐。  

  (经九二)夏,仲孙蔑如京师。  

  (经九三)齐侯伐莱。  

  (经九四)秋,取根牟。  

  (经九五)八月,滕子卒。  

  (经九六)九月,晋侯、宋公、卫侯、郑伯、曹伯会于扈。  

  (经九七)晋荀林父帅师伐陈。  

  (经九八)辛酉,晋侯黑臀卒于扈。  

  (传)其地于外也,其日未逾竟也。  

  (经九九)冬,十月癸酉,卫侯郑卒。宋人围滕。楚子伐郑。晋郄缺帅师救郑。  

  (经九十)陈杀其大夫泄冶。  

  (传)称国以杀其大夫,杀无罪也。泄冶之无罪如何?陈灵公通于夏征舒之家,公孙宁、仪行父,亦通其家。或衣其衣,或衷其襦,以相戏于朝。泄冶闻之,入谏曰:「使国人闻之则犹可,使仁人闻之则不可。」君愧于泄冶,不能用其言而杀之。  

  !宣公(经十一)十年   

  春,公如齐。公至自齐。齐人归我济西田。  

  (传)公娶齐,齐由以为兄弟,反之,不言来。公如齐,受之也。  

  (经十二)夏,四月丙辰,日有食之。  

  (经十三)己巳,齐侯元卒。  

  (经十四)齐崔氏出奔卫。  

  (传)氏者,举族而出之之辞也。  

  (经十五)公如齐。五月,公至自齐。  

  (经十六)癸巳,陈夏征舒弒其君平国。  

  (经十七)六月,宋师伐滕。  

  (经十八)公孙归父如齐,葬齐惠公。  

  (经十九)晋人、宋人、卫人、曹人伐郑。  

  (经十十)秋,天王使王季子来聘。  

  (传)其曰王季,王子也。其曰子,尊之也。聘,问也。  

  (经十十一)公孙归父帅师伐邾,取绎。  

  (经十十二)大水。  

  (经十十三)季孙行父如齐。  

  (经十十四)冬,公孙归父如齐。  

  (经十十五)齐侯使国佐来聘。  

  (经十十六)饥。  

  (经十十七)楚子伐郑。  

  !宣公(经十一一)十有一年   

  春,王正月。  

  (经十一二)夏,楚子、陈侯、郑伯盟于夷陵。  

  (经十一三)公孙归父会齐人伐莒。  

  (经十一四)秋,晋侯会狄于櫕函。  

  (传)不言及,外狄。  

  (经十一五)冬,十月,楚人杀陈夏征舒。  

  (传)此入而杀也,其不言入,何也?外征舒于陈也。其外征舒于陈,何也?明楚之讨有罪也。  

  (经十一五)丁亥,楚子入陈。  

  (传)入者,内弗受也。日入,恶入者也。何用弗受也?不使夷狄为中国也。  

  (经十一五)纳公孙宁、仪行父于陈。  

  (传)纳者,内弗受也。辅人之不能民而讨,犹可;入人之国,制人之上下,使不得其君臣之道,不可。  

  !宣公(经十二一)十有二年   

  春,葬陈灵公。  

  (经十二二)楚子围郑。  

  (经十二三)夏,六月乙卯,晋荀林父帅师,及楚子战于邲。晋师败绩。  

  (传)绩,功也;功,事也。日,其事败也。  

  (经十二四)秋,七月。  

  (经十二五)冬,十有二月,戊寅,楚子灭萧。  

  (经十二六)晋人、宋人、卫人、曹人同盟于清丘。  

  (经十二七)宋师伐陈。  

  (经十二八)卫人救陈。  

  !宣公(经十三一)十有三年   

  春,齐师伐莒。  

  (经十三二)夏,楚子伐宋。  

  (经十三三)秋,螽。  

  (经十三四)冬,晋杀其大夫先谷。  

  !宣公(经十四一)十有四年   

  春,卫杀其大夫孔达。  

  (经十四二)夏,五月壬申,曹伯寿卒。  

  (经十四三)晋侯伐郑。  

  (经十四四)秋,九月,楚子围宋。  

  (经十四五)葬曹文公。  

  (经十四六)冬,公孙归父会齐侯于谷。  

  !宣公(经十五一)十有五年   

  春,公孙归父会楚子于宋。  

  (经十五二)夏,五月,宋人及楚人平。  

  (传)平者,成也,善其量力而反义也。人者,众辞也。平称众,上下欲之也。外平不道,以吾人之存焉道之也。  

  (经十五三)六月,癸卯,晋师灭赤狄潞氏,以潞子婴儿归。  

  (传)灭国有三术:中国谨日,卑国月,夷狄不日。其日潞子婴儿,贤也。  

  (经十五四)秦人伐晋。  

  (经十五五)王札子杀召伯、毛伯。  

  (传)王札子者,当上之辞也。杀召伯、毛伯,不言其,何也?两下相杀也。两下相杀,不志乎《春秋》,此其志,何也?矫王命以杀之,非忿怒相杀也,故曰:以王命杀也。以王命杀,则何志焉?为天下主者,天也;继天者,君也;君之所存者,命也。为人臣而侵其君之命而用之,是不臣也;为人君而失其命,是不君也。君不君,臣不臣,此天下所以倾也。  

  (经十五六)秋,螽。  

  (经十五七)仲孙蔑会齐高固于无娄。  

  (经十五八)初税亩。  

  (传)初者,始也。古者什一,藉而不税。初税亩,非正也。古者三百步为里,名曰井田。井田者,九百亩,公田居一。私田稼不善,则非吏;公田稼不善,则非民。初税亩者,非公之去公田,而履亩十取一也,以公之与民为已悉矣!古者公田为居,井灶葱韭尽取焉。  

  (经十五九)冬,蝝生。  

  (传)蝝,非灾也。其曰蝝,非税亩之灾也。  

  (经十五十)饥。  

  !宣公(经十六一)十有六年   

  春,王正月,晋人灭赤狄甲氏,及留吁。  

  (经十六二)夏,成周宣榭灾。  

  (传)周灾,不志也;其曰宣榭,何也?以乐器之所藏目之也。  

  (经十六三)秋,郯伯姬来归。  

  (经十六四)冬,大有年。  

  (传)五谷大熟,为大有年。  

  !宣公(经十七一)十有七年   

  春,王正月庚子,许男锡我卒。  

  (经十七二)丁未,蔡侯申卒。  

  (经十七三)夏,葬许昭公。  

  (经十七四)葬蔡文公。  

  (经十七五)六月癸卯,日有食之。  

  (经十七六)己未,公会晋侯、卫侯、曹伯、邾子,同盟于断道。  

  (传)同者,有同也,同外楚也。  

  (经十七六)秋,公至自会。  

  (经十七七)冬,十有一月壬午,公弟叔肹卒。  

  (传)其曰公弟叔肹,贤之也。其贤之,何也?宣弒而非之也。非之,则胡为不去也?曰:兄弟也,何去而之?与之财,则曰:「我足矣!」织屦而食,终身不食宣公之食。君子以是为通恩也,以取贵乎《春秋》。  

  !宣公(经十八一)十有八年   

  春,晋侯、卫世子臧伐齐。  

  (经十八二)公伐杞。  

  (经十八三)夏,四月。  

  (经十八四)秋,七月,邾人戕缯子于缯。  

  (传)戕,犹残也,棁杀也。  

  (经十八五)甲戌,楚子吕卒。  

  (传)夷狄不卒;卒,少进也。卒而不日;日,少进也。日而不言正;不正,简之也。  

  (经十八六)公孙归父如晋。  

  (经十八七)冬,十月壬戌,公薨于路寝。  

  (传)正寝也。  

  (经十八八)归父还自晋。  

  (传)还者,事未毕也。自晋,事毕也。与人之子,守其父之殡。捐殡而奔其父之使者,是以奔父也。  

  (经十八八)至柽,遂奔齐。  

  (传)遂,继事也。  
谷梁传 隐公


  !隐公(经一一)元年  

  春,王正月。 

  (传)虽无事,必举正月,谨始也。公何以不言即位?成公志也。焉成之?言君之不取为公也。君之不取为公,何也?将以让桓也。让桓正乎?曰:不正。《春秋》成人之美,不成人之恶。隐不正而成之,何也?将以恶桓也。其恶桓,何也?隐将让而桓弒之,则桓恶矣;桓弒而隐让,则隐善矣。善则其不正焉,何也?《春秋》贵义而不贵惠,信道而不信邪。孝子扬父之美,不扬父之恶。先君之欲与桓,非正也,邪也;虽然,既胜其邪心以与隐矣。己探先君之邪志,而遂以与桓,则是成父之恶也。兄弟,天伦也。为子受之父,为诸侯受之君。己废天伦,而忘君父,以行小惠,曰小道也。若隐者,可谓轻千乘之国。蹈道,则未也。 

  (经一二)三月,公及邾娄仪父盟于眛。 

  (传)及者何?内为志焉尔。仪,字也。父,犹傅也,男子之美称也。其不言邾子,何也?邾之上古微,未爵命于周也。不日,其盟渝也。眛,地名也。 

  (经一三)夏,五月,郑伯克段于鄢。 

  (传)克者何?能也。何能也?能杀也。何以不言杀?见段之有徒众也。段,郑伯弟也。何以知其为弟也?杀世子母弟目君,以其目君,知其为弟也。段,弟也,而弗谓弟;公子也,而弗谓公子--贬之也。段失子弟之道矣,贱段而甚郑伯也。何甚乎郑伯?甚郑伯之处心积虑,成于杀也。于鄢,远也,犹曰取之其母之怀中而杀之云尔,甚之也。然则为郑伯者宜奈何?缓追逸贼,亲亲之道也。 

  (经一四)秋,七月,天王使宰咺来归惠公仲子之赗。 

  (传)母以子氏,仲子者何?惠公之母、孝公之妾也。礼,赗人之母则可,赗人之妾则不可。君子以其可辞受之,其志,不及事也。赗者,何也?乘马曰赗,衣衾曰襚,贝玉曰含,钱财曰赙。 

  (经一五)九月,及宋人盟于宿。 

  (传)及者何?内卑者也。宋人,外卑者也。卑者之盟不日。宿,邑名也。 

  (经一六)冬,十有二月,祭伯来。 

  (传)来者,来朝也,其弗谓朝,何也?寰内诸侯,非有天子之命,不得出会诸侯,不正其外交,故弗与朝也。聘弓鍭矢,不出竟埸。束修之肉,不行竟中。有至尊者,不贰之也。 

  (经一七)公子益师卒。 

  (传)大夫日卒,正也;不日卒,恶也。 

  !隐公(经二一)二年  

  春,公会戎于潜。 

  (传)会者,外为主焉尔。知者虑,义者行,仁者守。有此三者,然后可以出会。会戎,危公也。 

  (经二二)夏,五月,莒人入向。 

  (传)入者,内弗受也。向,我邑也。 

  (经二三)无侅帅师入极。 

  (传)入者,内弗受也。极,国也。茍焉以入,人为志者,人亦入之矣。不称氏者,灭同姓,贬也。 

  (经二四)秋,八月庚辰,公及戎盟于唐。 

  (经二五)九月,纪履緰来逆女。 

  (传)逆女,亲者也。使大夫,非正也。以国氏者,为其来交接于我,故君子进之也。 

  (经二六)冬,十月,伯姬归于纪。 

  (传)礼:妇人谓嫁曰归,反曰来归,从人者也。妇人在家,制于父;既嫁,制于夫;夫死,从长子。妇人不专行,必有从也。伯姬归于纪,此其如专行之辞,何也?曰:非专行也。吾伯姬归于纪,故志之也。其不言使,何也?逆之道微,无足道焉尔。 

  (经二七)纪子伯、莒子盟于密。 

  (传)或曰纪子伯、莒子而与之盟,或曰年同爵同,故纪子以伯先也。 

  (经二八)十有二月乙卯,夫人子氏薨。 

  (传)夫人薨,不地。夫人者,隐之妻也。卒而不书葬,夫人之义,从君者也。 

  (经二九)郑人伐卫。 

  !隐公(经三一)三年  

  春,王二月己巳,日有食之。 

  (传)言日不言朔。食,晦日也。其日有食之,何也?吐者外壤,食者内壤;阙然不见其壤,有食之者也。有,内辞也,或外辞也。有食之者,内于日也。其不言食之者,何也?知其不可知,知也。 

  (经三二)三月庚戌,天王崩。 

  (传)高曰崩,厚曰崩,尊曰崩。天子之崩,以尊也。其崩之,何也?以其在民上,故崩之。其不名,何也?大上,故不名也。 

  (经三三)夏,四月辛卯,尹氏卒。 

  (传)尹氏者,何也?天子之大夫也。外大夫不卒,此何以卒之也?于天子之崩为鲁主,故隐而卒之。 

  (经三四)秋,武氏子来求赙。 

  (传)武氏子者,何也?天子之大夫也。天子之大夫,其称武氏子,何也?未毕丧,孤未爵;未爵使之,非正也。其不言使,何也?无君也。归死者曰赗,归生者曰赙。曰归之者,正也;求之者,非正也。周虽不求,鲁不可以不归;鲁虽不归,周不可以求之。求之为言,得不得,未可知之辞也。交讥之。 

  (经三五)八月庚辰,宋公和卒。 

  (传)诸侯日卒,正也。 

  (经三六)冬,十有二月,齐侯、郑伯盟于石门。癸未,葬宋缪公。 

  (传)日葬,故也;危不得葬也。 

  !隐公(经四一)四年  

  春,王二月,莒人伐杞,取牟娄。 

  (传)传曰:言伐言取,所恶也。诸侯相伐、取地于是始。故谨而志之也。 

  (经四二)戊申,卫祝吁弒其君完。 

  (传)大夫弒其君,以国氏者,嫌也。弒而代之也。 

  (经四三)夏,公及宋公遇于清。 

  (传)及者,内为志焉尔。遇者,志相得也。 

  (经四四)宋公、陈侯、蔡人、卫人伐郑。 

  (经四五)秋,翚帅师会宋公、陈侯、蔡人、卫人伐郑。 

  (传)翚者,何也?公子翚也。其不称公子,何也?贬之也。何为贬之也?与于弒公,故贬也。 

  (经四六)九月,卫人杀祝吁于濮。 

  (传)称人以杀,杀有罪也。祝吁之挈,失嫌也。其月,谨之也。于濮者,讥失贼也。 

  (经四七)冬,十有二月,卫人立晋。 

  (传)卫人者,众辞也。立者不宜立也。晋之名恶也,其称人以立之,何也?得众也,得众则是贤也。贤则其曰不宜立,何也?《春秋》之义:诸侯与正而不与贤也。 

  !隐公(经五一)五年  

  春,公观鱼于棠。 

  (传)传曰:常事曰事,非常曰观。礼:尊不亲小事,卑不尸大功。鱼,卑者之事也,公观之,非正也。 

  (经五二)夏,四月,葬卫桓公。 

  (传)月葬,故也。 

  (经五三)秋,卫师入郕。 

  (传)入者,内弗受也。郕,国也。将卑师众曰师。 

  (经五四)九月,考仲子之宫。 

  (传)考者,何也?考者,成之也,成之为夫人也。礼:庶子为君。为其母筑宫,使公子主其祭也。于子祭,于孙止。仲子者,惠公之母,隐孙而修之,非隐也。 

  (经五五)初献六羽。 

  (传)初,始也。谷梁子曰:「舞《夏》,天子八佾,诸公六佾,诸侯四佾。初献六羽,始僭乐矣。」尸子曰:「舞《夏》,自天子至诸侯,皆用八佾。初献六羽,始厉乐矣。」 

  (经五六)邾人、郑人伐宋。 

  (经五七)螟。 

  (传)虫灾也。甚则月,不甚则时。 

  (经五八)冬,十有二月辛巳,公子彄卒。 

  (传)隐不爵命大夫,其曰公子彄,何也?先君之大夫也。 

  (经五九)宋人伐郑,围长葛。 

  (传)伐国不言围邑,此其言围,何也?久之也。伐不逾时,战不逐奔,诛不填服。苞人民、殴牛马,曰侵;斩树木、坏宫室,曰伐。 

  隠公(经六一)六年  

  春,郑人来输平。 

  (传)输者,堕也。平之为言,以道成也。来输平者,不果成也。 

  (经六二)夏,五月辛酉,公会齐侯,盟于艾。 

  (经六三)秋,七月。 

  (经六四)冬,宋人取长葛。 

  (传)外取邑不志,此其志,何也?久之也。 

  !隐公(经七一)七年  

  春,王三月,叔姬归于纪。 

  (传)其不言逆,何也?逆之道微,无足道焉尔。 

  (经七二)滕侯卒。 

  (传)滕侯无名,少曰世子,长曰君--狄道也,其不正者名也。 

  (经七三)夏,城中丘。 

  (传)城,为保民为之也。民众城小,则益城。益城无极。凡城之志,皆讥也。 

  (经七四)齐侯使其弟年来聘。 

  (传)诸侯之尊,弟兄不得以属通。其弟云者,以其来接于我,举其贵者也。 

  (经七五)秋,公伐邾。 

  (经七六)冬,天王使凡伯来聘,戎伐凡伯于楚丘以归。 

  (传)凡伯者,何也?天子之大夫也。国而曰伐,此一人而曰伐,何也?大天子之命也。戎者,卫也;戎卫者,为其伐天子之使,贬而戎之也。楚丘,卫之邑也。以归,犹愈乎执也。 

  !隐公(经八一)八年  

  春,宋公、卫侯遇于垂。 

  (传)不期而会曰遇。遇者,志相得也。 

  (经八二)三月,郑伯使宛来归邴。 

  (传)名宛,所以贬郑伯,恶与地也。 

  (经八三)庚寅,我入邴。 

  (传)入者,内弗受也。日入,恶入者也。邴者,郑伯所受命于天子,而祭泰山之邑也。 

  (经八四)夏,六月己亥,蔡侯考父卒。 

  (传)诸侯日卒,正也。 

  (经八五)辛亥,宿男卒。 

  (传)宿,微国也。未能同盟,故男卒也。 

  (经八六)秋,七月庚午,宋公、齐侯、卫侯盟于瓦屋。 

  (传)外盟不日,此其日,何也?诸侯之参盟于是始,故谨而日之也。诰誓不及五帝,盟诅不及三王,交质子不及二伯。 

  (经八七)八月,葬蔡宣公。 

  (传)月葬,故也。 

  (经八八)九月辛卯,公及莒人盟于包来。 

  (传)可言公及人,不可言公及大夫。(经八九)螟。 

  (经八十)冬,十有二月,无侅卒。 

  (传)无侅之名,未有闻焉。或曰隐不爵大夫也,或说曰故贬之也。 

  !隐公(经九一)九年  

  春,天王使南季来聘。 

  (传)南,氏姓也。季,字也。聘,问也。聘诸侯,非正也。 

  (经九二)三月癸酉,大雨,震电。 

  (传)震,雷也。电,霆也。 

  (经九三)庚辰,大雨雪。 

  (传)志疏数也。八日之间,再有大变,阴阳错行,故谨而日之也。雨月,志正也。 

  (经九四)侠卒。 

  (传)侠者,所侠也。弗大夫者,隐不爵大夫也。隐之不爵大夫,何也?曰:不成为君也。 

  (经九五)夏,城郎。 

  (经九六)秋,七月。 

  (传)无事焉,何以书?不遗时也。 

  (经九七)冬,公会齐侯于防。 

  (传)会者,外为主焉尔。 

  !隐公(经十一)十年  

  春,王二月,公会齐侯、郑伯于中丘。 

  (经十二)夏,翚帅师会齐人、郑人伐宋。 

  (经十三)六月壬戌,公败宋师于菅。 

  (传)内不言战,举其大者也。 

  (经十四)辛未取郜,辛巳取防。 

  (传)取邑不日,此其日,何也?不正其乘败人而深为利,取二邑,故谨而日之也。 

  (经十五)秋,宋人、卫人入郑。 

  (经十六)宋人、蔡人、卫人伐载,郑伯伐取之。 

  (传)不正其因人之力而易取之,故主其事也。 

  (经十七)冬,十月壬午,齐人、郑人入郕。 

  (传)入者,内弗受也。日入,恶入者也。郕,国也。 

  !隐公(经十八)十有一年 

  春,滕侯、薛侯来朝。 

  (传)天子无事,诸侯相朝,正也。考礼修德,所以尊天子也。诸侯来朝,时正也。特言,同时也。累数,皆至也。 

  (经十九)夏,五月,公会郑伯于时来。 

  (经十十)秋,七月壬午,公及齐侯、郑伯入许。 

  (经十十一)冬,十有一月壬辰,公薨。 

  (传)公薨不地,故也。隐之,不忍地也。其不言葬,何也?君弒贼不讨,不书葬,以罪下也。隐十年无正,隐不自正也;元年有正,所以正隐也。 

 
  谷梁传昭公  

  !昭公(经一一)元年   

  春,王正月,公即位。  

  (传)继正即位,正也。  

  (经一二)叔孙豹会晋赵武、楚公子围、齐国弱、宋向戌、卫齐恶、陈公子招、蔡公孙归生、郑罕虎、许人、曹人于郭。三月,取郓。  

  (经一三)夏,秦伯之弟针出奔晋。  

  (传)诸侯之尊,弟兄不得以属通。其弟云者,亲之也。亲而奔之,恶也。  

  (经一四)六月丁巳,邾子华卒。  

  (经一五)晋荀吴帅师,败狄于太原。  

  (传)传曰:中国曰太原,夷狄曰太卤。号从中国,名从主人。  

  (经一六)秋,莒去疾自齐入于莒。  

  (经一七)莒展出奔吴。  

  (经一八)叔弓帅师疆郓田。  

  (传)疆之为言犹竟也。  

  (经一九)葬邾悼公。  

  (经一十)冬,十有一月己酉,楚子卷卒。  

  (经一十一)楚公子比出奔晋。  

  !昭公(经二一)二年   

  春,晋侯使韩起来聘。  

  (经二二)夏,叔弓如晋。  

  (经二三)秋,郑杀其大夫公孙黑。  

  (经二四)冬,公如晋,至河乃复。  

  (传)耻如晋,故着有疾也。  

  (经二四)季孙宿如晋。  

  (传)公如晋而不得入,季孙宿如晋而得入,恶季孙宿也。  

  !昭公(经三一)三年   

  春,王正月丁未,滕子原卒。  

  (经三二)夏,叔弓如滕。五月,葬滕成公。  

  (经三三)秋,小邾子来朝。  

  (经三四)八月,大雩。  

  (经三五)冬,大雨雹。  

  (经三六)北燕伯款出奔齐。  

  (传)其曰北燕,从史文也。  

  !昭公(经四一)四年   

  春,王正月,大雨雪。  

  (经四二)夏,楚子、蔡侯、陈侯、郑伯、许男、徐子、滕子、顿子、胡子、沉子、小邾子、宋世子佐、淮夷会于申。楚人执徐子。  

  (经四三)秋,七月,楚子、蔡侯、陈侯、许男、顿子、胡子、沉子、淮夷伐吴。执齐庆封杀之。  

  (传)此入而杀,其不言入,何也?庆封封乎吴钟离。其不言伐钟离,何也?不与吴封也。庆封其以齐氏,何也?为齐讨也。灵王使人以庆封令于军中曰:「有若齐庆封弒其君者乎?」庆封曰:「子一息,我亦且一言,曰:『有若楚公子围弒其兄之子,而代之为君者乎?』」军人粲然皆笑。庆封弒其君,而不以弒君之罪罪之者,庆封不为灵王服也,不与楚讨也。《春秋》之义,用贵治贱,用贤治不肖,不以乱治乱也。孔子曰:「怀恶而讨,虽死不服,其斯之谓与?」(经四三)遂灭厉。(传)遂,继事也。  

  (经四四)九月,居缯。  

  (经四四)冬,十有二月乙卯,叔孙豹卒。  

  !昭公(经五一)五年   

  春,王正月,舍中军。  

  (传)贵复正也。  

  (经五二)楚杀其大夫屈申。  

  (经五三)公如晋。  

  (经五四)夏,莒牟夷以牟娄及防兹来奔。  

  (传)以者,不以者也。来奔者,不言出。及防兹,以大及小也。莒无大夫,其曰牟夷,何也?以其地来也。以地来,则何以书也?重地也。  

  (经五五)秋,七月,公至自晋。  

  (经五六)戊辰,叔弓帅师,败莒师于贲泉。  

  (传)狄人谓贲泉失台,号从中国,名从主人。  

  (经五七)秦伯卒。  

  (经五八)冬,楚子、蔡侯、陈侯、许男、顿子、沈子、徐人、越人伐吴。  

  !昭公(经六一)六年   

  春,王正月,杞伯益姑卒。  

  (经六二)葬秦景公。  

  (经六三)夏,季孙宿如晋。  

  (经六四)葬杞文公。  

  (经六五)宋华合比出奔卫。  

  (经六六)秋,九月,大雩。  

  (经六七)楚薳罢帅师伐吴。  

  (经六八)冬,叔弓如楚。  

  (经六九)齐侯伐北燕。  

  !昭公(经七一)七年   

  春,王正月,暨齐平。  

  (传)平者,成也。暨,犹暨暨也。暨者,不得已也。以外及内曰暨。  

  (经七二)三月,公如楚。  

  (经七三)叔孙婼如齐莅盟。  

  (传)莅,位也。内之前定之辞谓之莅,外之前定之辞谓之来。  

  (经七四)夏,四月甲辰朔,日有食之。  

  (经七五)秋,八月戊辰,卫侯恶卒。  

  (传)乡曰卫齐恶,今曰卫侯恶,此何为君臣同名也?君子不夺人名,不夺人亲之所名,重其所以来也。王父名子也。  

  (经七六)九月,公至自楚。  

  (经七七)冬,十有一月癸未,季孙宿卒。十有二月癸亥,葬卫襄公。  

  !昭公(经八一)八年   

  春,陈侯之弟招杀陈世子偃师。  

  (传)乡曰陈公子招,今曰陈侯之弟招,何也?曰:尽其亲,所以恶招也。两下相杀,不志乎《春秋》,此其志,何也?世子云者,唯君之贰也。云可以重之存焉志之也。诸侯之尊兄弟不得以属通,其弟云者,亲之也。亲而杀之,恶也。  

  (经八二)夏,四月辛丑,陈侯溺卒。  

  (经八三)叔弓如晋。  

  (经八四)楚人执陈行人干征师,杀之。  

  (传)称人以执大夫,执有罪也。称行人,怨接于上也。  

  (经八四)陈公子留出奔郑。  

  (经八五)秋,搜于红。  

  (传)正也。因搜狩以习用武事,礼之大者也。艾兰以为防,置旃以为辕门,以葛覆质以为槷。流旁握,御轚者不得入。车轨尘,马候蹄,揜禽旅,御者不失其驰,然后射者能中。过防弗逐,不从奔之道也。面伤不献,不成禽不献。禽虽多,天子取三十焉,其余与士众。以习射于射宫,射而中,田不得禽,则得禽;田得禽而射不中,则不得禽。是以知古之贵仁义,而贱勇力也。  

  (经八六)陈人杀其大夫公子过。  

  (经八七)大雩。  

  (经八八)冬,十月壬午,楚师灭陈,执陈公子招,放之于越。杀陈孔奂。  

  (传)恶楚子也。  

  (经八八)葬陈哀公。  

  (传)不与楚灭,闵公也。  

  !昭公(经九一)九年   

  春,叔弓会楚子于陈。  

  (经九二)许迁于夷。  

  (经九三)夏,四月,陈火。  

  (传)国曰灾,邑曰火。火不志,此何以志?闵陈而存之也。  

  (经九四)秋,仲孙貜如齐。  

  (经九五)冬,筑郎囿。  

  !昭公(经十一)十年   

  春,王正月。  

  (经十二)夏,齐栾施来奔。  

  (经十三)秋,七月,季孙意如、叔弓、仲孙貜帅师伐莒。  

  (经十四)戊子,晋侯彪卒。  

  (经十五)九月,叔孙貜如晋。  

  (经十六)葬晋平公。  

  (经十七)十有二月甲子,宋公成卒。  

  !昭公(经十一一)十有一年   

  春,王二月,叔弓如宋,葬宋平公。  

  (经十一二)夏,四月丁巳,楚子虔诱蔡侯般,杀之于申。  

  (传)何为名之也?夷狄之君,诱中国之君而杀之,故谨而名之也。称时、称月、称日、称地,谨之也。  

  (经十一三)楚公子弃疾帅师围蔡。  

  (经十一四)五月甲申,夫人归氏薨。  

  (经十一五)大搜于比蒲。  

  (经十一六)仲孙貜会邾子,盟于祲祥。  

  (经十一七)秋,季孙意如会晋韩起、齐国弱、宋华亥、卫北宫佗、郑罕虎、曹人、杞人于厥慭。  

  (经十一八)九月己亥,葬我小君齐归。  

  (经十一九)冬,十有一月丁酉,楚师灭蔡,执蔡世子友以归,用之。  

  (传)此子也,其曰世子,何也?不与楚杀也。一事注乎志,所以恶楚子也。  

  !昭公(经十二一)十有二年   

  春,齐高偃帅师,纳北燕伯于阳。  

  (传)纳者,内不受也。燕伯之不名,何也?不以高偃挈燕伯也。  

  (经十二二)三月壬申,郑伯嘉卒。  

  (经十二三)夏,宋公使华定来聘。  

  (经十二四)公如晋。至河,乃复。  

  (传)季孙氏不使遂乎晋也。  

  (经十二五)五月,葬郑简公。  

  (经十二六)楚杀其大夫成虎。  

  (经十二七)秋,七月。  

  (经十二八)冬,十月,公子慭出奔齐。  

  (经十二九)楚子伐徐。  

  (经十二十)晋伐鲜虞。  

  (传)其曰晋,狄之也。其狄之,何也?不正其与夷狄交伐中国,故狄称之也。  

  !昭公(经十三一)十有三年   

  春,叔弓帅师围费。  

  (经十三二)夏,四月,楚公子比自晋归于楚,弒其君虔于干溪。  

  (传)自晋,晋有奉焉尔。归而弒,不言归,言归非弒也。归一事也,弒一事也,而遂言之,以比之归弒,比不弒也。弒君者日;不日,比不弒也。  

  (经十三二)楚公子弃疾杀公子比。  

  (传)当上之辞也。当上之辞者,谓不称人以杀,乃以君杀之也。讨贼以当上之辞,杀非弒也。比之不弒有四。取国者称国以弒,楚公子弃疾杀公子比,比不嫌也。《春秋》不以嫌代嫌,弃疾主其事,故嫌也。  

  (经十三三)秋,公会刘子、晋侯、齐侯、宋公、卫侯、郑伯、曹伯、莒子、邾子、滕子、薛伯、杞伯、小邾子于平丘。  

  (经十三四)八月申戌,同盟于平丘。公不与盟。  

  (传)同者,有同也,同外楚也。公不与盟者,可以与而不与,讥在公也。其日,善是盟也。  

  (经十三四)晋人执季孙意如以归。公至自会。  

  (经十三五)蔡侯庐归于蔡。陈侯吴归于陈。  

  (传)善其成之会而归之,故谨而日之。此未尝有国也,使如失国辞然者,不与楚灭也。  

  (经十三六)冬,十月,葬蔡灵公。  

  (传)变之不葬有三:失德不葬,弒君不葬,灭国不葬。然且葬之,不与楚灭,且成诸侯之事也。  

  (经十三七)公如晋,至河乃复。  

  (经十三八)吴灭州来。  

  !昭公(经十四一)十有四年   

  春,意如至自晋。  

  (传)大夫执则致,致则名,意如恶,然而致,见君臣之礼也。  

  (经十四二)三月,曹伯滕卒。  

  (经十四三)夏,四月。  

  (经十四四)秋,葬曹武公。  

  (经十四五)八月,莒子去疾卒。  

  (经十四六)冬,莒杀其公子意恢。  

  (传)言公子而不言大夫,莒无大夫也。莒无大夫而曰公子意恢,意恢贤也。曹、莒皆无大夫,其所以无大夫者,其义异也。  

  !昭公(经十五一)十有五年   

  春,王正月,吴子夷末卒。  

  (经十五二)二月癸酉,有事于武宫,龠入叔弓卒,去乐卒事。  

  (传)君在祭乐之中,闻大夫之丧,则去乐卒事,礼也。君在祭乐之中,大夫有变以闻可乎。大夫,国体也。古之人重死,君命无所不通。  

  (经十五三)夏,蔡朝吴出奔郑。  

  (经十五四)六月丁巳朔,日有食之。  

  (经十五五)秋,晋荀吴帅师伐鲜虞。  

  (经十五六)冬,公如晋。  

  !昭公(经十六一)十有六年   

  春,齐侯伐徐。楚子诱戎蛮子杀之。夏,公至自晋。  

  (经十六二)秋,八月己亥,晋侯夷卒。  

  (经十六三)九月,大雩。  

  (经十六四)季孙意如如晋。  

  (经十六五)冬,十月,葬晋昭公。  

  !昭公(经十七一)十有七年   

  春,小邾子来朝。  

  (经十七二)夏,六月甲戌朔,日有食之。  

  (经十七三)秋,郯子来朝。  

  (经十七四)八月,晋荀吴帅师灭陆浑戎。  

  (经十七五)冬,有星孛于大辰。  

  (传)一有一亡曰有。于大辰者,滥于大辰也。  

  (经十七六)楚人及吴战于长岸。  

  (传)两夷狄曰败,中国与夷狄亦曰败。楚人及吴战于长岸,进楚子,故曰战。  

  !昭公(经十八一)十有八年   

  春,王三月,曹伯须卒。  

  (经十八二)夏,五月壬午,宋、卫、陈、郑灾。  

  (传)其志,以同日也;其日,亦以同日也。或曰,人有谓郑子产曰:「某日有灾。」子产曰:「天者神,子恶知之?是人也。」同日为四国灾也。  

  (经十八三)六月,邾人入鄅。  

  (经十八四)秋,葬曹平公。  

  (经十八五)冬,许迁于白羽。  

  !昭公(经十九一)十有九年   

  春,宋公伐邾。  

  (经十九二)夏,五月戊辰,许世子止弒其君买。  

  (传)日弒,正卒也。正卒,则止不弒也。不弒而曰弒,责止也。止曰:「我与夫弒者,不立乎其位。」以与其弟虺。哭泣歠飦粥,嗌不容粒。未逾年而死,故君子即止自责而责之也。  

  (经十九三)己卯,地震。  

  (经十九四)秋,齐高发帅师伐莒。  

  (经十九五)冬,葬许悼公。  

  (传)日卒时葬,不使止为弒父也。曰:子既生,不免乎水火,母之罪也。羁贯成童,不就师傅,父之罪也。就师学问无方,心志不通,身之罪也。心志既通,而名誉不闻,友之罪也。名誉既闻,有司不举,有司之罪也。有司举之,王者不用,王者之过也。许世子不知尝药,累及许君也。  

  !昭公(经二十一)二十年   

  春,王正月。  

  (经二十二)夏,曹公孙会自梦出奔宋。  

  (传)自梦者,专乎梦也。曹无大夫,其曰公孙,何也?言其以贵取之,而不以叛也。  

  (经二十三)秋,盗杀卫侯之兄辄。  

  (传)盗贱也。其曰兄,母兄也。目卫侯,卫侯累也。然则何为不为君也?曰:有天疾者,不得入乎宗庙。辄者,何也?曰:两足不能相过,齐谓之綦,楚谓之踂,卫谓之辄。  

  (经二十四)冬,十月,宋华亥、向宁、华定出奔陈。  

  (经二十五)十有一月辛卯,蔡侯庐卒。  

  !昭公(经二一一)二十有一年   

  春,王三月,葬蔡平公。  

  (经二一二)夏,晋侯使士鞅来聘。  

  (经二一三)宋华亥、向宁、华定自陈入于宋南里以叛。  

  (传)自陈,陈有奉焉尔。入者,内弗受也。其曰宋南里,宋之南鄙也。以者,不以者也。叛,直叛也。  

  (经二一四)秋,七月壬午朔,日有食之。  

  (经二一五)八月乙亥,叔辄卒。  

  (经二一六)冬,蔡侯东出奔楚。  

  (传)东者,东国也。何为谓之东也?王父诱而杀焉,父执而用焉。奔而又奔之。曰东,恶之而贬之也。  

  (经二一七)公如晋,至河乃复。  

  !昭公(经二二一)二十有二年   

  春,齐侯伐莒。  

  (经二二二)宋华亥、向宁、华定自宋南里出奔楚。  

  (传)自宋南里者,专也。  

  (经二二三)大搜于昌间。  

  (传)秋而曰搜,此春也,其曰搜,何也?以搜事也。  

  (经二二四)夏,四月乙丑,天王崩。  

  (经二二五)六月,叔鞅如京师,葬景王。  

  (经二二六)王室乱。  

  (传)乱之为言,事未有所成也。  

  (经二二七)刘子、单子以王猛居于皇。  

  (传)以者,不以者也。王猛,嫌也。  

  (经二二八)秋,刘子、单子以王猛入于王城。  

  (传)以者,不以者也。入者,内弗受也。  

  (经二二九)冬,十月,王子猛卒。  

  (传)此不卒者也。其曰卒,失嫌也。  

  (经二二十)十有二月癸酉朔,日有食之。  

  !昭公(经二三一)二十有三年   

  春,王正月,叔孙婼如晋。  

  (经二三二)癸丑,叔鞅卒。  

  (经二三三)晋人执我行人叔孙婼。  

  (经二三四)晋人围郊。  

  (经二三五)夏,六月,蔡侯东国卒于楚。  

  (经二三六)秋,七月,莒子庚舆来奔。  

  (经二三七)戊辰,吴败顿、胡、沈、蔡、陈、许之师于鸡甫。胡子髡、沉子盈灭。  

  (传)中国不言败,此其言败,何也?中国不败,胡子髡、沉子盈,其灭乎?其言败,释其灭也。  

  (经二三七)获陈夏啮。  

  (传)获者,非与之辞也,上下之称也。  

  (经二三八)天王居于狄泉。  

  (传)始王也。其曰天王,因其居而王之也。  

  (经二三九)尹氏立王子朝。  

  (传)立者,不宜立者也。朝之不名,何也?别嫌乎尹氏之朝也。  

  (经二三十)八月乙未,地震。  

  (经二三十一)冬,公如晋。至河,公有疾,乃复。  

  (传)疾不志,此其志,何也?释不得入乎晋也。  

  !昭公(经二四一)二十有四年   

  春,王二月丙戌,仲孙貜卒。  

  (经二四二)婼至自晋。  

  (传)大夫执则致,致则挈。由上致之也。  

  (经二四三)夏,五月乙未朔,日有食之。  

  (经二四四)秋,八月,大雩。  

  (经二四五)丁酉,杞伯郁厘卒。  

  (经二四六)冬,吴灭巢。葬杞平公。  

  !昭公(经二五一)二十有五年   

  春,叔孙嫟如宋。  

  (经二五二)夏,叔倪会晋赵鞅、宋乐大心、卫北宫喜、郑游吉、曹人、邾人、滕人、薛人、小邾人于黄父。  

  (经二五三)有鸲鹆来巢。  

  (传)一有一亡曰有。来者,来中国也。鸲鹆穴者而曰巢,或曰增之也。  

  (经二五四)秋,七月上辛,大雩。季辛,又雩。  

  (传)季者,有中之辞也。又,有继之辞也。  

  (经二五五)九月乙亥,公孙于齐。  

  (传)孙之为言犹孙也。讳奔也。  

  (经二五五)次于阳州。  

  (传)次,止也。  

  (经二五六)齐侯唁公于野井。  

  (传)吊失国曰唁。唁公不得入于鲁也。  

  (经二五七)冬,十月戊辰,叔孙婼卒。  

  (经二五七)十有一月己亥,宋公佐卒于曲棘。  

  (传)邡公也。  

  (经二五八)十有二月,齐侯取郓。  

  (传)取,易辞也。内不言取,以其为公取之,故易言之也。  

  !昭公(经二六一)二十有六年   

  春,王正月,葬宋元公。  

  (经二六二)三月,公至自齐,居于郓。  

  (传)公次于阳州,其曰至自齐,何也?以齐侯之见公,可以言至自齐也。居于郓者,公在外也。至自齐,道义不外公也。  

  (经二六三)夏,公围成。  

  (传)非国不言围,所以言围者,以大公也。  

  (经二六四)秋,公会齐侯、莒子、邾子、杞伯,盟于鄟陵。公至自会,居于郓。  

  (传)公在外也。至自会,道义不外公也。  

  (经二六五)九月庚申,楚子居卒。  

  (经二六六)冬,十月,天王入于成周。  

  (传)周有入无出也。  

  (经二六七)尹氏、召伯、毛伯,以王子朝奔楚。  

  (传)远矣非也。奔,直奔也。  

  !昭公(经二七一)二十有七年   

  春,公如齐。公至自齐,居于郓。  

  (传)公在外也。  

  (经二七二)夏,四月,吴弒其君僚。  

  (经二七三)楚杀其大夫郄宛。  

  (经二七四)秋,晋士鞅、宋乐祁犁、卫北宫喜、曹人、邾人、滕人会于扈。  

  (经二七五)冬,十月,曹伯午卒。  

  (经二七六)邾快来奔。  

  (经二七七)公如齐。公至自齐,居于郓。  

  !昭公(经二八一)二十有八年   

  春,王三月,葬曹悼公。  

  (经二八二)公如晋,次于干侯。  

  (传)公在外也。  

  (经二八三)夏,四月丙戌,郑伯宁卒。  

  (经二八四)六月,葬郑定公。  

  (经二八五)秋,七月癸巳,滕子宁卒。  

  (经二八六)冬,葬滕悼公。  

  !昭公(经二九一)二十有九年   

  春,公至自干侯,居于郓。  

  (经二九二)齐侯使高张来唁公。  

  (传)唁公不得入于鲁也。  

  (经二九三)公如晋,次于干侯。  

  (经二九四)夏,四月庚子,叔倪卒。  

  (传)季孙意如曰:「叔倪无病而死,此皆无公也。是天命也,非我罪也。」  

  (经二九五)秋,七月。  

  (经二九六)冬,十月,郓溃。  

  (传)溃之为言,上下不相得也。上下不相得则恶矣,亦讥公也。昭公出奔,民如释重负。  

  !昭公(经三十一)三十年   

  春,王正月,公在干侯。  

  (传)中国不存公,存公故也。  

  (经三十二)夏,六月庚辰,晋侯去疾卒。  

  (经三十三)秋,八月,葬晋顷公。  

  (经三十四)冬,十有二月,吴灭徐。  

  (经三十五)徐子章羽奔楚。  

  !昭公(经三一一)三十有一年   

  春,王正月,公在干侯。  

  (经三一二)季孙意如会晋荀栎于适历。  

  (经三一三)夏,四月丁巳,薛伯谷卒。  

  (经三一四)晋侯使荀栎唁公于干侯。  

  (传)唁公不得入于鲁也。曰:「既为君言之矣,不可者意如也」。  

  (经三一五)秋,葬薛献公。  

  (经三一六)冬,黑肱以滥来奔。  

  (传)其不言邾黑肱何也?别乎邾也。其不言滥子,何也?非天子所封也。来奔内,不言叛也。  

  (经三一七)十有二月辛亥朔,日有食之。  

  !昭公(经三二一)三十有二年   

  春,王正月,公在干侯,取阚。  

  (经三二二)夏,吴伐越。  

  (经三二三)秋,七月。  

  (经三二四)冬,仲孙何忌会晋韩不信、齐高张、宋仲几、卫太叔申、郑国参、曹人、莒人、邾人、薛人、杞人、小邾人,城成周。  

  (传)天子微,诸侯不享觐。天子之在者,惟祭与号。故诸侯之大夫,相帅以城之。此变之正也。  

  (经三二五)十有二月,己未,公薨于干侯。  
  谷梁传庄公 

  !庄公(经一一)元年  

  春,王正月。 

  (传)继弒君不言即位,正也。继弒君不言即位之为正,何也?曰:先君不以其道终,则子不忍即位也。 

  (经一二)三月,夫人孙于齐。 

  (传)孙之为言犹孙也。讳奔也。接练时,录母之变,始人之也。不言氏姓,贬之也。人之于天也,以道受命;于人也,以言受命。不若于道者,天绝之也;不若于言者,人绝之也。臣子大受命。 

  (经一三)夏,单伯逆王姬。 

  (传)单伯者何?吾大夫之命乎天子者也。命大夫,故不名也。其不言如,何也?其义不可受于京师也。其义不可受于京师,何也?曰:躬君弒于齐,使之主婚姻,与齐为礼,其义固不可受也。 

  (经一四)秋,筑王姬之馆于外。 

  (传)筑,礼也。于外,非礼也。筑之为礼,何也?主王姬者,必自公门出。于庙则已尊,于寝则已卑。为之筑,节矣。筑之外,变之正也。筑之外,变之为正,何也?仇雠之人非所以接婚姻也,衰麻非所以接弁冕也。其不言齐侯之来逆,何也?不使齐侯得与吾为礼也。 

  (经一五)冬,十月乙亥,陈侯林卒。 

  (传)诸侯日卒,正也。 

  (经一六)王使荣叔来锡桓公命。 

  (传)礼有受命,无来锡命;锡命非正也。生服之,死行之,礼也。生不服,死追锡之,不正甚矣。 

  (经一七)王姬归于齐。 

  (传)为之中者归之也。 

  (经一八)齐师迁纪,郱、鄑、郚。 

  (传)纪,国也。郱、鄑、郚,国也。或曰迁纪于郱、鄑、郚。 

  !庄公(经二一)二年  

  春,王二月,葬陈庄公。 

  (经二二)夏,公子庆父帅师,伐于余丘。 

  (传)国而曰伐。于余丘,邾之邑也。其曰伐何也?公子贵矣,师重矣。而敌人之邑,公子病矣。病公子,所以讥乎公也。其一曰君在而重之也。 

  (经二三)秋,七月,齐王姬卒。 

  (传)为之主者,卒之也。 

  (经二四)冬,十有二月,夫人姜氏会齐侯于禚。 

  (传)妇人既嫁不逾竟,逾竟非正也。妇人不言会,言会非正也。飨甚矣。 

  (经二五)乙酉,宋公冯卒。 

  !庄公(经三一)三年  

  春,王正月。溺会齐侯伐卫。 

  (传)溺者何也?公子溺也。其不称公子,何也?恶其会仇雠而伐同姓,故贬而名之也。 

  (经三二)夏,四月,葬宋庄公。 

  (传)月葬,故也。 

  (经三三)五月,葬桓王。 

  (传)传曰:改葬也。改葬之礼缌,举下,缅也。或曰却尸以求诸侯。天子志崩不志葬,必其时也。何必焉?举天下而葬一人,其义不疑也。志葬,故也,危不得葬也。曰:近不失崩。不志崩,失天下也。独阴不生,独阳不生,独天不生,三合然后生。故曰:母之子也可,天之子也可。尊者取尊称焉,卑者取卑称焉。其曰王者,民之所归往也。 

  (经三四)秋,纪季以酅入于齐。 

  (传)酅,纪之邑也。入于齐者,以酅事齐也。入者,内弗受也。 

  (经三五)冬,公次于郎。 

  (传)次,止也,有畏也。欲救纪而不能也。 

  !庄公(经四一)四年  

  春,王二月,夫人姜氏飨齐侯于祝丘。 

  (传)飨,甚矣。飨齐侯,所以病齐侯也。 

  (经四二)三月,纪伯姬卒。 

  (传)外夫人不卒,此其言卒,何也?吾女也。适诸侯则尊同,以吾为之变,卒之也。 

  (经四三)夏,齐侯、陈侯、郑伯遇于垂。 

  (经四四)纪侯大去其国。 

  (传)大去者,不遗一人之辞也,言民之从者四年而后毕也。纪侯贤而齐侯灭之。不言灭,而曰大去其国者,不使小人加乎君子。 

  (经四五)六月乙丑,齐侯葬纪伯姬。 

  (传)外夫人不书葬,此其书葬,何也?吾女也。失国,故隐而葬之。 

  (经四六)秋,七月。 

  (经四七)冬,公及齐人狩于郜。 

  (传)齐人者,齐侯也,其曰人何也?卑公之敌,所以卑公也。何为卑公也?不复雠,而怨不释,刺释怨也。 

  !庄公(经五一)五年  

  春,王正月。 

  (经五二)夏,夫人姜氏如齐师。 

  (传)师而曰如,众也。妇人既嫁不逾竟,逾竟非礼也。 

  (经五三)秋,郳黎来来朝。 

  (传)郳,国也。黎来,微国之君,未爵命者也。 

  (经五四)冬,公会齐人、宋人、陈人、蔡人伐卫。 

  (传)是齐侯、宋公也,其曰人何也?人诸侯,所以人公也。其人公何也?逆天王之命也。 

  !庄公(经六一)六年  

  春,王二月,王人子突救卫。 

  (传)王人,卑者也。称名,贵之也。善救卫也。救者善,则伐者不正矣。 

  (经六二)夏,六月,卫侯朔,入于卫。 

  (传)其不言伐卫纳朔,何也?不逆天王之命也。入者,内弗受也。何用弗受也?为以王命绝之也。朔之名恶也,朔入逆,则出顺矣;朔出入名,以王命绝之也。 

  (经六三)秋,公至自伐卫。 

  (传)恶事不致,此其致,何也?不致,则无用见公之恶、事之成也。 

  (经六四)螟。 

  (经六五)冬,齐人来归卫宝。 

  (传)以齐首之分恶于齐也。使之如下齐而来我然,恶战则杀矣。 

  !庄公(经七一)七年  

  春,夫人姜氏会齐侯于防。 

  (传)妇人不会,会非正也。 

  (经七二)夏,四月辛卯,昔,恒星不见。 

  (传)恒星者,经星也。日入至于星出谓之昔。不见者,可以见也。 

  (经七二)夜中星陨如雨。 

  (传)其陨也如雨,是夜中与?《春秋》着以传着,疑以传疑。中之,几也;而曰夜中,着焉尔。何用见其中也?失变而录其时,则夜中矣!其不曰恒星之陨何也?我知恒星之不见,而不知其陨也。我见其陨而接于地者,则是雨说也。着于上,见于下,谓之雨;着于下,不见于上,谓之陨。岂雨说哉! 

  (经七三)秋,大水。 

  (传)高下有水灾曰大水。 

  (经七三)无麦、苗。 

  (传)麦、苗同时也。 

  (经七四)冬,夫人姜氏会齐侯于谷。 

  (传)妇人不会,会非正也。 

  !庄公(经八一)八年  

  春,王正月,师次于郎,以俟陈人、蔡人。 

  (传)次,止也。俟,待也。 

  (经八二)甲午,治兵。 

  (传)出曰治兵,习战也。入曰振旅,习战也。治兵而陈、蔡不至矣。兵事以严终,故曰善陈者不战,此之谓也。善为国者不师,善师者不陈,善陈者不战,善战者不死,善死者不亡。 

  (经八三)夏,师及齐师围郕。郕降于齐师。 

  (传)其曰降于齐师何?不使齐师加威于郕也。 

  (经八四)秋,师还。 

  (传)还者,事未毕也,遁也。 

  (经八五)冬,十有一月癸未,齐无知弒其君诸儿。 

  (传)大夫弒其君,以国氏者,嫌也。弒而代之也。 

  !庄公(经九一)九年  

  春,齐人杀无知。 

  (传)无知之挈,失嫌也。称人以杀大夫,杀有罪也。 

  (经九二)公及齐大夫盟于暨。 

  (传)公不及大夫,大夫不名,无君也。盟纳子纠也。不日,其盟渝也。当齐无君,制在公矣。当可纳而不纳,故恶内也。 

  (经九三)夏,公伐齐,纳纠。 

  (传)当可纳而不纳,齐变而后伐,故干时之战不讳败,恶内也。 

  (经九四)齐小白入于齐。 

  (传)大夫出奔反,以好曰归,以恶曰入。齐公孙无知弒襄公,公子纠、公子小白不能存,出亡。齐人杀无知,而迎公子纠于鲁,公子小白不让公子纠,先入,又杀之于鲁。故曰齐小白入于齐,恶之也。 

  (经九五)秋,七月丁酉,葬齐襄公。 

  (经九六)八月庚申,及齐师战于干时,我师败绩。 

  (经九七)九月,齐人取子纠杀之。 

  (传)外不言取,言取,病内也。取,易辞也,犹曰取其子纠而杀之云尔。十室之邑,可以逃难;百室之邑,可以隐死。以千乘之鲁,而不能存子纠,以公为病矣。 

  (经九八)冬,浚洙。 

  (传)浚洙者,深洙也。着力不足也。 

  !庄公(经十一)十年  

  春,王正月,公败齐师于长勺。 

  (传)不日,疑战也。疑战而曰败,胜内也。 

  (经十二)二月,公侵宋。 

  (传)侵时,此其月何也?乃深其怨于齐,又退侵宋以众其敌,恶之。故谨而月之。 

  (经十三)三月,宋人迁宿。 

  (传)迁,亡辞也。其不地,宿不复见也。迁者,犹未失其国家以往者也。 

  (经十四)夏,六月,齐师、宋师次于郎。 

  (传)次,止也。畏我也。 

  (经十四)公败宋师于乘丘。 

  (传)不日,疑战也。疑战而曰败,胜内也。 

  (经十五)秋,九月,荆败蔡师于莘,以蔡侯献武归。 

  (传)荆者,楚也。何为谓之荆?狄之也。何为狄之?圣人立,必后至;天子弱,必先叛。故曰荆,狄之也。蔡侯何以名也?绝之也。何为绝之?获也。中国不言败,此其言败何也?中国不言败,蔡侯其见获乎!其言败何也?释蔡侯之获也。以归,犹愈乎执也。 

  (经十七)冬,十月,齐师灭谭。 

  (经十八)谭子奔莒。 

  !庄公(经十一一)十有一年  

  春,王正月。 

  (经十一二)夏,五月戊寅,公败宋师于鄑。 

  (传)内事不言战,举其大者,其日,成败之也。宋万之获也。 

  (经十一三)秋,宋大水。 

  (传)外灾不书,此何以书?王者之后也。高下有水灾曰大水。 

  (经十一四)冬,王姬归于齐。 

  (传)其志过我也。 

  !庄公(经十二一)十有二年  

  春,王三月,纪叔姬归于酅。 

  (传)国而曰归,此邑也,其曰归何也?吾女也,失国喜得其所,故言归焉尔。 

  (经十二二)夏,四月。 

  (经十二三)秋,八月甲午,宋万弒其君捷。 

  (传)宋万,宋之卑者也。卑者以国氏,及其大夫仇牧以尊及卑也。仇牧,闲也。 

  (经十二三)冬,十月,宋万出奔陈。 

  !庄公(经十三一)十有三年  

  春,齐人、宋人、陈人、蔡人、邾人会于北杏。 

  (传)是齐侯、宋公也,其曰人何也?始疑之。何疑焉?桓非受命之伯也,将以事授之者也。曰:可矣乎?未乎?举人,众之辞也。 

  (经十三二)夏,六月,齐人灭遂。 

  (传)遂,国也。其不日,微国也。 

  (经十三三)秋,七月。 

  (经十三四)冬,公会齐侯盟于柯。 

  (传)曹刿之盟也,信齐侯也。桓盟虽内与,不日,信也。 

  !庄公(经十四一)十有四年  

  春,齐人、陈人、曹人伐宋。 

  (经十四二)夏,单伯会伐宋。 

  (传)会,事之成也。 

  (经十四三)秋,七月,荆入蔡。 

  (传)荆者,楚也,其曰荆何也?州举之也。州不如国,国不如名,名不如字。 

  (经十四四)冬,单伯会齐侯、宋公、卫侯、郑伯于鄄。 

  (传)复同会也。 

  !庄公(经十五一)十有五年  

  春,齐侯、宋公、陈侯、卫侯、郑伯会于鄄。 

  (传)复同会也。 

  (经十五二)夏,夫人姜氏如齐。 

  (传)妇人既嫁不逾竟,逾竟非礼也。 

  (经十五三)秋,宋人、齐人、邾人伐郳。 

  (经十五四)郑人侵宋。 

  (经十五五)冬,十月。 

  !庄公(经十六一)十有六年  

  春,王正月。 

  (经十六二)夏,宋人、齐人、卫人伐郑。 

  (经十六三)秋,荆伐郑。 

  (经十六四)冬,十有二月,会齐侯、宋公、陈侯、卫侯、郑伯、许男、曹伯、滑伯、滕子,同盟于幽。 

  (传)同者,有同也,同尊周也。不言公,外内寮一,疑之也。 

  (经十六五)邾子克卒。 

  (传)其曰子,进之也。 

  !庄公(经十七一)十有七年  

  春,齐人执郑詹。 

  (传)入者,众辞也。以人执,与之辞也。郑詹,郑之卑者。卑者不志,此其志何也?以其逃来志之也。逃来则何志焉?将有其末,不得不录其本也。郑詹,郑之佞人也。 

  (经十七二)夏,齐人歼于遂。 

  (传)歼者,尽也。然则何为不言遂人?尽齐人也,无遂之辞也。无遂则何为言遂?其犹存遂也。存遂奈何?曰:齐人灭遂,使人戍之,遂之因氏饮戍者酒而杀之,齐人歼焉。此谓狎敌也。 

  (经十七三)秋,郑詹自齐逃来。 

  (传)逃义曰逃。 

  (经十七四)冬,多麋。 

  !庄公(经十八一)十有八年  

  春,王三月,日有食之。 

  (传)不言日,不言朔,夜食也。何以知其夜食也?曰:王者朝日,故虽为天子,必有尊也;贵为诸侯,必有长也。故天子朝日,诸侯朝朔。 

  (经十八二)夏,公追戎于济西。 

  (传)其不言戎之伐我,何也?以公之追之,不使戎迩于我也。于济西者,大之也。何大焉?为公之追之也。 

  (经十八三)秋,有蜮。 

  (传)一有一亡曰有。蜮,射人者也。 

  (经十八四)冬,十月。!庄公(经十九一)十有九年   

  春,王正月。  

  (经十九二)夏,四月。  

  (经十九三)秋,公子结媵陈人之妇于鄄,遂及齐侯、宋公盟。  

  (传)媵,浅事也,不志;此其志何也?辟要盟也。何以见其辟要盟也?媵,礼之轻者也;盟,国之重也。以轻事遂乎国重无说,其曰陈人之妇,略之也。其不日,数渝,恶之也。  

  (经十九四)夫人姜氏如莒。  

  (传)妇人既嫁不逾竟,逾竟非正也。  

  (经十九五)冬,齐人、宋人、陈人伐我西鄙。  

  (传)其曰鄙,远之也。其远之何也?不以难迩我国也。  

  !庄公(经二十一)二十年   

  春,王二月,夫人姜氏如莒。  

  (传)妇人既嫁不逾竟,逾竟非正也。  

  (经二十二)夏,齐大灾。  

  (传)其志,以甚也。  

  (经二十三)秋,七月。  

  (经二十四)冬,齐人伐我。  

  !庄公(经二一一)二十有一年   

  春,王正月。  

  (经二一二)夏,五月辛酉,郑伯突卒。  

  (经二一三)秋,七月戊戌,夫人姜氏薨。  

  (传)妇人弗目也。  

  (经二一四)冬,十有二月,葬郑厉公。  

  !庄公(经二二一)二十有二年   

  春,王正月,肆大眚。  

  (传)肆,失也。眚,灾也。灾纪也,失故也,为嫌天子之葬也。  

  (经二二二)癸丑,葬我小君文姜。  

  (传)小君非君也,其曰君何也?以其为公配,可以言小君也。  

  (经二二三)陈人杀其公子御寇。  

  (传)言公子而不言大夫,公子未命为大夫也;其曰公子,何也?公子之重视大夫,命以执公子。  

  (经二二四)夏,五月。  

  (经二二五)秋,七月丙申,及齐高傒盟于防。  

  (传)不言公,高傒伉也。  

  (经二二六)冬,公如齐纳币。  

  (传)纳币,大夫之事也。礼有纳采,有问名,有纳征,有告期,四者备而后娶,礼也。公之亲纳币,非礼也,故讥之。  

  !庄公(经二三一)二十有三年   

  春,公至自齐。  

  (经二三二)祭叔来聘。  

  (传)其不言使,何也?天子之内臣也。不正其外交,故不与使也。  

  (经二三三)夏,公如齐观社。  

  (传)常事曰视,非常曰观。观,无事之辞也,以是为尸女也,无事不出竟。  

  (经)公至自齐。  

  (传)公如,往时,正也。致月,故也。如往月致,月有惧焉尔。  

  (经二三四)荆人来聘。  

  (传)善累而后进之。其曰人何也?举道不待再。  

  (经二三五)公及齐侯遇于谷。  

  (传)及者,内为志焉尔。遇者,志相得也。  

  (经二三六)萧叔朝公。  

  (传)微国之君,未爵命者,其不言来,于外也。朝于庙,正也;于外,非正也。  

  (经二三七)秋,丹桓宫楹。  

  (传)礼:天子、诸侯黝垩,大夫仓,士黈。丹楹,非礼也。  

  (经二三八)冬,十有一月,曹伯射姑卒。  

  (经二三九)十有二月甲寅,公会齐侯盟于扈。  

  !庄公(经二四一)二十有四年   

  春,王三月,刻桓宫桷。  

  (传)礼:天子之桷,斲之砻之,加密石焉;诸侯之桷,斲之砻之。大夫斲之,士斲木刻桷,非正也。夫人,所以崇宗庙也。取非礼与非正,而加之于宗庙,以饰夫人,非正也。刻桓宫桷,丹桓宫楹,斥言桓宫,以恶庄也。  

  (经二四二)葬曹庄公。  

  (经二四三)夏,公如齐逆女。  

  (传)亲迎,恒事也,不志,此其志何也?不正其亲迎于齐也。  

  (经二四四)秋,公至自齐。  

  (传)迎者,行见诸,舍见诸。先至,非正也。  

  (经二四五)八月丁丑,夫人姜氏入。  

  (传)入者,内弗受也。日入,恶入者也。何用不受也?以宗庙弗受也。其以宗庙弗受,何也?娶仇人子弟,以荐舍于前,其义不可受也。  

  (经二四六)戊寅,大夫宗妇,觌用币。  

  (传)觌,见也。礼:大夫不见夫人,不言及不正,其行妇道,故列数之也。男子之贽,羔雁雉腒;妇人之贽,枣栗锻修。用币,非礼也。用者,不宜用者也。大夫,国体也,而行妇道,恶之,故谨而日之也。  

  (经二四七)大水。  

  (经二四八)冬,戎侵曹,曹羁出奔陈。  

  (经二四九)赤归于曹郭公。  

  (传)赤盖,郭公也,何为名也?礼:诸侯无外归之义。外归,非正也。  

  !庄公(经二五一)二十有五年   

  春,陈侯使女叔来聘。  

  (传)其不名,何也?天子之命大夫也。  

  (经二五二)夏,五月癸丑,卫侯朔卒。  

  (经二五三)六月辛未朔,日有食之。  

  (传)言日言朔,食正朔也。  

  (经二五三)鼓用牲于社。  

  (传)鼓,礼也;用牲,非礼也。天子救日,置五麾,陈五兵、五鼓;诸侯置三麾,陈三鼓、三兵;大夫击门,士击柝,言充其阳也。  

  (经二五四)伯姬归于杞。  

  (传)其不言逆,何也?逆之道微,无足道焉尔。  

  (经二五五)秋,大水,鼓用牲于社于门。  

  (传)高下有水灾曰大水。既戒鼓而骇众,用牲可以已矣。救日以鼓兵,救水以鼓众。  

  (经二五六)冬,公子友如陈。  

  !庄公(经二六一)二十有六年   

  春,公伐戎。  

  (经二六二)夏,公至自伐戎。  

  (经二六三)曹杀其大夫。  

  (传)言大夫而不称名姓,无命大夫也。无命大夫而曰大夫,贤也。为曹羁崇也。  

  (经二六四)秋,公会宋人、齐人伐徐。  

  (经二六五)冬,十有二月癸亥朔,日有食之。  

  !庄公(经二七一)二十有七年   

  春,公会杞伯姬于洮。  

  (经二七二)夏,六月,公会齐侯、宋公、陈侯、郑伯,同盟于幽。  

  (传)同者,有同也,同尊周也,于是而后授之诸侯也。其授之诸侯何也?齐侯得众也。桓会不致,安之也。桓盟不日,信之也。信其信,仁其仁。衣裳之会十有一,未尝有歃血之盟也--信厚也。兵车之会四,未尝有大战也--爱民也。  

  (经二七三)秋,公子友如陈,葬原仲。  

  (传)言葬不言卒,不葬者也。不葬而曰葬,讳出奔也。  

  (经二七四)冬,杞伯姬来。  

  (经二七五)莒庆来逆叔姬。  

  (传)诸侯之嫁子于大夫,主大夫以与之。来者接内也,不正其接内,故不与夫妇之称也。  

  (经二七六)杞伯来朝。  

  (经二七七)公会齐侯于城濮。  

  !庄公(经二八一)二十有八年   

  春,王三月甲寅,齐人伐卫,卫人及齐人战。卫人败绩。  

  (传)于伐与战,安战也。战卫,战则是师也,其曰人,何也?微之也。何为微之也?今授之诸侯,而后有侵伐之事,故微之也。其人卫,何也?以其人齐,不可不人卫也。卫小齐大,其以卫及之,何也?以其微之,可以言及也。其称人以败,何也?不以师败于人也。  

  (经二八二)夏,四月丁未,邾子琐卒。  

  (经二八三)秋,荆伐郑。  

  (传)荆者,楚也。其曰荆,州举之也。  

  (经二八三)公会齐人、宋人,救郑。  

  (传)善救郑也。  

  (经二八四)冬,筑微。  

  (传)山林薮泽之利,所以与民共也。虞之,非正也。  

  (经二八五)大无麦禾。  

  (传)大者,有顾之辞也,于无禾及无麦也。  

  (经二八六)臧孙辰告籴于齐。  

  (传)国无三年之畜,曰国非其国也。一年不升,告籴诸侯。告,请也。籴,籴也。不正,故举臧孙辰以为私行也。国无九年之畜,曰不足;无六年之畜,曰急;无三年之畜,曰国非其国也。诸侯无粟,诸侯相归粟,正也。臧孙辰告籴于齐,告,然后与之,言内之无外交也。古者税什一,丰年补败,不外求而上下皆足也,虽累凶年民弗病也。一年不艾而百姓饥,君子非之。不言如,为内讳也。  

  !庄公(经二九一)二十有九年   

  春,新延厩。  

  (传)延厩者,法厩也。其言新有故也。有故则何为书也?古之君人者,必时视民之所勤。民勤于力,则功筑罕;民勤于财,则贡赋少;民勤于食,则百事废矣。冬筑微,春新延厩,以其用民力为已悉矣!  

  (经二九二)夏,郑人侵许。  

  (经二九三)秋,有蜚。  

  (传)一有一亡,曰有。  

  (经二九四)冬,十有二月,纪叔姬卒。  

  (经二九五)城诸及防。  

  (传)可城也,以大及小也。  

  !庄公(经三十一)三十年   

  春,王正月。  

  (经三十二)夏,师次于成。  

  (传)次,止也,有畏也。欲救鄣而不能也。不言公耻,不能救鄣也。  

  (经三十三)秋,七月,齐人降鄣。  

  (传)降,犹下也。鄣,纪之遗邑也。  

  (经三十四)八月癸亥,葬纪叔姬。  

  (传)不日卒而日葬,闵纪之亡也。  

  (经三十五)九月庚午朔,日有食之,鼓用牲于社。  

  (经三十六)冬,公及齐侯遇于鲁济。  

  (传)及者,内为志焉尔。遇者,志相得也。  

  (经三十七)齐人伐山戎。  

  (传)齐人者,齐侯也,其曰人,何也?爱齐侯乎!山戎也,其爱之何也?桓内无因国,外无从诸侯,而越千里之险,北伐山戎,危之也,则非之乎,善之也。何善乎尔?燕,周之分子也;贡职不至,山戎为之伐矣。  

  !庄公(经三一一)三十有一年   

  春,筑台于郎。  

  (经三一二)夏,四月,薛伯卒。  

  (经三一三)筑台于薛。  

  (经三一四)六月,齐侯来献戎捷。  

  (传)齐侯来献捷者,内齐侯也。不言使,内与同,不言使也。献戎捷,军得曰捷,戎菽也。  

  (经三一五)秋,筑台于秦。  

  (传)不正罢民三时,虞山林薮泽之利。且财尽则怨,力尽则怼,君子危之,故谨而志之也。或曰倚诸桓也。桓外无诸侯之变,内无国事,越千里之险,北伐山戎,为燕辟地。鲁外无诸侯之变,内无国事,一年罢民三时,虞山林薮泽之利,恶内也。  

  (经三一六)冬,不雨。  

  !庄公(经三二一)三十有二年   

  春,城小谷。  

  (经三二二)夏,宋公、齐侯遇于梁丘。  

  (传)遇者,志相得也。梁丘在曹、邾之间,去齐八百里,非不能从诸侯而往也。辞所遇,遇所不遇,大齐桓也。  

  (经三二三)秋,七月癸巳,公子牙卒。  

  (经三二四)八月癸亥,公薨于路寝。  

  (传)路寝,正寝也。寝疾居正寝,正也。男子不绝于妇人之手,以齐终也。  

  (经三二五)冬,十月乙未,子般卒。  

  (传)子卒日,正也;不日,故也。有所见则日。  

  (经三二六)公子庆父如齐。  

  (传)此奔也,其曰如,何也?讳莫如深,深则隐。茍有所见,莫如深也。  

  (经三二七)狄伐邢。  
  

  《礼记冠义》

  

  凡人之所以为人者,礼义也。礼义之始,在于正容体、齐颜色、顺辞令。容体正、颜色齐、辞令顺而后礼义备,以正君臣、亲父子、和长幼,君臣正、父子亲、长幼和而后礼义立。故冠而后服备,服备而后容体正、颜色齐、辞令顺。故曰:冠者礼之始也。

  

  是故古者圣王重冠。古者冠礼,筮日筮宾,所以敬冠事,敬冠事所以重礼,重礼所以为国本也。故冠于阼,以著代也。醮于客位,三加弥尊,加有成也。已冠而字之,成人之道也。见于母,母拜之,见于兄弟,兄弟拜之,成人而与为礼也。玄冠玄端,奠挚于君,遂以挚见于乡大夫、乡先生,以成人见也。成人之者,将责成人礼焉也。责成人礼焉者,将责为人子、为人弟、为人臣.为人少者之礼行焉。将责四者之行于人,其礼可不重与?故孝弟忠顺之行立而后可以为人,可以为人而后可以治人也。故圣王重礼。故曰冠者礼之始也,嘉事之重者也。是故古者重冠,重冠故行之于庙。行之于庙者,所以尊重事,尊重事而不敢擅重事。不敢擅重事,所以自卑而尊先祖也。

  
!![[国风-周南]]

!![[国风-召南]]

!![[国风-邶风]]

!![[国风-鄘风]]

!![[国风-卫风]]

!![[国风-王风]]

!![[国风-郑风]]

!![[国风-齐风]]

!![[国风-魏风]]

!![[国风-唐风]]

!![[国风-秦风]]

!![[国风-陈风]]

!![[国风-曹风]]

!![[国风-桧风]]

!![[国风-豳风]]
!!国风 邶风 柏舟

泛彼柏舟,亦泛其流。耿耿不寐,如有隐忧。微我无酒,以敖以游。

我心匪鉴,不可以茹。亦有兄弟,不可以据。薄言往诉,逢彼之怒。

我心匪石,不可转也。我心匪席,不可卷也。威仪棣棣,不可选也。

忧心悄悄,愠于群小。覯闵既多,受侮不少。静言思之,寤辟有摽。

日居月诸,胡迭而微?心之忧矣,如匪浣衣。静言思之,不能奋飞。

!!国风 邶风 绿衣

绿兮衣兮,绿衣黄裹。心之忧矣,曷维其已!

绿兮衣兮,绿衣黄裳。心之忧矣,曷维其亡!

绿兮丝兮,女所治兮。我思古人,俾无訧兮!

絺兮绤兮,凄其以风。我思古人,实获我心!

!!国风 邶风 燕燕

燕燕于飞,差池其羽。之子于归,远送于野。瞻望弗及,泣涕如雨。

燕燕于飞,颉之颃之。之子于归,远于将之。瞻望弗及,伫立以泣。

燕燕于飞,下上其音。之子于归,远送于南。瞻望弗及,实劳我心。

仲氏任只,其心塞渊。终温且惠,淑慎其身。先君之思,以勖寡人。

!!国风 邶风 日月

日居月诸,照临下土。乃如之人兮,逝不古处?胡能有定?宁不我顾。

日居月诸,下土是冒。乃如之人兮,逝不相好。胡能有定?宁不我报。

日居月诸,出自东方。乃如之人兮,德音无良。胡能有定?俾也可忘。

日居月诸,东方自出。父兮母兮,畜我不卒。胡能有定?报我不述。

!!国风 邶风 终风

终风且暴,顾我则笑,谑浪笑敖,中心是悼。

终风且霾,惠然肯来,莫往莫来,悠悠我思。

终风且曀,不日有曀,寤言不寐,愿言则嚏。

曀曀其阴,虺虺其雷,寤言不寐,愿言则怀。

!!国风 邶风 击鼓

击鼓其镗,踊跃用兵。土国城漕,我独南行。

从孙子仲,平陈与宋。不我以归,忧心有忡。

爰居爰处?爰丧其马?于以求之?于林之下。

死生契阔,与子成说。执子之手,与子偕老。

于嗟阔兮,不我活兮。于嗟洵兮,不我信兮。

!!国风 邶风 凯风

凯风自南,吹彼棘心。棘心夭夭,母氏劬劳。

凯风自南,吹彼棘薪。母氏圣善,我无令人。

爰有寒痊在浚之下。有子七人,母氏劳苦。

睍睆黄鸟,载好其音。有子七人,莫慰母心。

!!国风 邶风 雄雉

雄雉于飞,泄泄其羽。我之怀矣,自诒伊阻。

雄雉于飞,下上其音。展矣君子,实劳我心。

瞻彼日月,悠悠我思。道之云远,曷云能来?

百尔君子,不知德行。不忮不求,何用不臧。

!!国风 邶风 匏有苦叶

匏有苦叶,济有深涉。深则厉,浅则揭。

有瀰济盈,有鷕雉鸣。济盈不濡轨,雉鸣求其牡。

雍雍鸣雁,旭日始旦。士如归妻,迨冰未泮。

招招舟子,人涉卬否。不涉卬否,卬须我友。

!!国风 邶风 谷风

习习谷风,以阴以雨。黾勉同心,不宜有怒。采葑采菲,无以下体?德音莫违,及尔同死。

行道迟迟,中心有违。不远伊迩,薄送我畿。谁谓荼苦,其甘如荠。宴尔新婚,如兄如弟。

泾以渭浊,湜湜其沚。宴尔新婚,不我屑以。毋逝我梁,毋发我笱。我躬不阅,遑恤我后。

就其深矣,方之舟之。就其浅矣,泳之游之。何有何亡,黾勉求之。凡民有丧,匍匐救之。

不我能畜,反以我为仇。既阻我德,贾用不售。昔育恐育鞫,及尔颠覆。既生既育,比予于毒。

我有旨蓄,亦以御冬。宴尔新婚,以我御穷。有洸有溃,既诒我肄。不念昔者,伊余来塈。

!!国风 邶风 式微

式微,式微,胡不归?微君之故,胡为乎中露!

式微,式微,胡不归?微君之躬,胡为乎泥中!

!!国风 邶风 旄丘

旄丘之葛兮,何诞之节兮。叔兮伯兮,何多日也?

何其处也?必有与也!何其久也?必有以也!

狐裘蒙戎,匪车不东。叔兮伯兮,靡所与同。

琐兮尾兮,流离之子。叔兮伯兮,褎如充耳。

!!国风 邶风 简兮

简兮简兮,方将万舞。日之方中,在前上处。

硕人俣俣,公庭万舞。有力如虎,执辔如组。

左手执龠,右手秉翟。赫如渥赭,公言锡爵。

山有榛,隰有苓。云谁之思?西方美人。彼美人兮,西方之人兮。

!!国风 邶风 泉水

毖彼泉水,亦流于淇。有怀于卫,靡日不思。娈彼诸姬,聊与之谋。

出宿于泲,饮饯于祢。女子有行,远父母兄弟,问我诸姑,遂及伯姊。

出宿于干,饮饯于言。载脂载辖,还车言迈。遄臻于卫,不瑕有害?

我思肥泉,兹之永叹。思须与漕,我心悠悠。驾言出游,以写我忧。

!!国风 邶风 北门

出自北门,忧心殷殷。终窭且贫,莫知我艰。已焉哉!天实为之,谓之何哉!

王事适我,政事一埤益我。我入自外,室人交遍谪我。已焉哉!天实为之,

谓之何哉!

王事敦我,政事一埤遗我。我入自外,室人交遍摧我。已焉哉!天实为之,

谓之何哉!

!!国风 邶风 北风

北风其凉,雨雪其雱。惠而好我,携手同行。其虚其邪?既亟只且!

北风其喈,雨雪其霏。惠而好我,携手同归。其虚其邪?既亟只且!

莫赤匪狐,莫黑匪乌。惠而好我,携手同车。其虚其邪?既亟只且!

!!国风 邶风 静女

静女其姝,俟我于城隅。爱而不见,搔首踟蹰。

静女其娈,贻我彤管。彤管有炜,说怿女美。

自牧归荑,洵美且异。匪女之为美,美人之贻。

!!国风 邶风 新台

新台有泚,河水瀰瀰。燕婉之求,蘧篨不鲜。

新台有洒,河水浼浼。燕婉之求,蘧篨不殄。

鱼网之设,鸿则离之。燕婉之求,得此戚施。

!!国风 邶风 二子乘舟

二子乘舟,泛泛其景。愿言思子,中心养养!

二子乘舟,泛泛其逝。愿言思子,不瑕有害?

!!国风 豳风 七月

七月流火,九月授衣。一之日觱发,二之日栗烈。无衣无褐,何以卒岁?三之日于耜,四之日举趾。同我妇子,馌彼南亩。田畯至喜。

七月流火,九月授衣。春日载阳,有鸣仓庚。女执懿筐,遵彼微行,爰求柔桑。春日迟迟,采蘩祁祁。女心伤悲,殆及公子同归。

七月流火,八月萑苇。蚕月条桑,取彼斧斨。以伐远扬,猗彼女桑。七月鸣鵙,八月载绩。载玄载黄,我朱孔阳,为公子裳。

四月秀葽,五月鸣蜩。八月其获,十月陨萚。一之日于貉,取彼狐狸,为公子裘。二之日其同,载缵武功。言私其豵,献<豕幵>于公。

五月斯螽动股,六月莎鸡振羽。七月在野,八月在宇,九月在户,十月蟋蟀,入我床下。穹窒熏鼠,塞向墐户。嗟我妇子,曰为改岁,入此室处。

六月食郁及薁,七月亨葵及菽。八月剥枣,十月获稻。为此春酒,以介眉寿。

七月食瓜,八月断壶,九月叔苴,采荼薪樗。食我农夫。

九月筑场圃,十月纳禾稼。黍稷重穋,禾麻菽麦。嗟我农夫,我稼既同,上入执宫功。昼尔于茅,宵尔索綯,亟其乘屋,其始播百谷。

二之日凿冰冲冲,三之日纳于凌阴。四之日其蚤,献羔祭韭。九月肃霜,十月涤场。朋酒斯飨,曰杀羔羊,跻彼公堂。称彼兕觥:万寿无疆!

!!国风 豳风 鸱鸮

鸱鸮鸱鸮,既取我子,无毁我室。恩斯勤斯,鬻子之闵斯。

迨天之未阴雨,彻彼桑土,绸缪牖户。今女下民,或敢侮予?

予手拮据,予所捋荼。予所蓄租,予口卒瘏,曰予未有室家。

予羽谯谯,予尾翛翛,予室翘翘。风雨所漂摇,予维音哓哓!

!!国风 豳风 东山

我徂东山,慆々不归。我来自东,零雨其濛。我东曰归,我心西悲。制彼裳衣,勿士行枚。蜎々者蠋,烝在桑野。敦彼独宿,亦在车下。

我徂东山,慆々不归。我来自东,零雨其濛。果臝之实,亦施于宇。伊威在室,蟏蛸在户。町畽鹿场,熠耀宵行。不可畏也,伊可怀也。

我徂东山,慆々不归。我来自东,零雨其濛。鹳鸣于垤,妇叹于室。洒扫穹窒,我征聿至。有敦瓜苦,烝在栗薪。自我不见,于今三年。

我徂东山,慆々不归。我来自东,零雨其濛。仓庚于飞,熠耀其羽。之子

于归,皇驳其马。亲结其缡,九十其仪。其新孔嘉,其旧如之何?

!!国风 豳风 破斧

既破我斧,又缺我斨。周公东征,四国是皇。哀我人斯,亦孔之将。

既破我斧,又缺我锜。周公东征,四国是吪。哀我人斯,亦孔之嘉。

既破我斧,又缺我銶。周公东征,四国是遒。哀我人斯,亦孔之休。

!!国风 豳风 伐柯

伐柯如何?匪斧不克。取妻如何?匪媒不得。

伐柯伐柯,其则不远。我覯之子,笾豆有践。

!!国风 豳风 九罭

九罭之鱼,鳟鲂。我覯之子,衮衣绣裳。

鸿飞遵渚,公归无所,於女信处。鸿飞遵陆,公归不复,於女信宿。

是以有衮衣兮,无以我公归兮,无使我心悲兮。

!!国风 豳风 狼跋

狼跋其胡,载疐其尾。公孙硕肤,赤舄几几。

狼疐其尾,载跋其胡。公孙硕肤,德音不瑕?
!!国风 曹风 蜉蝣

蜉蝣之羽,衣裳楚楚。心之忧矣,于我归处。

蜉蝣之翼,采采衣服。心之忧矣,于我归息。

蜉蝣掘阅,麻衣如雪。心之忧矣,于我归说。

!!国风 曹风 候人

彼候人兮,何戈与礻殳。彼其之子,三百赤芾。

维鹈在梁,不濡其翼。彼其之子,不称其服。

维鹈在梁,不濡其咮。彼其之子,不遂其媾。

薈兮蔚兮,南山朝隮。婉兮娈兮,季女斯饥。

!!国风 曹风 鸤鸠

鸤鸠在桑,其子七兮。淑人君子,其仪一兮。其仪一兮,心如结兮。

鸤鸠在桑,其子在梅。淑人君子,其带伊丝。其带伊丝,其弁伊骐。

鸤鸠在桑,其子在棘。淑人君子,其仪不忒。其仪不忒,正是四国。

鸤鸠在桑,其子在榛。淑人君子,正是国人,正是国人。胡不万年?

!!国风 曹风 下泉

冽彼下泉,浸彼苞稂。忾我寤叹,念彼周京。

冽彼下泉,浸彼苞萧。忾我寤叹,念彼京周。

冽彼下泉,浸彼苞蓍。忾我寤叹,念彼京师。

芃芃黍苗,阴雨膏之。四国有王,郇伯劳之。
!!国风 陈风 宛丘

子之汤兮,宛丘之上兮。洵有情兮,而无望兮。

坎其击鼓,宛丘之下。无冬无夏,值其鹭羽。

坎其击缶,宛丘之道。无冬无夏,值其鹭翿。

!!国风 陈风 东门之枌

东门之枌,宛丘之栩。子仲之子,婆娑其下。

穀旦于差,南方之原。不绩其麻,市也婆娑。

穀旦于逝,越以鬷迈。视尔如荍,贻我握椒。

!!国风 陈风 衡门

衡门之下,可以栖迟。泌之洋洋,可以乐饥。

岂其食鱼,必河之鲂?岂其取妻,必齐之姜?

岂其食鱼,必河之鲤?岂其取妻,必宋之子?

!!国风 陈风 东门之池

东门之池,可以沤麻。彼美淑姬,可与晤歌。

东门之池,可以沤纻。彼美淑姬,可与晤语。

东门之池,可以沤菅。彼美淑姬,可与晤言。

!!国风 陈风 东门之杨

东门之杨,其叶牂牂。昏以为期,明星煌煌。

东门之杨,其叶肺肺。昏以为期,明星晢晢。

!!国风 陈风 墓门

墓门有棘,斧以斯之。夫也不良,国人知之。知而不已,谁昔然矣。

墓门有梅,有鸮萃止。夫也不良,歌以讯之。讯予不顾,颠倒思予。

!!国风 陈风 防有鹊巢

防有鹊巢,邛有旨苕。谁侜予美?心焉忉忉。

中唐有甓,邛有旨鹝。谁侜予美?心焉惕惕。

!!国风 陈风 月出

月出皎兮。佼人僚兮。舒窈纠兮。劳心悄兮。

月出皓兮。佼人懰兮。舒忧受兮。劳心慅兮。

月出照兮。佼人燎兮。舒夭绍兮。劳心惨兮。

!!国风 陈风 株林

胡为乎株林?从夏南!匪适株林,从夏南!

驾我乘马,说于株野。乘我乘驹,朝食于株!

!!国风 陈风 泽陂

彼泽之陂,有蒲与荷。有美一人,伤如之何?寤寐无为,涕泗滂沱。

彼泽之陂,有蒲与蕳。有美一人,硕大且卷。寤寐无为,中心悁悁。

彼泽之陂,有蒲菡萏。有美一人,硕大且俨。寤寐无为,辗转伏枕。
!!国风 桧风 羔裘

羔裘逍遥,狐裘以朝。岂不尔思?劳心忉忉。

羔裘翱翔,狐裘在堂。岂不尔思?我心忧伤。

羔裘如膏,日出有曜。岂不尔思?中心是悼。

!!国风 桧风 素冠

庶见素冠兮,棘人栾栾兮。劳心慱々兮。

庶见素衣兮,我心伤悲兮。聊与子同归兮。

庶见素韠兮,我心蕴结兮。聊与子如一兮。

!!国风 桧风 隰有苌楚

隰有苌楚,猗傩其枝,夭之沃沃,乐子之无知。

隰有苌楚,猗傩其华,夭之沃沃,乐子之无家。

隰有苌楚,猗傩其实,夭之沃沃,乐子之无室。

!!国风 桧风 匪风

匪风发兮,匪车偈兮。顾瞻周道,中心怛兮。

匪风飘兮,匪车嘌兮。顾瞻周道,中心吊兮。

谁能亨鱼?溉之釜鬵。谁将西归?怀之好音。
!!国风 齐风 鸡鸣

鸡既鸣矣,朝既盈矣。匪鸡则鸣,苍蝇之声。

东方明矣,朝既昌矣。匪东方则明,月出之光。

虫飞薨薨,甘与子同梦。会且归矣,无庶予子憎。

!!国风 齐风 还

子之还兮,遭我乎狃之间兮。并驱从两肩兮,揖我谓我儇兮。

子之茂兮,遭我乎狃之道兮。并驱从两牡兮,揖我谓我好兮。

子之昌兮,遭我乎狃之阳兮。并驱从两狼兮,揖我谓我臧兮。

!!国风 齐风 著

俟我于著乎而,充耳以素乎而,尚之以琼华乎而。

俟我于庭乎而,充耳以青乎而,尚之以琼莹乎而。

俟我于堂乎而,充耳以黄乎而,尚之以琼英乎而。

!!国风 齐风 东方之日

东方之日兮,彼姝者子,在我室兮。在我室兮,履我即兮。

东方之月兮,彼姝者子,在我闼兮。在我闼兮,履我发兮。

!!国风 齐风 东方未明

东方未明,颠倒衣裳。颠之倒之,自公召之。

东方未晞,颠倒裳衣。倒之颠之,自公令之。

折柳樊圃,狂夫瞿瞿。不能辰夜,不夙则莫。

!!国风 齐风 南山

南山崔崔,雄狐绥绥。鲁道有荡,齐子由归。既曰归止,曷又怀止?

葛屦五两,冠緌双止。鲁道有荡,齐子庸止。既曰庸止,曷又从止?

蓺麻如之何?衡从其亩。取妻如之何?必告父母。既曰告止,曷又鞠止?

析薪如之何?匪斧不克。取妻如之何?匪媒不得。既曰得止,曷又极止?

!!国风 齐风 甫田

无田甫田,维莠骄骄。无思远人,劳心忉忉。

无田甫田,维莠桀桀。无思远人,劳心怛怛。

婉兮娈兮。总角丱兮。未几见兮,突而弁兮!

!!国风 齐风 卢令

卢令令,其人美且仁。

卢重环,其人美且鬈。

卢重鋂,其人美且偲。

!!国风 齐风 敝笱

敝笱在梁,其鱼鲂鳏。齐子归止,其从如云。

敝笱在梁,其鱼鲂鱮。齐子归止,其从如雨。

敝笱在梁,其鱼唯唯。齐子归止,其从如水。

!!国风 齐风 载驱

载驱薄薄,蕈茀朱鞹。鲁道有荡,齐子发夕。

四骊济济,垂辔沵々。鲁道有荡,齐子岂弟。

汶水汤汤,行人彭彭。鲁道有荡,齐子翱翔。

汶水滔滔,行人儦々。鲁道有荡,齐了游敖。

!!国风 齐风 猗嗟

猗嗟昌兮,颀而长兮。抑若扬兮,美目扬兮。巧趋跄兮,射则臧兮。

猗嗟名兮,美目清兮。仪既成兮,终日射侯,不出正兮,展我甥兮。

猗嗟娈兮,清扬婉兮。舞则选兮,射则贯兮,四矢反兮,以御乱兮。
!!国风 秦风 车邻

有车邻邻,有马白颠。未见君子,寺人之令。

阪有漆,隰有栗。既见君子,并坐鼓瑟。今者不乐,逝者其耋。

阪有桑,隰有杨。既见君子,并坐鼓簧。今者不乐,逝者其亡。

!!国风 秦风 驷驖

驷驖孔阜,六辔在手。公之媚子,从公于狩。

奉时辰牡,辰牡孔硕。公曰左之,舍拔则获。

游于北园,四马既闲。輶车鸾镳,载猃歇骄。

!!国风 秦风 小戎

小戎俴收,五楘梁辀。游环胁驱,阴靷鋈续。文茵畅毂,驾我骐馵。言念君子,温其如玉。在其板屋,乱我心曲。

四牡孔阜,六辔在手。骐骝是中,騧骊是骖。龙盾之合,鋈以觼軜。言念君子,温其在邑。方何为期?胡然我念之!

俴驷孔群,厹矛鋈錞。蒙伐有苑,虎韔镂膺。交韔二弓,竹闭绲縢。言念君子,载寝载兴。厌厌良人,秩秩德音。

!!国风 秦风 蒹葭

蒹葭苍苍,白露为霜。所谓伊人,在水一方,溯洄从之,道阻且长。溯游从之,宛在水中央。

蒹葭萋萋,白露未晞。所谓伊人,在水之湄。溯洄从之,道阻且跻。溯游从之,宛在水中坻。

蒹葭采采,白露未已。所谓伊人,在水之涘。溯洄从之,道阻且右。溯游从之,宛在水中沚。

!!国风 秦风 终南

终南何有?有条有梅。君子至止,锦衣狐裘。颜如渥丹,其君也哉!

终南何有?有纪有堂。君子至止,黻衣绣裳。佩玉将将,寿考不忘!

!!国风 秦风 黄鸟

交交黄鸟,止于棘。谁从穆公?子车奄息。维此奄息,百夫之特。临其穴,惴惴其慄。彼苍者天,歼我良人!如可赎兮,人百其身!

交交黄鸟,止于桑。谁从穆公?子车仲行。维此仲行,百夫之防。临其穴,惴惴其慄。彼苍者天,歼我良人!如可赎兮,人百其身!

交交黄鸟,止于楚。谁从穆公?子车针虎。维此针虎,百夫之御。临其穴,惴惴其慄。彼苍者天,歼我良人!如可赎兮,人百其身!

!!国风 秦风 晨风

鴥彼晨风,郁彼北林。未见君子,忧心钦钦。如何如何,忘我实多!

山有苞栎,隰有六駮。未见君子,忧心靡乐。如何如何,忘我实多!

山有苞棣,隰有树檖。未见君子,忧心如醉。如何如何,忘我实多!

!!国风 秦风 无衣

岂曰无衣?与子同袍。王于兴师,修我戈矛。与子同仇!

岂曰无衣?与子同泽。王于兴师,修我矛戟。与子偕作!

岂曰无衣?与子同裳。王于兴师,修我甲兵。与子偕行!

!!国风 秦风 渭阳

我送舅氏,曰至渭阳。何以赠之?路车乘黄。

我送舅氏,悠悠我思。何以赠之?琼瑰玉佩。

!!国风 秦风 权舆

於我乎,夏屋渠渠,今也每食无余。于嗟乎,不承权舆!

於我乎,每食四簋,今也每食不饱。于嗟乎,不承权舆!
!!国风 唐风 蟋蟀

蟋蟀在堂,岁聿其莫。今我不乐,日月其除。无已大康,职思其居。好乐无荒,良士瞿瞿。

蟋蟀在堂,岁聿其逝。今我不乐,日月其迈。无已大康,职思其外。好乐无荒,良士蹶蹶。

蟋蟀在堂,役车其休。今我不乐,日月其慆。无以大康。职思其忧。好乐无荒,良士休休。

!!国风 唐风 山有枢

山有枢,隰有榆。子有衣裳,弗曳弗娄。子有车马,弗驰弗驱。宛其死矣,他人是愉。

山有栲,隰有杻。子有廷内,弗洒弗扫。子有钟鼓,弗鼓弗考。宛其死矣,他人是保。

山有漆,隰有栗。子有酒食,何不日鼓瑟?且以喜乐,且以永日。宛其死矣,他人入室。

!!国风 唐风 扬之水

扬之水,白石凿凿。素衣朱襮,从子于沃。既见君子,云何不乐?

扬之水,白石皓皓。素衣朱绣,从子于鹄。既见君子,云何其忧?

扬之水,白石粼粼。我闻有命,不敢以告人。

!!国风 唐风 椒聊

椒聊之实,蕃衍盈升。彼其之子,硕大无朋。椒聊且,远条且。

椒聊之实,蕃衍盈匊。彼其之子,硕大且笃。椒聊且,远条且。

!!国风 唐风 绸缪

绸缪束薪,三星在天。今夕何夕,见此良人?子兮子兮,如此良人何?

绸缪束刍,三星在隅。今夕何夕,见此邂逅?子兮子兮,如此邂逅何?

绸缪束楚,三星在户。今夕何夕,见此粲者?子兮子兮,如此粲者何?

!!国风 唐风 杕杜

有杕之杜,其叶湑々。独行踽踽。岂无他人?不如我同父。嗟行之人,

胡不比焉?人无兄弟,胡不佽焉?

有杕之杜,其叶箐箐。独行睘睘。岂无他人?不如我同姓。嗟行之人,胡

不比焉?人无兄弟,胡不佽焉?

!!国风 唐风 羔裘

羔裘豹祛,自我人居居。岂无他人?维子之故。

羔裘豹褎,自我人究究。岂无他人?维子之好。

!!国风 唐风 鸨羽

肃肃鸨羽,集于苞栩。王事靡盬,不能蓺稷黍。父母何怙?悠悠苍天,曷其有所?

肃肃鸨翼,集于苞棘。王事靡盬,不能蓺黍稷。父母何食?悠悠苍天,曷其有极?

肃肃鸨行,集于苞桑,王事靡盬,不能蓺稻粱。父母何尝?悠悠苍天,曷其有常?

!!国风 唐风 无衣

岂曰无衣七兮?不如子之衣,安且吉兮!

岂曰无衣六兮?不如子之衣,安且燠兮!

!!国风 唐风 有杕之杜

有杕之杜,生于道左。彼君子兮,噬肯适我?中心好之,曷饮食之?

有杕之杜,生于道周。彼君子兮,噬肯来游?中心好之,曷饮食之?

!!国风 唐风 葛生

葛生蒙楚,蔹蔓于野。予美亡此,谁与独处?

葛生蒙棘,蔹蔓于域。予美亡此,谁与独息?

角枕粲兮,锦衾烂兮。予美亡此,谁与独旦?

夏之日,冬之夜。百岁之后,归于其居。

冬之夜,夏之日。百岁之后,归于其室。

!!国风 唐风 采苓

采苓采苓,首阳之巅。人之为言,苟亦无信。舍旃舍旃,苟亦无然。人之为言,胡得焉?

采苦采苦,首阳之下。人之为言,苟亦无与。舍旃舍旃,苟亦无然。人之为言,胡得焉?

采葑采葑,首阳之东。人之为言,苟亦无从。舍旃舍旃,苟亦无然。人之为言,胡得焉?
!!国风 王风 黍离

彼黍离离,彼稷之苗。行迈靡靡,中心摇摇。知我者,谓我心忧;不知我者,谓我何求。悠悠苍天,此何人哉?

彼黍离离,彼稷之穗。行迈靡靡,中心如醉。知我者,谓我心忧;不知我者,谓我何求。悠悠苍天,此何人哉?

彼黍离离,彼稷之实。行迈靡靡,中心如噎。知我者,谓我心忧;不知我者,谓我何求。悠悠苍天,此何人哉?

!!国风 王风 君子于役

君子于役,不知其期。曷至哉?鸡栖于埘。日之夕矣,羊牛下来。君子于役,如之何勿思!

君子于役,不日不月。曷其有佸?鸡栖于桀。日之夕矣,羊牛下括。君子于役,苟无饥渴?

!!国风 王风 君子阳阳

君子阳阳,左执簧,右招我由房,其乐只且!

君子陶陶,左执翿,右招我由敖,其乐只且!

!!国风 王风 扬之水

扬之水,不流束薪。彼其之子,不与我戍申。怀哉怀哉,曷月予还归哉扬之!!国风 王风 中谷有蓷水,不流束楚。彼其之子,不与我戍甫。怀哉怀哉,曷月予还归哉!

扬之水,不流束蒲。彼其之子,不与我戍许。怀哉怀哉,曷月予还归哉!

中谷有蓷,暵其干矣。有女仳离,嘅其叹矣。嘅其叹矣,遇人之艰难矣。

中谷有蓷,暵其修矣。有女仳离,条其歗矣。条其歗矣,遇人之不淑矣。

中谷有蓷,暵其湿矣。有女仳离,啜其泣矣。啜其泣矣,何嗟及矣。

!!国风 王风 兔爰

有兔爰爰,雉离于罗。我生之初,尚无为我生之后,逢此百罹。尚寐无吪。

有兔爰爰,雉离于罦。我生之初,尚无造;我生之后,逢此百忧。尚寐无觉。

有兔爰爰,雉离于罿。我生之初,尚无庸;我生之后,逢此百凶。尚寐无聪。

!!国风 王风 葛藟

绵绵葛藟,在河之浒。终远兄弟,谓他人父。谓他人父,亦莫我顾!

绵绵葛藟,在河之涘。终远兄弟,谓他人母。谓他人母,亦莫我有!

绵绵葛藟,在河之漘。终远兄弟,谓他人昆。谓他人昆,亦莫我闻!

!!国风 王风 采葛

彼采葛兮,一日不见,如三月兮!

彼采萧兮,一日不见,如三秋兮!

彼采艾兮!一日不见,如三岁兮!

!!国风 王风 大车

大车槛槛,毳衣如菼。岂不尔思?畏子不敢。

大车啍々,毳衣如璊,岂不尔思?畏子不奔。

谷则异室,死则同穴。谓予不信,有如皎日。

!!国风 王风 丘中有麻

丘中有麻,彼留子嗟。彼留子嗟,将其来施施。

丘中有麦,彼留子国。彼留子国,将其来食。

丘中有李,彼留之子。彼留之子,贻我佩玖。
!!国风 卫风 淇奥

瞻彼淇奥,绿竹猗猗。有匪君子,如切如磋,如琢如磨,瑟兮僴兮,赫兮咺兮。有匪君子,终不可谖兮。

瞻彼淇奥,绿竹青青。有匪君子,充耳琇莹,会弁如星。瑟兮僴兮。赫兮咺兮,有匪君子,终不可谖兮。

瞻彼淇奥,绿竹如箦。有匪君子,如金如锡,如圭如璧。宽兮绰兮,猗重较兮。善戏谑兮,不为虐兮。

!!国风 卫风 考槃

考槃在涧,硕人之宽。独寐寤言,永矢弗谖。

考槃在阿,硕人之薖。独寐寤歌,永矢弗过。

考槃在陆,硕人之轴。独寐寤宿,永矢弗告。

!!国风 卫风 硕人

硕人其颀,衣锦褧衣。齐侯之子,卫侯之妻。东宫之妹,邢侯之姨,谭公维私。

手如柔荑,肤如凝脂,领如蝤蛴,齿如瓠犀,螓首蛾眉,巧笑倩兮,美目盼兮。

硕人敖敖,说于农郊。四牡有骄,朱幩镳镳。翟茀以朝。大夫夙退,无使君劳。

河水洋洋,北流活活。施罛濊濊,鳣鲔发发。葭菼揭揭,庶姜孽孽,庶士有朅。

!!国风 卫风 氓

氓之蚩蚩,抱布贸丝。匪来贸丝,来即我谋。送子涉淇,至于顿丘。匪我愆期,子无良媒。将子无怒,秋以为期。

乘彼垝垣,以望复关。不见复关,泣涕涟涟。既见复关,载笑载言。尔卜尔筮,体无咎言。以尔车来,以我贿迁。

桑之未落,其叶沃若。于嗟鸠兮!无食桑葚。于嗟女兮!无与士耽。士之耽兮,犹可说也。女之耽兮,不可说也。

桑之落矣,其黄而陨。自我徂尔,三岁食贫。淇水汤汤,渐车帷裳。女也不爽,士贰其行。士也罔极,二三其德。

三岁为妇,靡室劳矣。夙兴夜寐,靡有朝矣。言既遂矣,至于暴矣。兄弟不知,咥其笑矣。静言思之,躬自悼矣。

及尔偕老,老使我怨。淇则有岸,隰则有泮。总角之宴,言笑晏晏,信誓旦旦,不思其反。反是不思,亦已焉哉!

!!国风 卫风 竹竿

籊々竹竿,以钓于淇。岂不尔思?远莫致之。

泉源在左,淇水在右。女子有行,远兄弟父母。

淇水在右,泉源在左。巧笑之瑳,佩玉之傩。

淇水滺々,桧楫松舟。驾言出游,以写我忧。

!!国风 卫风 竹竿

籊々竹竿,以钓于淇。岂不尔思?远莫致之。

泉源在左,淇水在右。女子有行,远兄弟父母。

淇水在右,泉源在左。巧笑之瑳,佩玉之傩。

淇水滺々,桧楫松舟。驾言出游,以写我忧。

!!国风 卫风 芄兰

芄兰之支,童子佩觿。虽则佩觿,能不我知。容兮遂兮,垂带悸兮。

芄兰之叶,童子佩韘。虽则佩韘,能不我甲。容兮遂兮,垂带悸兮。

!!国风 卫风 河广

谁谓河广?一苇杭之。谁谓宋远?跂予望之。

谁谓河广?曾不容刀。谁谓宋远?曾不崇朝。

!!国风 卫风 伯兮

伯兮朅兮,邦之桀兮。伯也执殳,为王前驱。

自伯之东,首如飞蓬。岂无膏沐?谁适为容!

其雨其雨,杲杲出日。愿言思伯,甘心首疾。

焉得谖草?言树之背。愿言思伯。使我心痗。

!!国风 卫风 有狐

有狐绥绥,在彼淇梁。心之忧矣,之子无裳。

有狐绥绥,在彼淇厉。心之忧矣,之子无带。

有狐绥绥,在彼淇侧。心之忧矣,之子无服。

!!国风 卫风 木瓜

投我以木瓜,报之以琼琚。匪报也,永以为好也!

投我以木桃,报之以琼瑶。匪报也,永以为好也!

投我以木李,报之以琼玖。匪报也,永以为好也!
!!国风 魏风 葛屦

纠纠葛屦,可以履霜?掺掺女手,可以缝裳?要之襋之,好人服之。

好人提提,宛然左辟,佩其象揥。维是褊心,是以为刺。

!!国风 魏风 汾沮洳

彼汾沮洳,言采其莫。彼其之子,美无度。美无度,殊异乎公路。

彼汾一方,言采其桑。彼其之子,美如英。美如英,殊异乎公行。

彼汾一曲,言采其藚。彼其之子,美如玉。美如玉,殊异乎公族。

!!国风 魏风 园有桃

园有桃,其实之殽。心之忧矣,我歌且谣。不知我者,谓我士也骄。彼人是哉,子曰何其?心之忧矣,其谁知之?其谁知之,盖亦勿思!

园有棘,其实之食。心之忧矣,聊以行国。不知我者,谓我士也罔极。彼人是哉,子曰何其?心之忧矣,其谁知之?其谁知之,盖亦勿思!

!!国风 魏风 陟岵

陟彼岵兮,瞻望父兮。父曰:嗟!予子行役,夙夜无已。上慎旃哉,犹来!无止!

陟彼屺兮,瞻望母兮。母曰:嗟!予季行役,夙夜无寐。上慎旃哉,犹来!无弃!

陟彼冈兮,瞻望兄兮。兄曰:嗟!予弟行役,夙夜必偕。上慎旃哉,犹来!无死!

!!国风 魏风 十亩之间

十亩之间兮,桑者闲闲兮,行与子还兮。

十亩之外兮,桑者泄泄兮,行与子逝兮。

!!国风 魏风 伐檀

坎坎伐檀兮,置之河之干兮。河水清且涟猗。不稼不穑,胡取禾三百廛兮?

不狩不猎,胡瞻尔庭有县貆兮?彼君子兮,不素餐兮!

坎坎伐辐兮,置之河之侧兮。河水清且直猗。不稼不穑,胡取禾三百亿兮?

不狩不猎,胡瞻尔庭有县特兮?彼君子兮,不素食兮!

坎坎伐轮兮,置之河之漘兮。河水清且沦猗。不稼不穑,胡取禾三百囷兮?

不狩不猎,胡瞻尔庭有县鹑兮?彼君子兮,不素飧兮!

!!国风 魏风 硕鼠

硕鼠硕鼠,无食我黍!三岁贯女,莫我肯顾。逝将去女,适彼乐土。乐土乐土,爰得我所。

硕鼠硕鼠,无食我麦!三岁贯女,莫我肯德。逝将去女,适彼乐国。乐国乐国,爰得我直。

硕鼠硕鼠,无食我苗!三岁贯女,莫我肯劳。逝将去女,适彼乐郊。乐郊乐郊,谁之永号?
!!国风 鄘风 柏舟

泛彼柏舟,在彼中河。髧彼两髦,实维我仪。之死矢靡它。母也天只,

不谅人只!

泛彼柏舟,在彼河侧。髧彼两髦,实维我特。之死矢靡慝。母也天只,

不谅人只!

!!国风 鄘风 墙有茨

墙有茨,不可扫也。中冓之言,不可道也。所可道也,言之丑也。

墙有茨,不可襄也。中冓之言,不可详也。所可详也,言之长也。

墙有茨,不可束也。中冓之言,不可读也。所可读也,言之辱也。

!!国风 鄘风 君子偕老

君子偕老,副笄六珈。委委佗佗,如山如河。象服是宜。子之不淑,云如之

何?

玼兮玼兮,其之翟也。鬒发如云,不屑髢也。玉之瑱也,象之揥也。扬且

之晳也。胡然而天也!胡然而帝也!

瑳兮瑳兮,其之展也,蒙彼绉絺,是绁袢也。子之清扬,扬且之颜也,

展如之人兮,邦之媛也!

!!国风 鄘风 桑中

爰采唐矣?沬之乡矣。云谁之思?美孟姜矣。期我乎桑中,要我乎上宫,

送我乎淇之上矣。

爰采麦矣?沬之北矣。云谁之思?美孟弋矣。期我乎桑中,要我乎上宫,

送我乎淇之上矣。

爰采葑矣?沬之东矣。云谁之思?美孟庸矣。期我乎桑中,要我乎上宫,

送我乎淇之上矣。

!!国风 鄘风 鹑之奔奔

鹑之奔奔,鹊之彊彊。人之无良,我以为兄!

鹊之彊彊,鹑之奔奔。人之无良,我以为君!

!!国风 鄘风 定之方中

定之方中,作于楚宫。揆之以日,作于楚室。树之榛栗,椅桐梓漆,爰伐琴瑟。

升彼虚矣,以望楚矣。望楚与堂,景山与京。降观于桑,卜云其吉,终然允臧。

灵雨既零,命彼倌人,星言夙驾,说于桑田。匪直也人,秉心塞渊,騋牝三千。

!!国风 鄘风 蝃蝀

蝃蝀在东,莫之敢指。女子有行,远父母兄弟。

朝隮于西,崇朝其雨。女子有行,远兄弟父母。

乃如之人也,怀婚姻也。大无信也,不知命也!

!!国风 鄘风 相鼠

相鼠有皮,人而无仪!人而无仪,不死何为?

相鼠有齿,人而无止!人而无止,不死何俟?

相鼠有体,人而无礼,人而无礼!胡不遄死?

!!国风 鄘风 干旄

孑孑干旄,在浚之郊。素丝纰之,良马四之。彼姝者子,何以畀之?

孑孑干旟,在浚之都。素丝组之,良马五之。彼姝者子,何以予之?

孑孑干旌,在浚之城。素丝祝之,良马六之。彼姝者子,何以告之?

!!国风 鄘风 载驰

载驰载驱,归唁卫侯。驱马悠悠,言至于漕。大夫跋涉,我心则忧。

既不我嘉,不能旋反。视尔不臧,我思不远。

既不我嘉,不能旋济?视尔不臧,我思不閟。

陟彼阿丘,言采其蝱。女子善怀,亦各有行。许人尤之,众稚且狂。

我行其野,芃芃其麦。控于大邦,谁因谁极?大夫君子,无我有尤。百尔所思,不如我所之。
!!国风 召南 鹊巢

维鹊有巢,维鸠居之。之子于归,百两御之。

维鹊有巢,维鸠方之。之子于归,百两将之。

维鹊有巢,维鸠盈之。之子于归,百两成之。

!!国风 召南 采蘩

于以采蘩?于沼于沚。于以用之?公侯之事。

于以采蘩?于涧之中。于以用之?公侯之宫。

被之僮僮,夙夜在公。被之祁祁,薄言还归。

!!国风 召南 草虫

喓々草虫,趯趯阜螽。未见君子,忧心忡忡。

亦既见止,亦既覯止,我心则降。

陟彼南山,言采其蕨。未见君子,忧心惙々。

亦既见止,亦既覯止,我心则说。

陟彼南山,言采其薇。未见君子,我心伤悲。

亦既见止,亦既覯止,我心则夷。

!!国风 召南 采蘋

于以采蘋?南涧之滨。于以采藻?于彼行潦。

于以盛之?维筐及筥。于以湘之?维锜及釜。

于以奠之?宗室牖下。谁其尸之?有齐季女。

!!国风 召南 甘棠

蔽芾甘棠,勿剪勿伐,召伯所茏。

蔽芾甘棠,勿剪勿败,召伯所憩。

蔽芾甘棠,勿剪勿拜,召伯所说。

!!国风 召南 行露

厌浥行露,岂不夙夜,谓行多露。

谁谓雀无角?何以穿我屋?谁谓女无家?

何以速我狱?虽速我狱,室家不足!

谁谓鼠无牙?何以穿我墉?谁谓女无家?

何以速我讼?虽速我讼,亦不女从!

!!国风 召南 羔羊

羔羊之皮,素丝五紽。退食自公,委蛇委蛇。

羔羊之革,素丝五緎。委蛇委蛇,自公退食。

羔羊之缝,素丝五緫。委蛇委蛇,退食自公。

!!国风 召南 殷其雷

殷其雷,在南山之阳。何斯违斯,莫敢或遑?振振君子,归哉归哉!

殷其雷,在南山之侧。何斯违斯,莫敢遑息?振振君子,归哉归哉!

殷其雷,在南山之下。何斯违斯,莫或遑处?振振君子,归哉归哉!

!!国风 召南 摽有梅

摽有梅,其实七兮。求我庶士,迨其吉兮。

摽有梅,其实三兮。求我庶士,迨其今兮。

摽有梅,顷筐塈之。求我庶士,迨其谓之。

!!国风 召南 小星

嘒彼小星,三五在东。肃肃宵征,夙夜在公。寔命不同!

嘒彼小星,维参与昴。肃肃宵征,抱衾与裯。寔命不犹!

!!国风 召南 江有汜

江有汜,之子归,不我以。不我以,其后也悔。

江有渚,之子归,不我与。不我与,其后也处。

江有沱,之子归,不我过。不我过,其啸也歌。

!!国风 召南 野有死麕

野有死麕,白茅包之。有女怀春,吉士诱之。

林有朴樕,野有死鹿。白茅纯束,有女如玉。

舒而脱脱兮,无感我帨兮,无使尨也吠。

!!国风 召南 何彼襛矣

何彼襛矣,唐棣之华?曷不肃雍?王姬之车。

何彼襛矣,华如桃李?平王之孙,齐侯之子。

其钓维何?维丝伊缗。齐侯之子,平王之孙。

!!国风 召南 驺虞

彼茁者葭,壹发五豝,于嗟乎驺虞!

彼茁者蓬,壹发五豵,于嗟乎驺虞!
!!国风 郑风 缁衣

缁衣之宜兮,敝予又改为兮。适子之馆兮。还予授子之粲兮。

缁衣之好兮,敝予又改造兮。适子之馆兮,还予授子之粲兮。

缁衣之席兮,敝予又改作兮。适子之馆兮,还予授子之粲兮。

!!国风 郑风 将仲子

将仲子兮,无逾我里,无折我树杞。岂敢爱之?畏我父母。仲可怀也,父母之言亦可畏也。

将仲子兮,无逾我墙,无折我树桑。岂敢爱之?畏我诸兄。仲可怀也,诸兄之言亦可畏也。

将仲子兮,无逾我园,无折我树檀。岂敢爱之?畏人之多言。仲可怀也,人之多言亦可畏也。

!!国风 郑风 叔于田

叔于田,巷无居人。岂无居人?不如叔也。洵美且仁。

叔于狩,巷无饮酒。岂无饮酒?不如叔也。洵美且好。

叔适野,巷无服马。岂无服马?不如叔也。洵美且武。

!!国风 郑风 大叔于田

大叔于田,乘乘马。执辔如组,两骖如舞。叔在薮,火烈具举。袒裼暴虎,献于公所。将叔无狃,戒其伤女。

叔于田,乘乘黄。两服上襄,两骖雁行。叔在薮,火烈具扬。叔善射忌,又良御忌。抑罄控忌,抑纵送忌。

叔于田,乘乘鸨。两服齐首,两骖如手。叔在薮,火烈具阜。叔马慢忌,叔发罕忌,抑释掤忌,抑鬯弓忌。

!!国风 郑风 清人

清人在彭,驷介旁旁。二矛重英,河上乎翱翔。

清人在消,驷介麃麃。二矛重乔,河上乎逍遥。

清人在轴,驷介陶陶。左旋右抽,中军作好。

!!国风 郑风 羔裘

羔裘如濡,洵直且侯。彼其之子,舍命不渝。

羔裘豹饰,孔武有力。彼其之子,邦之司直。

羔裘晏兮,三英粲兮。彼其之子,邦之彦兮。

!!国风 郑风 遵大路

遵大路兮,掺执子之衤去兮。无我恶兮,不寁故也!

遵大路兮,掺执子之手兮。无我魗兮,不寁好也!

!!国风 郑风 女曰鸡鸣

女曰鸡鸣,士曰昧旦。子兴视夜,明星有烂。将翱将翔,弋凫与雁。

弋言加之,与子宜之。宜言饮酒,与子偕老。琴瑟在御,莫不静好。

知子之来之,杂佩以赠之。知子之顺之,杂佩以问之。知子之好之,杂佩以报之。

!!国风 郑风 有女同车

有女同车,颜如舜华。将翱将翔,佩玉琼琚。彼美孟姜,洵美且都。

有女同行,颜如舜英。将翱将翔,佩玉将将。彼美孟姜,德音不忘。

!!国风 郑风 山有扶苏

山有扶苏,隰有荷华。不见子都,乃见狂且。

山有乔松,隰有游龙,不见子充,乃见狡童。

!!国风 郑风 萚兮

萚兮萚兮,风其吹女。叔兮伯兮,倡予和女。

萚兮萚兮,风其漂女。叔兮伯兮,倡予要女。

!!国风 郑风 狡童

彼狡童兮,不与我言兮。维子之故,使我不能餐兮。

彼狡童兮,不与我食兮。维子之故,使我不能息兮。

!!国风 郑风 褰裳

子惠思我,褰裳涉溱。子不我思,岂无他人?狂童之狂也且!

子惠思我,褰裳涉洧。子不我思,岂无他士?狂童之狂也且!

!!国风 郑风 丰

子之丰兮,俟我乎巷兮,悔予不送兮。

子之昌兮,俟我乎堂兮,悔予不将兮。

衣锦褧衣,裳锦褧裳。叔兮伯兮,驾予与行。

裳锦褧裳,衣锦褧衣。叔兮伯兮,驾予与归。

!!国风 郑风 东门之墠

东门之墠,茹藘在阪。其室则迩,其人甚远。

东门之栗,有践家室。岂不尔思?子不我即!

!!国风 郑风 风雨

风雨凄凄,鸡鸣喈喈,既见君子。云胡不夷?

风雨潇潇,鸡鸣胶胶。既见君子,云胡不瘳?

风雨如晦,鸡鸣不已。既见君子,云胡不喜?

!!国风 郑风 子衿

青青子衿,悠悠我心。纵我不往,子宁不嗣音?

青青子佩,悠悠我思。纵我不往,子宁不来?

挑兮达兮,在城阙兮。一日不见,如三月兮。

!!国风 郑风 扬之水

扬之水,不流束楚。终鲜兄弟,维予与女。无信人之言,人实迋女。

扬之水,不流束薪。终鲜兄弟,维予二人。无信人之言,人实不信。

!!国风 郑风 出其东门

出其东门,有女如云。虽则如云。匪我思存。缟衣綦巾,聊乐我员。

出其闉阇,有女如荼。虽则如荼,匪我思且。缟衣茹藘,聊可与娱。

!!国风 郑风 野有蔓草

野有蔓草,零露漙兮。有美一人,清扬婉兮。邂逅相遇,适我愿兮。

野有蔓草,零露瀼瀼。有美一人,婉如清扬。邂逅相遇,与子偕臧。

!!国风 郑风 溱洧

溱与洧,方涣涣兮。士与女,方秉蕳兮。女曰观乎?士曰既且。且往观乎?洧之外,洵訏且乐。维士与女,伊其相谑,赠之以勺药。

溱与洧,浏其清矣。士与女,殷其盈矣。女曰观乎?士曰既且。且往观乎?洧之外,洵訏且乐。维士与女,伊其将谑,赠之以勺药。

!!国风 周南 关雎

关关雎鸠,在河之洲。窈窕淑女,君子好逑。

参差荇菜,左右流之。窈窕淑女,寤寐求之。

求之不得,寤寐思服。悠哉悠哉,辗转反侧。

参差荇菜,左右采之。窈窕淑女,琴瑟友之。

参差荇菜,左右芼之。窈窕淑女,钟鼓乐之。

!!国风 周南 葛覃

葛之覃兮,施于中谷,维叶萋萋。黄鸟于飞,集于灌木,其鸣喈喈。

葛之覃兮,施于中谷,维叶莫莫。是刈是濩,为絺为绤,服之无斁。

言告师氏,言告言归。薄汙我私,薄浣我衣。害浣害否,归宁父母。

!!国风 周南 卷耳

采采卷耳,不盈顷筐。嗟我怀人,置彼周行。

陟彼崔嵬,我马虺隤。我姑酌彼金罍,维以不永怀。

陟彼高冈,我马玄黄。我姑酌彼兕觥,维以不永伤。

陟彼砠矣,我马瘏矣,我仆痡矣,云何吁矣。

!!国风 周南 樛木

南有樛木,葛藟累之。乐只君子,福履绥之。

南有樛木,葛藟荒之。乐只君子,福履将之。

南有樛木,葛藟萦之。乐只君子,福履成之。

!!国风 周南 螽斯

螽斯羽,诜诜兮。宜尔子孙,振振兮。

螽斯羽,薨薨兮。宜尔子孙。绳绳兮。

螽斯羽,揖揖兮。宜尔子孙,蛰蛰兮。

!!国风 周南 桃夭

桃之夭夭,灼灼其华。之子于归,宜其室家。

桃之夭夭,有蕡其实。之子于归,宜其家室。

桃之夭夭,其叶蓁蓁。之子于归,宜其家人。

!!国风 周南 兔罝

肃肃兔罝,椓之丁丁。赳赳武夫,公侯干城。

肃肃兔罝,施于中逵。赳赳武夫,公侯好仇。

肃肃免罝,施于中林。赳赳武夫,公侯腹心。

!!国风 周南 芣苡

采采芣苡,薄言采之。采采芣苡,薄言有之。

采采芣苡,薄言掇之。采采芣苡,薄言捋之。

采采芣苡,薄言袺之。采采芣苡,薄言襭之。

!!国风 周南 汉广

南有乔木,不可休息。汉有游女,不可求思。

汉之广矣,不可泳思。江之永矣,不可方思。

翘翘错薪,言刈其楚。之子于归,言秣其马。

汉之广矣,不可泳思。江之永矣,不可方思。

翘翘错薪,言刈其蒌。之子于归。言秣其驹。

汉之广矣,不可泳思。江之永矣,不可方思。

!!国风 周南 汝坟

遵彼汝坟,伐其条枚。未见君子,惄如调饥。

遵彼汝坟,伐其条肄。既见君子,不我遐弃。

鲂鱼赪尾,王室如燬。虽则如毁,父母孔迩。

!!国风 周南 麟之趾

麟之趾,振振公子,于嗟麟兮。

麟之定,振振公姓,于嗟麟兮。

麟之角,振振公族,于嗟麟兮。
  桓公(元年~十八年)

  

  !桓公元年

  【经】元年春王正月,公即位。三月,公会郑伯于垂,郑伯以璧假许田。夏四月丁未,公及郑伯盟于越。秋,大水。冬十月。

  

  【传】元年春,公即位,修好于郑。郑人请复祀周公,卒易祊田。公许之。

  三月,郑伯以璧假许田,为周公、祊故也。

  夏四月丁未,公及郑伯盟于越,结祊成也。盟曰:“渝盟无享国。”

  秋,大水。凡平原出水为大水。

  冬,郑伯拜盟。

  宋华父督见孔父之妻于路,目逆而送之,曰:“美而艳。”

  

  

  !桓公二年

  【经】二年春,王正月戊申,宋督弑其君与夷及其大夫孔父。滕子来朝。三月,公会齐侯、陈侯、郑伯于稷,以成宋乱。夏四月,取郜大鼎于宋。戊申,纳于大庙。秋七月,杞侯来朝。蔡侯、郑伯会于邓。九月,入杞。公及戎盟于唐。

  冬,公至自唐。

  

  【传】二年春,宋督攻孔氏,杀孔父而取其妻。公怒,督惧,遂弑殇公。

  君子以督为有无君之心而后动于恶,故先书弑其君。会于稷以成宋乱,为赂故,立华氏也。

  宋殇公立,十年十一战,民不堪命。孔父嘉为司马,督为大宰,故因民之不堪命,先宣言曰:“司马则然。”已杀孔父而弑殇公,召庄公于郑而立之,以亲郑。以郜大鼎赂公,齐、陈、郑皆有赂,故遂相宋公。

  夏四月,取郜大鼎于宋。戊申,纳于大庙。非礼也。臧哀伯谏曰:“君人者将昭德塞违,以临照百官,犹惧或失之。故昭令德以示子孙:是以清庙茅屋,大路越席,大羹不致,粢食不凿,昭其俭也。衮、冕、黻、珽,带、裳、幅、舄,衡、紞、纮、綖,昭其度也。藻、率、鞞、革咅,鞶、厉、游、缨,昭其数也。

  火、龙、黼、黻,昭其文也。五色比象,昭其物也。锡、鸾、和、铃,昭其声也。

  三辰旂旗,昭其明也。夫德,俭而有度,登降有数。文物以纪之,声明以发之,以临照百官,百官于是乎戒惧,而不敢易纪律。今灭德立违,而置其赂器于大庙,以明示百官,百官象之,其又何诛焉?国家之败,由官邪也。官之失德,宠赂章也。郜鼎在庙,章孰甚焉?武王克商,迁九鼎于雒邑,义士犹或非之,而况将昭违乱之赂器于大庙,其若之何?”公不听。周内史闻之曰:“臧孙达其有后于鲁乎!君违不忘谏之以德。”

  秋七月,杞侯来朝,不敬。杞侯归,乃谋伐之。

  蔡侯、郑伯会于邓,始惧楚也。

  九月,入杞,讨不敬也。

  公及戎盟于唐,修旧好也。

  冬,公至自唐,告于庙也。凡公行,告于宗庙;反行,饮至、舍爵,策勋焉,礼也。

  特相会,往来称地,让事也。自参以上,则往称地,来称会,成事也。

  初,晋穆侯之夫人姜氏以条之役生太子,命之曰仇。其弟以千亩之战生,命之曰成师。师服曰:“异哉,君之名子也!夫名以制义,义以出礼,礼以体政,政以正民。是以政成而民听,易则生乱。嘉耦曰妃,怨耦曰仇,古之命也。今君命大子曰仇,弟曰成师,始兆乱矣,兄其替乎?”惠之二十四年,晋始乱,故封桓叔于曲沃,靖侯之孙栾宾傅之。师服曰:“吾闻国家之立也,本大而末小,是以能固。故天子建国,诸侯立家,卿置侧室,大夫有贰宗,士有隶子弟,庶人、工、商,各有分亲,皆有等衰。是以民服事其上而下无觊觎。今晋,甸侯也,而建国。本既弱矣,其能久乎?”惠之三十年,晋潘父弑昭侯而立桓叔,不克。晋人立孝侯。

  惠之四十五年,曲沃庄伯伐翼,弑孝侯。翼人立其弟鄂侯。鄂侯生哀侯。哀侯侵陉庭之田。陉庭南鄙启曲沃伐翼。

  

  

  !桓公三年

  【经】三年春正月,公会齐侯于嬴。夏,齐侯、卫侯胥命于蒲。六月,公会杞侯于郕。秋七月壬辰朔,日有食之,既。公子翚如齐逆女。九月,齐侯送姜氏于欢。公会齐侯于欢。夫人姜氏至自齐。冬,齐侯使其弟年来聘。有年。

  

  【传】三年春,曲沃武公伐翼,次于陉庭,韩万御戎,梁弘为右,逐翼侯于汾隰,骖絓而止。夜获之,及栾共叔。

  会于嬴,成昏于齐也。

  夏,齐侯、卫侯胥命于蒲,不盟也。

  公会杞侯于欢,杞求成也。

  秋,公子翚如齐逆女。修先君之好,故曰“公子”。

  齐侯送姜氏于欢,非礼也。凡公女嫁于敌国,姊妹则上卿送之,以礼于先君;公子则下卿送之;于大国,虽公子亦上卿送之;于天子,则诸卿皆行,公不自送;于小国,则上大夫送之。

  冬,齐仲年来聘,致夫人也。

  芮伯万之母芮姜恶芮伯之多宠人也,故逐之,出居于魏。

  

  

  !桓公四年

  【经】四年春正月,公狩于郎。夏,天王使宰渠伯纠来聘。

  

  【传】四年春正月,公狩于郎。书,时,礼也。

  夏,周宰渠伯纠来聘。父在,故名。

  秋,秦师侵芮,败焉,小之也。

  冬,王师、秦师围魏,执芮伯以归。

  

  

  !桓公五年

  【经】五年春正月,甲戌、己丑,陈侯鲍卒。夏,齐侯郑伯如纪。天王使仍叔之子来聘。葬陈桓公。城祝丘。秋,蔡人、卫人、陈人从王伐郑。大雩。螽。

  冬,州公如曹。

  

  【传】五年春正月,甲戌,己丑,陈侯鲍卒,再赴也。于是陈乱,文公子佗杀大子免而代之。公疾病而乱作,国人分散,故再赴。

  夏,齐侯、郑伯朝于纪,欲以袭之。纪人知之。

  王夺郑伯政,郑伯不朝。

  秋,王以诸侯伐郑,郑伯御之。

  王为中军;虢公林父将右军,蔡人、卫人属焉;周公黑肩将左军,陈人属焉。

  郑子元请为左拒以当蔡人、卫人,为右拒以当陈人,曰:“陈乱,民莫有斗心,若先犯之,必奔。王卒顾之,必乱。蔡、卫不枝,固将先奔,既而萃于王卒,可以集事。”从之。曼伯为右拒,祭仲足为左拒,原繁、高渠弥以中军奉公,为鱼丽之陈,先偏后伍,伍承弥缝。战于繻葛,命二拒曰:“旝动而鼓。”蔡、卫、陈皆奔,王卒乱,郑师合以攻之,王卒大败。祝聃射王中肩,王亦能军。祝聃请从之。公曰:“君子不欲多上人,况敢陵天子乎!苟自救也,社稷无陨,多矣。”

  夜,郑伯使祭足劳王,且问左右。

  仍叔之子,弱也。

  秋,大雩,书,不时也。凡祀,启蛰而郊,龙见而雩,始杀而尝,闭蛰而烝。

  过则书。

  冬,淳于公如曹。度其国危,遂不复。

  

  

  !桓公六年

  【经】六年春正月,实来。夏四月,公会纪侯于成。秋八月壬午,大阅。蔡人杀陈佗。九月丁卯,子同生。冬,纪侯来朝。

  

  【传】六年春,自曹来朝。书曰“实来”,不复其国也。

  楚武王侵随,使薳章求成焉。军于瑕以待之。随人使少师董成。斗伯比言于楚子曰:“吾不得志于汉东也,我则使然。我张吾三军而被吾甲兵,以武临之,彼则惧而协以谋我,故难间也。汉东之国随为大,随张必弃小国,小国离,楚之利也。少师侈,请羸师以张之。”熊率且比曰:“季梁在,何益?”斗伯比曰:“以为后图,少师得其君。”王毁军而纳少师。

  少师归,请追楚师,随侯将许之。季梁止之曰:“天方授楚,楚之蠃,其诱我也,君何急焉?臣闻小之能敌大也,小道大淫。所谓道,忠于民而信于神也。

  上思利民,忠也;祝史正辞,信也。今民馁而君逞欲,祝史矫举以祭,臣不知其可也。”公曰:“吾牲牷肥腯,粢盛丰备,何则不信?”对曰:“夫民,神之主也。是以圣王先成民而后致力于神。故奉牲以告曰‘博硕肥腯’,谓民力之普存也,谓其畜之硕大蕃滋也,谓其不疾瘯蠡也,谓其备腯咸有也。奉盛以告曰‘洁粢丰盛’,谓其三时不害而民和年丰也。奉酒醴以告曰‘嘉栗旨酒’,谓其上下皆有嘉德而无违心也。所谓馨香,无谗慝也。故务其三时,修其五教,亲其九族,以致其禋祀。于是乎民和而神降之福,故动则有成。今民各有心,而鬼神乏主,君虽独丰,其何福之有!君姑修政而亲兄弟之国,庶免于难。”随侯惧而修政,楚不敢伐。

  夏,会于成,纪来咨谋齐难也。

  北戎伐齐,齐侯使乞师于郑。郑大子忽帅师救齐。六月,大败戎师,获其二帅大良、少良,甲首三百,以献于齐。于是,诸侯之大夫戍齐,齐人馈之饩,使鲁为其班,后郑。郑忽以其有功也,怒,故有郎之师。

  公之未昏于齐也,齐侯欲以文姜妻郑大子忽。大子忽辞,人问其故,大子曰:“人各有耦,齐大,非吾耦也。《诗》云:‘自求多福。’在我而已,大国何为?”君子曰:“善自为谋。”及其败戎师也,齐侯又请妻之,固辞。人问其故,大子曰:“无事于齐,吾犹不敢。今以君命奔齐之急,而受室以归,是以师昏也。民其谓我何?”遂辞诸郑伯。

  秋,大阅,简车马也。

  九月丁卯,子同生,以大子生之礼举之,接以大牢,卜士负之,士妻食之。

  公与文姜、宗妇命之。

  公问名于申繻。对曰:“名有五,有信,有义,有象,有假,有类。以名生为信,以德命为义,以类命为象,取于物为假,取于父为类。不以国,不以官,不以山川,不以隐疾,不以畜牲,不以器币。周人以讳事神,名,终将讳之。故以国则废名,以官则废职,以山川则废主,以畜牲则废祀,以器币则废礼。晋以僖侯废司徒,宋以武公废司空,先君献、武废二山,是以大物不可以命。”公曰:“是其生也,与吾同物,命之曰同。”

  冬,纪侯来朝,请王命以求成于齐,公告不能。

  

  

  !桓公七年

  【经】七年春二月己亥,焚咸丘。夏,谷伯绥来朝。邓侯吾离来朝。

  

  【传】七年春,谷伯、邓侯来朝。名,贱之也。

  夏,盟、向求成于郑,既而背之。

  秋,郑人、齐人、卫人伐盟、向。王迁盟、向之民于郏。

  冬,曲沃伯诱晋小子侯,杀之。

  

  

  !桓公八年

  【经】八年春正月己卯,烝。天王使家父来聘。夏五月丁丑,烝秋,伐邾。

  冬十月,雨雪。祭公来,遂逆王后于纪。

  

  【传】八年春,灭翼。

  随少师有宠。楚斗伯比曰:“可矣。仇有衅,不可失也。”

  夏,楚子合诸侯于沈鹿。黄、随不会,使薳章让黄。楚子伐随,军于汉、淮之间。

  季梁请下之:“弗许而后战,所以怒我而怠寇也。”少师谓随侯曰:“必速战。不然,将失楚师。”随侯御之,望楚师。季梁曰:“楚人上左,君必左,无与王遇。且攻其右,右无良焉,必败。偏败,众乃携矣。”少师曰:“不当王,非敌也。”弗从。战于速杞,随师败绩。随侯逸,斗丹获其戎车,与其戎右少师。

  秋,随及楚平。楚子将不许,斗伯比曰:“天去其疾矣,随未可克也。”乃盟而还。

  冬,王命虢仲立晋哀侯之弟缗于晋。

  祭公来,遂逆王后于纪,礼也。

  

  

  !桓公九年

  【经】九年春,纪季姜归于京师。夏四月,秋七月。冬,曹伯使其世子射姑来朝。

  

  【传】九年春,纪季姜归于京师。凡诸侯之女行,唯王后书。

  巴子使韩服告于楚,请与邓为好。楚子使道朔将巴客以聘于邓。邓南鄙鄾人攻而夺之币,杀道朔及巴行人。楚子使薳章让于邓,邓人弗受。

  夏,楚使斗廉帅师及巴师围鄾。邓养甥、聃甥帅师救鄾。三逐巴师,不克。

  斗廉衡陈其师于巴师之中,以战,而北。邓人逐之,背巴师而夹攻之。邓师大败,鄾人宵溃。

  秋,虢仲、芮伯、梁伯、荀侯、贾伯伐曲沃。

  冬,曹大子来朝,宾之以上卿,礼也。享曹大子,初献,乐奏而叹。施父曰:“曹大子其有忧乎?非叹所也。”

  

  

  !桓公十年

  【经】十年春王正月,庚申,曹伯终生卒。夏五月,葬曹桓公。秋,公会卫侯于桃丘,弗遇。冬十有二月丙午,齐侯、卫侯、郑伯来战于郎。

  

  【传】十年春,曹桓公卒。

  虢仲谮其大夫詹父于王。詹父有辞,以王师伐虢。夏,虢公出奔虞。

  秋,秦人纳芮伯万于芮。

  初,虞叔有玉,虞公求旃。弗献,既而悔之,曰:“周谚有之:‘匹夫无罪,怀璧其罪。’吾焉用此,其以贾害也?”乃献之。又求其宝剑。叔曰:“是无厌也。无厌,将及我。”遂伐虞公,故虞公出奔共池。

  冬,齐、卫、郑来战于郎,我有辞也。

  初,北戎病齐,诸侯救之。郑公子忽有功焉。齐人饩诸侯,使鲁次之。鲁以周班后郑。郑人怒,请师于齐。齐人以卫师助之。故不称侵伐。先书齐、卫,王爵也。

  

  

  !桓公十一年

  【经】十有一年春正月,齐人、卫人、郑人盟于恶曹。夏五月癸未,郑伯寤生卒。秋七月,葬郑庄公。九月,宋人执郑祭仲。突归于郑。郑忽出奔卫。柔会宋公、陈侯、蔡叔盟于折。公会宋公于夫钟。冬十月有二月,公会宋公于阚。

  

  【传】十一年春,齐、卫、郑、宋盟于恶曹。

  楚屈瑕将盟贰、轸。郧人军于蒲骚,将与随、绞、州、蓼伐楚师。莫敖患之。

  斗廉曰:“郧人军其郊,必不诫,且日虞四邑之至也。君次于郊郢,以御四邑。

  我以锐师宵加于郧,郧有虞心而恃其城,莫有斗志。若败郧师,四邑必离。”莫敖曰:“盍请济师于王?”对曰:“师克在和,不在众。商、周之不敌,君之所闻也。成军以出,又何济焉?”莫敖曰:“卜之?”对曰:“卜以决疑,不疑何卜?”遂败郧师于蒲骚,卒盟而还。郑昭公之败北戎也,齐人将妻之,昭公辞。

  祭仲曰:“必取之。君多内宠,子无大援,将不立。三公子皆君也。”弗从。

  夏,郑庄公卒。

  初,祭封人仲足有宠于庄公,庄公使为卿。为公娶邓曼,生昭公,故祭仲立之。宋雍氏女于郑庄公,曰雍姞,生厉公。雍氏宗有宠于宋庄公,故诱祭仲而执之,曰:“不立突,将死。”亦执厉公而求赂焉。祭仲与宋人盟,以厉公归而立之。

  秋九月丁亥,昭公奔卫。己亥,厉公立。

  

  

  !桓公十二年

  【经】十有二年春正月。夏六月壬寅,公会杞侯、莒子盟于曲池。秋七月丁亥,公会宋公、燕人盟于谷丘。八月壬辰,陈侯跃卒。公会宋公于虚。冬十有一月,公会宋公于龟。丙戌,公会郑伯,盟于武父。丙戌,卫侯晋卒。十有二月,及郑师伐宋。丁未,战于宋。

  

  【传】十二年夏,盟于曲池,平杞、莒也。

  公欲平宋、郑。秋,公及宋公盟于句渎之丘。宋成未可知也,故又会于虚。

  冬,又会于龟。宋公辞平,故与郑伯盟于武父。遂帅师而伐宋,战焉,宋无信也。

  君子曰:“苟信不继,盟无益也。《诗》云:‘君子屡盟,乱是用长。’无信也。”

  楚伐绞,军其南门。莫敖屈瑕曰:“绞小而轻,轻则寡谋,请无扞采樵者以诱之。”从之。绞人获三十人。明日,绞人争出,驱楚役徒于山中。楚人坐其北门,而覆诸山下,大败之,为城下之盟而还。

  伐绞之役,楚师分涉于彭。罗人欲伐之,使伯嘉谍之,三巡,数之。

  

  

  !桓公十三年

  【经】十有三年春二月,公会纪侯、郑伯。己巳,及齐侯、宋公、卫侯、燕人战。齐师、宋师、卫师、燕师败绩。三月,葬卫宣公。夏,大水。秋七月。冬十月。

  

  【传】十三年春,楚屈瑕伐罗,斗伯比送之。还,谓其御曰:“莫敖必败。

  举趾高,心不固矣。”遂见楚子曰:“必济师。”楚子辞焉。入告夫人邓曼。邓曼曰:“大夫其非众之谓,其谓君抚小民以信,训诸司以德,而威莫敖以刑也。

  莫敖狃于蒲骚之役,将自用也,必小罗。君若不镇抚,其不设备乎?夫固谓君训众而好镇抚之,召诸司而劝之以令德,见莫敖而告诸天之不假易也。不然,夫岂不知楚师之尽行也?”楚子使赖人追之,不及。

  莫敖使徇于师曰:“谏者有刑。”及鄢,乱次以济。遂无次,且不设备。及罗,罗与卢戎两军之。大败之。莫敖缢于荒谷,群帅囚于冶父以听刑。楚子曰:“孤之罪也。”皆免之。

  宋多责赂于郑,郑不堪命。故以纪、鲁及齐与宋、卫、燕战。不书所战,后也。

  郑人来请修好。

  

  

  !桓公十四年

  【经】十有四年春正月,公会郑伯于曹。无冰。夏五,郑伯使其弟语来盟。

  秋八月壬申,御廪灾。乙亥,尝。冬十有二月丁巳,齐侯禄父卒。宋人以齐人、蔡人、卫人、陈人伐郑。

  

  【传】十四年春,会于曹。曹人致饩,礼也。

  夏,郑子人来寻盟,且修曹之会。

  秋八月壬申,御廪灾。乙亥,尝。书,不害也。

  冬,宋人以诸侯伐郑,报宋之战也。焚渠门,入,及大逵。伐东郊,取牛首。

  以大宫之椽归,为卢门之椽。

  

  

  !桓公十五年

  【经】十有五年春二月,天王使家父来求车。三月乙未,天王崩。夏四月己巳,葬齐僖公。五月,郑伯突出奔蔡。郑世子忽复归于郑。许叔入于许。公会齐侯于艾。邾人、牟人、葛人来朝。秋九月,郑伯突入于栎。冬十有一月,公会宋公、卫侯、陈侯于衰,伐郑。

  

  【传】十五年春,天王使家父来求车,非礼也。诸侯不贡车、服,天子不私求财。

  祭仲专,郑伯患之,使其婿雍纠杀之。将享诸郊。雍姬知之,谓其母曰:“父与夫孰亲?”其母曰:“人尽夫也,父一而已,胡可比也?”遂告祭仲曰:“雍氏舍其室而将享子于郊,吾惑之,以告。”祭仲杀雍纠,尸诸周氏之汪。公载以出,曰:“谋及妇人,宜其死也。”夏,厉公出奔蔡。

  六月乙亥,昭公入。

  许叔入于许。

  公会齐侯于艾,谋定许也。

  秋,郑伯因栎人杀檀伯,而遂居栎。

  冬,会于衰,谋伐郑,将纳厉公也。弗克而还。

  

  

  !桓公十六年

  【经】十有六年春正月,公会宋公、蔡侯、卫侯于曹。夏四月,公会宋公、卫侯、陈侯、蔡侯伐郑。秋七月,公至自伐郑。冬,城向。十有一月,卫侯朔出奔齐。

  

  【传】十六年春正月,会于曹,谋伐郑也。

  夏,伐郑。

  秋七月,公至自伐郑,以饮至之礼也。

  冬,城向,书,时也。

  初,卫宣公烝于夷姜,生急子,属诸右公子。为之娶于齐,而美,公取之,生寿及朔,属寿于左公子。夷姜缢。宣姜与公子朔构急子。公使诸齐,使盗待诸莘,将杀之。寿子告之,使行。不可,曰:“弃父之命,恶用子矣!有无父之国则可也。”及行,饮以酒,寿子载其旌以先,盗杀之。急子至,曰:“我之求也。

  此何罪?请杀我乎!”又杀之。二公子故怨惠公。

  十一月,左公子洩、右公子职立公子黔牟。惠公奔齐。

  

  

  !桓公十七年

  【经】十有七年春正月丙辰,公会齐侯、纪侯盟于黄。二月丙午,公会邾仪父,盟于趡。夏五月丙午,及齐师战于奚。六月丁丑,蔡侯封人卒。秋八月,蔡季自陈归于蔡。癸巳,葬蔡桓侯。及宋人、卫人伐邾。冬十月朔,日有食之。

  

  【传】十七年春,盟于黄,平齐、纪,且谋卫故也。

  乃邾仪父盟于趡,寻蔑之盟也。

  夏,及齐师战于奚,疆事也。于是齐人侵鲁疆,疆吏来告,公曰:“疆场之事,慎守其一,而备其不虞。姑尽所备焉。事至而战,又何谒焉?”蔡桓侯卒。蔡人召蔡季于陈。

  秋,蔡季自陈归于蔡,蔡人嘉之也。

  伐邾,宋志也。

  冬十月朔,日有食之。不书日,官失之也。天子有日官,诸侯有日御。日官居卿以厎日,礼也。日御不失日,以授百官于朝。

  初,郑伯将以高渠弥为卿,昭公恶之,固谏,不听,昭公立,惧其杀己也。

  辛卯,弑昭公,而立公子亹。

  君子谓昭公知所恶矣。公子达曰:“高伯其为戮乎?复恶已甚矣。”

  

  

  !桓公十八年

  【经】十有八年春王正月,公会齐侯于泺。公与夫人姜氏遂如齐。夏四月丙子,公薨于齐。丁酉,公之丧至自齐。秋七月,冬十有二月己丑,葬我君桓公。

  

  【传】十八年春,公将有行,遂与姜氏如齐。申繻曰:“女有家,男有室,无相渎也,谓之有礼。易此,必败。”

  公会齐侯于泺,遂及文姜如齐。齐侯通焉。公谪之,以告。

  夏四月丙子,享公。使公子彭生乘公,公薨于车。

  鲁人告于齐曰:“寡君畏君之威,不敢宁居,来修旧好,礼成而不反,无所归咎,恶于诸侯。请以彭生除之。”齐人杀彭生。

  秋,齐侯师于首止,子亹会之,高渠弥相。七月戊戌,齐人杀子亹而轘高渠弥,祭仲逆郑子于陈而立之。是行也,祭仲知之,故称疾不往。人曰:“祭仲以知免。”仲曰:“信也。”

  周公欲弑庄王而立王子克。辛伯告王,遂与王杀周公黑肩。王子克奔燕。

  初,子仪有宠于桓王,桓王属诸周公。辛伯谏曰:“并后、匹嫡、两政、耦国,乱之本也。”周公弗从,故及。
  

  《礼记昏义》

  

  昏礼者,将合二姓之好,上以事宗庙而下以继后世也,故君子重之。是以昏礼纳采,问名,纳吉,纳征,请期,皆主人筵几于庙,而拜迎于门外。入,揖让而升,听命于庙,所以敬慎重正昏礼也。

  

  父亲醮子而命之迎,男先于女也。子承命以迎,主人筵几于庙,而拜迎于门外,婿执鴈入,揖让升堂,再拜奠鴈,盖亲受之于父母也。降出,御妇车,而婿授绥,御轮三周,先俟于门外。妇至,婿揖妇以入,共牢而食,合卺而酳,所以合体,同尊卑,以亲之也。

  

  敬慎重正而后亲之,礼之大体,而所以成男女之别而立夫妇之义也。男女有别而后夫妇有义,夫妇有义而后父子有亲,父子有亲而后君臣有正。故曰:昏礼者,礼之本也。

  

  夫礼始于冠,本于昏,重于丧祭,尊于朝聘,和于射乡。此礼之大体也。

  

  夙兴,妇沐浴以俟见。质明,赞见妇于舅姑,执笲,枣栗段修以见,赞醴妇,妇祭脯醢,祭醴,成妇礼也。舅姑入室,妇以特豚馈,明妇顺也。厥明,舅姑共飨妇,以一献之礼奠酬。舅姑先降自西阶,妇降自阼阶,以著代也。

  

  成妇礼,明妇顺,又申之以著代,所以重责妇顺焉也。妇顺者,顺于舅姑,和于室人,而后当于夫,以成丝麻布帛之事,以审守委积盖藏。是故妇顺备而后内和理,内和理而后家可长久也,故圣王重之。

  

  是以古者妇人先嫁三月,祖庙未毁,教于公宫,祖庙既毁,教于宗室。教以妇德,妇言,妇容,妇功。教成祭之,牲用鱼,芼之以苹藻,所以成妇顺也。

  

  古者天子后立六宫、三夫人、九嫔、二十七世妇、八十一御妻以听天下之内治,以明章妇顺,故天下内和而家理。天子立六官、三公、九卿、二十七大夫、八十一元士以听天下之外治,以明章天下之男教,故外和而国治。故曰:天子听男教,后听女顺;天子理阳道,后治阴德;天子听外治,后听内职。教顺成俗,外内和顺,国家理治,此之谓盛德。

  

  是故男教不修,阳事不得,适见于天,日为之食。妇顺不修,阴事不得,适见于天,月为之食。是故日食则天子素服而修六官之职,荡天下之阳事,月食则后素服而修六宫之职,荡天下之阴事。故天子之与后犹日之与月、阴之与阳,相须而后成者也。天子修男教,父道也;后修女顺,母道也。故曰:天子之与后犹父之与母也。故为天王服斩衰,服父之义也;为后服资衰,服母之义也。

  

[ ] 机器学习 - Coursera https://www.coursera.org/learn/machine-learning/home/week/1

!! 网站和索引

* ~TensorFlow 中文社区 http://www.tensorfly.cn
* 更多机器学习资源- ~TensorFlow 中文社区 http://www.tensorfly.cn
* 深度学习入门资源(主要是国外资源) - 萌新的学习日记 - 知乎专栏 https://zhuanlan.zhihu.com/p/29058973
* Awesome Deep Learning https://github.com/ChristosChristofidis/awesome-deep-learning
* 机器学习(Machine Learning)&深度学习(Deep Learning)资料(Chapter 1) https://github.com/ty4z2008/Qix/blob/master/dl.md
* Charlotte77 | 数学系的数据挖掘民工 - cnblogs http://www.cnblogs.com/charlotte77/

!! 书籍

* Deep Learning 中文翻译 https://github.com/exacity/deeplearningbook-chinese
* Deep Learning - An MIT Press book http://www.deeplearningbook.org
* Neural Networks and Deep Learning http://neuralnetworksanddeeplearning.com

!! 文章

* 如何入门深度学习? https://zhuanlan.zhihu.com/p/21475898
* 人人都可以做深度学习应用:入门篇 https://zhuanlan.zhihu.com/p/25482889
* MNIST机器学习入门 - ~TensorFlow 中文社区 http://www.tensorfly.cn/tfdoc/tutorials/mnist_beginners.html
* 深度学习如何入门?- 知乎回答 
** https://www.zhihu.com/question/26006703/answer/156451408
** https://www.zhihu.com/question/26006703/answer/229415675
* 原来理解 深度学习 这么简单!  www.sohu.com/a/139103528_463994

!! 课程

* 机器学习 - Coursera https://www.coursera.org/learn/machine-learning/home/week/1

!! 框架

* ~TensorFlow
* Caffe
* Torch
* Theano

!! 数学

关联:

* 机器学习应该准备哪些数学预备知识? - 知乎 https://www.zhihu.com/question/36324957
* 机器学习理论篇1:机器学习的数学基础 - DT新纪元 - 知乎专栏 https://zhuanlan.zhihu.com/p/25197792
* 机器学习中的基本数学知识 - steven yang - cnblogs http://www.cnblogs.com/steven-yang/p/6348112.html#微分differential
* [转载]《和机器学习和计算机视觉相关的数学(from LinDahua)》 - 科学网  http://blog.sciencenet.cn/blog-240720-284694.html


学习:

* 张宇高数十八讲【已完结】 - Bilibili https://www.bilibili.com/video/av12790754/
* 高等微積分 - 台大开放式课程

!! 参考

传统机器学习算法:感知机、SVM、LR、Softmax、Kmeans、DBSCAN、决策树(ID3、C4.5、CART)、GBDT、RF、xgboost、Adaboost、EM、BP神经网络、NB、LDA(fisher discrimination)、PCA、核函数、最大熵、logistic regression等等,目前想到这么多,下次博客会讲述我对它们的理解以及我的学习材料资源。

深度学习(DL是ML的一部分,不要认为DL中包含ML,推荐看看bengio老师的DL):CNN、RNN、LSTM、常用激活函数、adam等优化算法、梯度消失原因、梯度爆炸等。

自然语言理解(NPL):TF-IDF、textrank、word2vec等。

常用概念:最大似然估计(这是一个有故事的概念...)、最小二乘、模型融合方法、L1、L2正则、判别模型与生成模型、熵、KL散度、数据归一化、最优化方法(梯度下降、牛顿、共轭梯度等)、无偏估计、算法评估方法(FROC、ROC、PR、F1、AUC等)、交叉验证、bias-variance-trackoff、概率、高数、线代等等。

来源:[[从小白到机器学习算法工程师,我做了哪些准备?|http://blog.ihuxu.com/the-preparation-from-the-white-to-the-machine-learning-algorithm-engineer/]]
  

  季氏第十六

  

  季氏将伐颛臾。冉有、季路见于孔子曰:“季氏将有事于颛臾。”

  孔子曰:“求,无乃尔是过与?夫颛臾,昔者先王以为东蒙主,且在邦域之中矣,是社稷之臣也。何以伐为?”冉有曰:“夫子欲之,吾二臣者皆不欲也。”

  孔子曰:“求,周任有言曰:‘陈力就列,不能者止。’危而不持,颠而不扶,则将焉用彼相矣?且尔言过矣,虎兕出于柙,龟玉毁于椟中,是谁之过与?”冉有曰:“今夫颛臾,固而近于费,今不取,后世必为子孙忧。”

  孔子曰:“求,君子疾夫舍曰欲之而必为之辞。丘也闻有国有家者,不患寡而患不均,不患贫而患不安。盖均无贫,和无寡,安无倾。夫如是,故远人不服,则修文德以来之;既来之,则安之。今由与求也,相夫子,远人不服,而不能来也;邦分崩离析,而不能守也;而谋动干戈于邦内。吾恐季孙之忧,不在颛臾,而在萧墙之内也。”

  孔子曰:“天下有道,则礼乐征伐自天子出;天下无道,则礼乐征伐自诸侯出。自诸侯出,盖十世希不失矣;自大夫出,五世希不失矣;陪臣执国命,三世希不失矣。天下有道,则政不在大夫;天下有道,则庶人不议。”

  孔子曰:“禄之去公室五世矣,政逮于大夫四世矣,故夫三桓之子孙微矣。”

  孔子曰:“益者三友,损者三友。友直,友谅,友多闻,益矣。友便辟,友善柔,有便佞,损矣。”

  孔子曰:“益者三乐,损者三乐。乐节礼乐,乐道人之善,乐多贤友,益矣。

  乐骄乐,乐佚游,乐宴乐,损矣。”

  孔子曰:“侍于君子有三愆:言未及之而言谓之躁,言及之而不言谓之隐,未见颜色而言谓之瞽。”

  孔子曰:“君子有三戒:少之时,血气未定,戒之在色;及其壮也,血气方刚,戒之在斗;及其老也,血气既衰,戒之在得。”

  孔子曰:“君子有三畏:畏天命,畏大人,畏圣人之言。小人不知天命而不畏也,狎大人,侮圣人之言。”

  孔子曰:“生而知之者上也,学而知之者次也;困而学之,又其次也;困而不学,民斯为下矣。”

  孔子曰:“君子有九思:视思明,听思聪,色思温,貌思恭,言思忠,事思敬,疑思问,忿思难,见得思义。”

  孔子曰:“见善如不及,见不善如探汤。吾见其人矣。吾闻其语矣。隐居以求其志,行义以达其道。吾闻其语矣,未见其人也。”

  齐景公有马千驷,死之日,民无德而称焉。伯夷、叔齐饿于首阳之下,民到于今称之。其斯之谓与?陈亢问于伯鱼曰:“子亦有异闻乎?”对曰:“未也。尝独立,鲤趋而过庭,曰:‘学《诗》乎?’对曰:‘未也。’‘不学《诗》,无以言。’鲤退而学《诗》。他日又独立,鲤趋而过庭,曰:‘学《礼》乎?’对曰:‘未也。’‘不学《礼》,无以立。’鲤退而学《礼》。闻斯二者。”陈亢退而喜曰:“问一得三,闻《诗》,闻《礼》,又闻君子之远其子也。”

  邦君之妻,君称之曰夫人,夫人自称曰小童;邦人称之曰君夫人,称诸异邦曰寡小君;异邦人称之亦曰君夫人。

  
  《礼记祭法》

  祭法:有虞氏禘黄帝而郊喾,祖颛顼而宗尧;夏后氏亦禘黄帝而郊鲧,祖颛顼而宗禹;殷人禘喾而郊冥,祖契而宗汤;周人禘喾而郊稷,祖文王而宗武王。

  

  燔柴于泰坛,祭天也。瘗埋于泰折,祭地也。用骍犊。

  

  埋少牢于泰昭,祭时也;相近于坎坛,祭寒暑也;王宫,祭日也;夜明,祭月也;幽宗,祭星也;雩宗,祭水旱也;四坎坛,祭四方也。山林川谷丘陵能出云、为风雨、见怪物,皆曰神,有天下者祭百神。诸侯在其地则祭之,亡其地则不祭。

  

  大凡生于天地之间者皆曰命,其万物死皆曰折,人死曰鬼。此五代之所不变也。七代之所更立者,禘郊宗祖,其余不变也。

  

  天下有王,分地建国,置都立邑设庙祧坛墠而祭之,乃为亲疏多少之数。是故王立七庙,一坛一墠,曰考庙,曰王考庙,曰皇考庙,曰显考庙,曰祖考庙,皆月祭之。远庙为祧,有二祧,享尝乃止。去祧为坛,去坛为墠。坛墠,有祷焉祭之,无祷乃止。去墠曰鬼。诸侯立五庙,一坛一墠,曰考庙,曰王考庙,曰皇考庙,皆月祭之。显考庙,祖考庙,享尝乃止。去祖为坛,去坛为墠。坛墠,有祷焉祭之,无祷乃止。去墠为鬼。大夫立三庙二坛,曰考庙,曰王考庙,曰皇考庙。享尝乃止。显考祖,考无庙,有祷焉。为坛祭之,去坛为鬼。适士二庙一坛,曰考庙,曰王考庙。享尝乃止,显考无庙,有祷焉。为坛祭之,去坛为鬼。官师一庙,曰考庙。王考无庙,而祭之,去王考为鬼。庶士庶人无庙,死曰鬼。

  

  王为群姓立社,曰大社。王自为立社,曰王社。诸侯为百姓立社,曰国社。诸侯自为立社,曰侯社。大夫以下成群立社,曰置社。

  

  王为群姓立七祀:曰司命,曰中溜,曰国门,曰国行,曰泰厉,曰户,曰灶。王自为立七祀。诸侯为国立五祀:曰司命,曰中溜,曰国门,曰国行,曰公厉。诸侯自为立五祀。大夫立三祀:曰族厉,曰门,曰行。适士立二祀:曰门,曰行。庶士、庶人立一祀。或立户,或立灶。

  

  王下祭殇五:适子,适孙,适曾孙,适玄孙,适来孙。诸侯下祭三,大夫下祭二,适士及庶人祭子而止。

  

  夫圣王之制祭祀也,法施于民则祀之,以死勤事则祀之,以劳定国则祀之,能御大菑则祀之,能捍大患则祀之。是故厉山氏之有天下也,其子曰农,能殖百谷。夏之衰也,周弃继之,故祀以为稷。共工氏之霸九州也,其子曰后土,能平九州,故祀以为社。帝喾能序星辰以着众,尧能赏均刑法以义终,舜勤众事而野死,鲧鄣鸿水而殛死,禹能修鲧之功,黄帝正名百物,以明民共财,颛顼能修之,契为司徒而民成,冥勤其官而水死,汤以宽治民而除其虐,文王以文治,武王以武功,去民之菑,此皆有功烈于民者也。及夫日月星辰,民所瞻仰也。山林川谷丘陵,民所取财用也。非此族也,不在祀典。

  
  
  《礼记祭统》

  

  凡治人之道,莫急于礼。礼有五经,莫重于祭。夫祭者,非物自外至者也,自中出生于心也。心怵而奉之以礼,是故唯贤者能尽祭之义。

  

  贤者之祭也必受其福,非世所谓福也。福者备也,备者百顺之名也,无所不顺者谓之备,言内尽于己,而外顺于道也。忠臣以事其君,孝子以事其亲,其本一也。上则顺于鬼神,外则顺于君长,内则以孝于亲,如此之谓备。唯贤者能备,能备然后能祭。是故贤者之祭也,致其诚信,与其忠敬,奉之以物,道之以礼,安之以乐,参之以时,明荐之而已矣!不求其为,此孝子之心也。

  

  祭者,所以追养继孝也。孝者,畜也。顺于道、不逆于伦,是之谓畜。

  

  是故孝子之事亲也有三道焉:生则养,没则丧,丧毕则祭。养则观其顺也,丧则观其哀也,祭则观其敬而时也。尽此三道者,孝子之行也。

  

  既内自尽,又外求助,昏礼是也。故国君取夫人之辞曰:“请君之玉女与寡人共有敝邑、事宗庙社稷。”此求助之本也。夫祭也者,必夫妇亲之,所以备外内之官也,官备则具备。水草之菹,陆产之醢,小物备矣;三牲之俎,八簋之实,美物备矣;昆虫之异,草木之实,阴阳之物备矣。

  

  凡天之所生,地之所长,苟可荐者,莫不咸在,示尽物也。外则尽物,内则尽志,此祭之心也。是故天子亲耕于南郊,以共齐盛。王后蚕于北郊,以共纯服。诸侯耕于东郊,亦以共齐盛。夫人蚕于北郊,以共冕服。天子诸侯非莫耕也,王后夫人非莫蚕也,身致其诚信,诚信之谓尽,尽之谓敬,敬尽然后可以事神明。此祭之道也。

  

  及时将祭,君子乃齐。齐之为言齐也,齐不齐以致齐者也。是以君子非有大事也,非有恭敬也,则不齐。不齐则于物无防也,嗜欲无止也。及其将齐也,防其邪物,讫其嗜欲,耳不听乐。故记曰:“齐者不乐。”言不敢散其志也。心不苟虑,必依于道,手足不苟动,必依于礼。是故君子之齐也,专致其精明之德也。故散齐七日以定之,致齐三日以齐之。定之之谓齐,齐者精明之至也,然后可以交于神明也。是故先期旬有一日,宫宰宿夫人,夫人亦散齐七日,致齐三日。君致齐于外,夫人致齐于内,然后会于大庙。君纯冕立于阼,夫人副袆立于东房,君执圭瓒祼尸,大宗执璋瓒亚祼。及迎牲,君执纼,卿大夫从,士执刍,宗妇执盎从夫人。荐涗水,君执鸾刀,羞哜,夫人荐豆。此之谓夫妇亲之。

  

  及入舞,君执干戚就舞位。君为东上,冕而摠干,率其群臣,以乐皇尸。是故天子之祭也,与天下乐之。诸侯祭也,与竟内乐之。冕而摠干,率其群臣,以乐皇尸,此与竟内乐之之义也。

  

  夫祭有三重焉:献之属莫重于祼,声莫重于升歌,舞莫重于武宿夜。此周道也。凡三道者,所以假于外而以增君子之志也。故与志进退,志轻则亦轻,志重则亦重。轻其志而求外之重也,虽圣人弗能得也。是故君子之祭也,必身自尽也,所以明重也。道之以礼,以奉三重,而荐诸皇尸,此圣人之道也。

  

  夫祭有馂。馂者,祭之末也,不可不知也。是故古之人有言曰:“善终者如始。”馂其是已。是故古之君子曰:“尸亦馂鬼神之余也,惠术也,可以观政矣。”是故尸谡,君与卿四人馂。君起,大夫六人馂,臣馂君之余也。大夫起,士八人馂,贱馂贵之余也。士起,各执其具以出,陈于堂下,百官进,彻之,下馂上之余也。凡馂之道,每变以众,所以别贵贱之等而兴施惠之象也。是故以四簋黍,见其修于庙中也。庙中者,竟内之象也。祭者,泽之大者也。是故上有大泽,则惠必及下,顾上先下后耳,非上积重而下有冻馁之民也。是故上有大泽,则民夫人待于下流,知惠之必将至也,由馂见之矣!故曰:“可以观政矣!”

  

  夫祭之为物大矣,其兴物备矣,顺以备者也,其教之本与?是故君子之教也,外则教之以尊其君长,内则教之以孝于其亲。是故明君在上,则诸臣服从。崇事宗庙社稷,则子孙顺孝。尽其道端其义而教生焉。是故君子之事君也,必身行之。所不安于上,则不以使下;所恶于下,则不以事上。非诸人,行诸己,非教之道也。是故君子之教也,必由其本。顺之至也,祭其是与?故曰:“祭者教之本也已。”

  

  夫祭有十伦焉:见事鬼神之道焉,见君臣之义焉,见父子之伦焉,见贵贱之等焉,见亲疏之杀焉,见爵赏之施焉,见夫妇之别焉,见政事之均焉,见长幼之序焉,见上下之际焉。此之谓十伦。

  

  铺筵设同几,为依神也,诏祝于室,而出于祊,此交神明之道也。

  

  君迎牲而不迎尸,别嫌也。尸在庙门外则疑于臣,在庙中则全于君,君在庙门外则疑于君,入庙门则全于臣,全于子。是故不出者,明君臣之义也。

  

  夫祭之道,孙为王父尸,所使为尸者,于祭者子行也。父北面而事之,所以明子事父之道也。此父子之伦也。

  

  尸饮五,君洗玉爵献卿。尸饮七,以瑶爵献大夫。尸饮九,以散爵献士及群有司。皆以齿,明尊卑之等也。

  

  夫祭有昭穆,昭穆者,所以别父子、远近、长幼、亲疏之序而无乱也。是故有事于大庙,则群昭群穆咸在而不失其伦。此之谓亲疏之杀也。

  

  古者明君爵有德而禄有功,必赐爵禄于大庙,示不敢专也。故祭之日,一献,君降立于阼阶之南,南乡,所命北面,史由君右,执策命之,再拜稽首,受书以归,而舍奠于其庙。此爵赏之施也。

  

  君卷冕立于阼,夫人副袆立于东房,夫人荐豆执校,执醴授之执镫,尸酢夫人执柄,夫人授尸执足,夫妇相授受,不相袭处,酢必易爵,明夫妇之别也。

  

  凡为俎者,以骨为主,骨有贵贱:殷人贵髀,周人贵肩,凡前贵于后。殂者,所以明祭之必有惠也。是故贵者取贵骨,贱者取贱骨。贵者不重,贱者不虚,示均也。惠均则政行,政行则事成,事成则功立。功之所以立者,不可不知也。俎者,所以明惠之必均也,善为政者如此。故曰:“见政事之均焉。”

  

  凡赐爵,昭为一,穆为一。昭与昭齿,穆与穆齿,凡群有司皆以齿。此之谓长幼有序。

  

  夫祭有畀、辉、胞、翟、阍者,惠下之道也,唯有德之君为能行此。明足以见之,仁足以与之,畀之为言与也,能以其余畀其下者也。辉者甲吏之贱者也,胞者肉吏之贱者也翟者乐吏之贱者也,阍者守门之贱者也。古者不使刑人守门。此四守者,吏之至贱者也,尸又至尊,以至尊既祭之末而不忘至贱,而以其余畀之。是故明君在上,则竟内之民无冻馁者矣!此之谓上下之际。

  

  凡祭有四时:春祭曰礿,夏祭曰禘,秋祭曰尝,冬祭曰烝。礿、禘,阳义也;尝、烝,阴义也。禘者阳之盛也,尝者阴之盛也。故曰:“莫重于禘尝。”古者于禘也,发爵赐服,顺阳义也。于尝也,出田邑,发秋政,顺阴义也。故记曰:“尝之日,发公室。”示赏也。草艾则墨,未发秋政,则民弗敢草也。故曰:“禘尝之义大矣!治国之本也,不可不知也。”明其义者君也,能其事者臣也。不明其义,君人不全;不能其事,为臣不全。夫义者所以济志也,诸德之发也,是故其德盛者其志厚,其志厚者其义章,其义章者其祭也敬。祭敬,则竟内之子孙莫敢不敬矣。是故君子之祭也,必身亲莅之,有故则使人可也。虽使人也,君不失其义者,君明其义故也。其德薄者其志轻,疑于其义而求祭,使之必敬也弗可得已。祭而不敬,何以为民父母矣!

  

  夫鼎有铭。铭者自名也,自名以称扬其先祖之美而明着之后世者也。为先祖者莫不有美焉,莫不有恶焉,铭之义,称美而不称恶,此孝子孝孙之心也,唯贤者能之。铭者论譔其先祖之有德善、功烈、勋劳、庆赏、声名,列于天下而酌之祭器,自成其名焉,以祀其先祖者也。显扬先祖,所以崇孝也。身比焉,顺也。明示后世,教也。夫铭者,壹称而上下皆得焉耳矣。是故君子之观于铭也,既美其所称,又美其所为。为之者,明足以见之,仁足以与之,知足以利之,可谓贤矣。贤而勿伐,可谓恭矣。故卫孔悝之鼎铭曰:“六月丁亥,公假于大庙。公曰:‘叔舅,乃祖庄叔,左右成公。’成公乃命庄叔,随难于汉阳,即宫于宗周,奔走无射,启右献公。献公乃命成叔:‘纂乃祖服,乃考文叔,兴旧耆欲,作率庆士,躬恤卫国,其勤公家,夙夜不解。’民咸曰:‘休哉!’公曰:‘叔舅,予女铭,若纂乃考服。’悝拜稽首曰:‘对扬以辟之,勤大命,施于烝彝鼎。’”此卫孔悝之鼎铭也。古之君子,论譔其先祖之美而明着之后世者也,以比其身、以重其国家如此。子孙之守宗庙社稷者,其先祖无美而称之,是诬也。有善而弗知,不明也。知而弗传,不仁也。此三者君子之所耻也。

  

  昔者周公旦有勋劳于天下,周公既没,成王、康王追念周公之所以勋劳者而欲尊鲁,故赐之以重祭,外祭则郊社是也,内祭则大尝禘是也。夫大尝禘,升歌清庙,下而管象,朱干玉戚以舞大武,八佾以舞夏,此天子之乐也。康周公,故以赐鲁也。子孙纂之,至于今不废。所以明周公之德,而又以重其国也。

  
  《礼记祭义》

  祭不欲数,数则烦,烦则不敬。祭不欲疏,疏则怠,怠则忘。是故君子合诸天道,春禘秋尝。霜露既降,君子履之必有凄怆之心,非其寒之谓也。春雨露既濡,君子履之必有怵惕之心,如将见之。乐以迎来,哀以送往,故禘有乐而尝无乐。

  

  致齐于内,散齐于外。齐之日,思其居处,思其笑语,思其志意,思其所乐,思其所嗜。齐三日,乃见其所为齐者。

  

  祭之日,入室,僾然必有见乎其位;周还出户,肃然必有闻乎其容声;出户而听,忾然必有闻乎其叹息之声。

  

  是故先王之孝也,色不忘乎目,声不绝乎耳,心志嗜欲不忘乎心。致爱则存,致悫则着。着存不忘乎心,夫安得不敬乎?

  

  君子生则敬养,死则敬享,思终身弗辱也。君子有终身之丧,忌日之谓也。忌日不用,非不祥也。言夫日,志有所至,而不敢尽其私也。

  

  唯圣人为能飨帝,孝子为能飨亲。飨者乡也,乡之然后能飨焉。是故孝子临尸而不怍。君牵牲,夫人奠盎。君献尸,夫人荐豆。卿大夫相君,命妇相夫人,齐齐乎其敬也,愉愉乎其忠也,勿勿诸其欲其飨之也。

  

  文王之祭也,事死者如事生,思死者如不欲生。忌日必哀,称讳如见亲,祀之忠也。如见亲之所爱,如欲色然,其文王与?诗云:“明发不寐,有怀二人。”文王之诗也。祭之明日,明发不寐,飨而致之,又从而思之。祭之日,乐与哀半。飨之必乐,已至必哀。

  

  仲尼尝,奉荐而进,其亲也悫,其行也趋趋以数。已祭,子赣问曰:“子之言祭,济济漆漆然。今子之祭无济济漆漆,何也?”子曰:“济济者,容也,远也。漆漆者,容也,自反也。容以远,若容以自反也。夫何神明之及交?夫何济济漆漆之有乎?反馈乐成,荐其荐俎。序其礼乐,备其百官。君子致其济济漆漆,夫何慌惚之有乎?夫言岂一端而已,夫各有所当也。”

  

  孝子将祭,虑事不可以不豫,比时具物不可以不备,虚中以治之。

  

  宫室既修,墙屋既设,百物既备,夫妇齐戒,沐浴盛服,奉承而进之。洞洞乎、属属乎如弗胜,如将失之。其孝敬之心至也与!荐其荐俎,序其礼乐,备其百官,奉承而进之。于是谕其志意,以其慌惚以与神明交。庶或飨之,庶或飨之,孝子之志也。

  

  孝子之祭也,尽其悫而悫焉,尽其信而信焉,尽其敬而敬焉,尽其礼而不过失焉。进退必敬,如亲听命,则或使之也。

  

  孝子之祭可知也。其立之也敬以诎,其进之也敬以愉,其荐之也敬以欲。退而立,如将受命。已彻而退,敬齐之色不绝于面。孝子之祭也,立而不诎,固也。进而不愉,疏也。荐而不欲,不爱也。退立而不如受命,敖也。已彻而退,无敬齐之色,而忘本也。如是而祭,失之矣。

  

  孝子之有深爱者必有和气,有和气者必有愉色,有愉色者必有婉容。孝子如执玉,如奉盈,洞洞属属然如弗胜,如将失之。严威俨恪,非所以事亲也,成人之道也。

  

  先王之所以治天下者五:贵有德,贵贵,贵老,敬长,慈幼。此五者先王之所以定天下也。贵有德,何为也?为其近于道也。贵贵,为其近于君也;贵老,为其近于亲也;敬长,为其近于兄也;慈幼,为其近于子也。是故至孝近乎王,至弟近乎霸。至孝近乎王,虽天子必有父。至弟近乎霸,虽诸侯有必兄。先王之教因而弗改,所以领天下国家也。

  

  子曰:“立爱自亲始,教民睦也。立教自长始,教民顺也。教以慈睦,而民贵有亲。教以敬长,而民贵用命。孝以事亲,顺以听命,错诸天下,无所不行。”

  

  郊之祭也,丧者不敢哭,凶服者不敢入国门,敬之至也。

  

  祭之日,君牵牲,穆荅君,卿大夫序从。既入庙门,丽于碑,卿大夫袒,而毛牛尚耳,鸾刀以刲,取膟膋,乃退。爓祭祭腥而退,敬之至也。

  

  郊之祭,大报天而主日,配以月。夏后氏祭其闇,殷人祭其阳,周人祭日,以朝及闇。

  

  祭日于坛,祭月于坎。以别幽明,以制上下。

  

  祭日于东,祭月于西。以别外内,以端其位。

  

  日出于东,月生于西,阴阳长短,终始相巡,以致天下之和。

  

  天下之礼,致反始也,致鬼神也,致和用也,致义也,致让也。致反始以厚其本也,致鬼神以尊上也,致物用以立民纪也,致义则上下不悖逆矣,致让以去争也。合此五者以治天下之礼也,虽有奇邪而不治者,则微矣!

  

  宰我曰:“吾闻鬼神之名,不知其所谓。”子曰:“气也者,神之盛也。魄也者,鬼之盛也。合鬼与神,教之至也。”

  

  众生必死,死必归土,此之谓鬼。骨肉毙于下,阴为野土。

  

  其气发扬于上为昭明,焄蒿凄怆,此百物之精也,神之着也。

  

  因物之精制为之极,明命鬼神以为黔首,则百众以畏,万民以服。

  

  圣人以是为未足也,筑为宫室,设为宗祧以别亲疏远迩。教民反古复始,不忘其所由生也。众之服自此,故听且速也。

  

  二端既立,报以二礼,建设朝事,燔燎膻芗,见以萧光,以报气也。此教众反始也。荐黍稷羞肝肺,首心,见间以侠甒加以郁鬯,以报魄也。教民相爱,上下用情,礼之至也。君子反古复始,不忘其所由生也。是以致其敬、发其情,竭力从事以报其亲,不敢弗尽也。

  

  是故昔者天子为借千亩,冕而朱纮,躬秉耒。诸侯为借百亩,冕而青纮,躬秉耒。以事天地山川、社稷先古,以为醴酪齐盛,于是乎取之,敬之至也。

  

  古者天子诸侯必有养兽之官。及岁时,齐戒沐浴而躬朝之,牺牷祭牲,必于是取之,敬之至也。君召牛,纳而视之,择其毛而卜之,吉,然后养之。君皮弁素积,朔月月半君巡牲,所以致力,孝之至也。

  

  古者天子诸侯必有公桑蚕室,近川而为之,筑宫仞有三尺,棘墙而外闭之。及大昕之朝,君皮弁素积卜三宫之夫人,世妇之吉者,使入蚕于蚕室,奉种浴于川,桑于公桑,风戾以食之。岁既单矣,世妇卒蚕,奉茧以示于君,遂献茧于夫人,夫人曰:“此所以为君服与?”遂副袆而受之,因少牢以礼之。古之献茧者,其率用此与。及良日,夫人缫,三盆手,遂布于三宫夫人世妇之吉者,使缫遂朱绿之、玄黄之以为黼黻文章。服既成,君服以祀先王先公,敬之至也。

  

  君子曰:“礼乐不可斯须去身。”致乐以治心,则易直子谅之心油然生矣。易直子谅之心生则乐,乐则安,安则久,久则天,天则神。天则不言而信,神则不怒而威。致乐以治心者也,致礼以治躬则庄敬。庄敬则严威,心中斯须不和不乐,而鄙诈之心入之矣。外貌斯须不庄不敬,而慢易之心入之矣。故乐也者,动于内者也。礼也者,动于外者也。乐极和,礼极顺。内和而外顺,则民瞻其颜色而不与争也,望其容貌而众不生慢易焉。故德辉动乎内而民莫不承德,理发乎外而众莫不承顺。故曰:“致礼乐之道而天下塞焉,举而错之无难矣。”乐也者,动于内者也。礼者也,动于外者也。故礼主其减,乐主其盈。礼减而进,以进为文;乐盈而反,以反为文。礼减而不进则销,乐盈而不反则放。故礼有报而乐有反,礼得其报则乐,乐得其反则安。礼之报、乐之反,其义一也。

  

  曾子曰:“孝有三:大孝尊亲,其次弗辱,其下能养。”公明仪问于曾子曰:“夫子可以为孝乎?”曾子曰:“是何言与?是何言与?君子之所为孝者,先意承志,谕父母于道。参直养者也,安能为孝乎?”

  

  曾子曰:“身也者,父母之遗体也。行父母之遗体,敢不敬乎?居处不庄,非孝也;事君不忠,非孝也;莅官不敬,非孝也;朋友不信,非孝也;战陈无勇,非孝也。五者不遂,灾及于亲。敢不敬乎?亨孰膻芗尝而荐之,非孝也,养也。君子之所谓孝也者,国人称愿然曰‘幸哉’。有子如此,所谓孝也已。众之本,教曰孝,其行曰养。养可能也,敬为难。敬可能也,安为难。安可能也,卒为难。父母既没慎行其身,不遗父母恶名,可谓能终矣!仁者仁此者也,礼者履此者也,义者宜此者也,信者信此者也,强者强此者也。乐自顺此生,刑自反此作。”

  

  曾子曰:“夫孝,置之而塞乎天地,溥之而横乎四海,施诸后世而无朝夕,推而放诸东海而准,推而放诸西海而准,推而放诸南海而准,推而放诸北海而准。诗云:‘自西自东,自南自北,无思不服。’此之谓也。”

  

  曾子曰:“树木以时伐焉,禽兽以时杀焉。夫子曰:‘断一树、杀一兽不以其时,非孝也。’孝有三:小孝用力,中孝用劳,大孝不匮。思慈爱忘劳,可谓用力矣。尊仁安义,可谓用劳矣。博施备物,可谓不匮矣。父母爱之,喜而弗忘;父母恶之,惧而无怨;父母有过,谏而不逆;父母既没,必求仁者之粟以祀之。此之谓礼终。”

  

  乐正子春下堂而伤其足,数月不出,犹有忧色。门弟子曰:“夫子之足瘳矣,数月不出,犹有忧色,何也?”乐正子春曰:“善如尔之问也!善如尔之问也!吾闻诸曾子、曾子闻诸夫子曰:‘天之所生,地之所养,无人为大。父母全而生之,子全而归之,可谓孝矣。不亏其体,不辱其身,可谓全矣。故君子顷步而弗敢忘孝也。今予忘孝之道,予是以有忧色也。壹举足而不敢忘父母,壹出言而不敢忘父母。壹举足而不敢忘父母,是故道而不径,舟而不游,不敢以先父母之遗体行殆。壹出言而不敢忘父母,是故恶言不出于口,忿言不反于身。不辱其身,不羞其亲,可谓孝矣。”

  

  昔者有虞氏贵德而尚齿,夏后氏贵爵而尚齿,殷人贵富而尚齿,周人贵亲而尚齿。虞、夏、殷、周,天下之盛王也,未有遗年者。年之贵乎天下久矣!次乎事亲也。

  

  是故朝廷同爵则尚齿。七十杖于朝,君问则席。八十不俟朝,君问则就之。而弟达乎朝廷矣。行肩而不并,不错则随。见老者则车徒辟,斑白者不以其任行乎道路。而弟达乎道路矣。居乡以齿,而老穷不遗,强不犯弱,众不暴寡,而弟达乎州巷矣。古之道,五十不为甸徒,颁禽隆诸长者,而弟达乎獀狩矣。军旅什伍,同爵则尚齿,而弟达乎军旅矣。孝弟发诸朝廷,行乎道路,至乎州巷,放乎獀狩,修乎军旅,众以义死之,而弗敢犯也。

  

  祀乎明堂,所以教诸侯之孝也。食三老五更于大学,所以教诸侯之弟也。祀先贤于西学,所以教诸侯之德也。耕借,所以教诸侯之养也。朝觐,所以教诸侯之臣也。五者,天下之大教也。

  

  食三老五更于大学,天子袒而割牲,执酱而馈,执爵而酳,冕而摠干,所以教诸侯之弟也。是故乡里有齿而老穷不遗,强不犯弱,众不暴寡,此由大学来者也。天子设四学,当入学而大子齿。

  

  天子巡守,诸侯待于竟。天子先见百年者、八十九十者,东行、西行者弗敢过,西行东行者弗敢过。欲言政者,君就之可也。

  

  壹命齿于乡里,再命齿于族,三命不齿。族有七十者弗敢先。七十者,不有大故不入朝。若有大故而入,君必与之揖让,而后及爵者。

  

  天子有善,让德于天。诸侯有善,归诸天子。卿大夫有善,荐于诸侯。士庶人有善,本诸父母,存诸长老。禄爵庆赏,成诸宗庙,所以示顺也。昔者圣人建阴阳天地之情,立以为易。易抱龟南面,天子卷冕北面,虽有明知之心,必进断其志焉。示不敢专,以尊天也。善则称人,过则称己,教不伐,以尊贤也。

  

  孝子将祭祀,必有齐庄之心以虑事,以具服物,以修宫室,以治百事。及祭之日,颜色必温,行必恐,如惧不及爱然。其奠之也,容貌必温,身必诎,如语焉而未之然。宿者皆出,其立卑静以正,如将弗见然。及祭之后,陶陶遂遂,如将复入然。是故悫善不违身,耳目不违心,思虑不违亲,结诸心形诸色而术省之,孝子之志也。

  

  建国之神位,右社稷而左宗庙。
  

  《礼记间传》

  

  斩衰何以服苴?苴,恶貌也,所以首其内而见诸外也。斩衰貌若苴,齐衰貌若枲,大功貌若止,小功缌麻,容貌可也。此哀之发于容体者也。

  

  斩衰之哭,若往而不反。齐衰之哭,若往而反。大功之哭,三曲而偯。小功缌麻,哀容可也。此哀之发于声音者也。

  

  斩衰唯而不对,齐衰对而不言,大功言而不议,小功缌麻,议而不及乐。此哀之发于言语者也。

  

  斩衰三日不食,齐衰二日不食,大功三不食,小功缌麻再不食。士与敛焉,则壹不食。故父母之丧,既殡食粥,朝一溢米,莫一溢米。齐衰之丧,疏食水饮,不食菜果。大功之丧,不食醯酱,小功缌麻,不饮醴酒。此哀之发于饮食者也。

  

  父母之丧,既虞卒哭,疏食水饮,不食菜果。期而小祥,食菜果。又期而大祥,有醯酱。中月而禫,禫而饮醴酒。始饮酒者先饮醴酒,始食肉者先食干肉。

  

  父母之丧,居倚庐,寝苫枕块,不说绖带。齐衰之丧,居垩室,芐翦不纳。大功之丧,寝有席。小功缌麻,床可也。此哀之发于居处者也。

  

  父母之丧,既虞卒哭,柱楣翦屏,芐翦不纳。期而小祥,居垩室,寝有席。又期而大祥,居复寝。中月而禫,禫而床。

  

  斩衰三升,齐衰四升,五升,六升,大功七升,八升,九升,小功十升,十一升,十二升,缌麻十五升去其半。有事其缕,无事其布,曰缌。此哀之发于衣服者也。

  

  斩衰三升,既虞卒哭,受以成布六升,冠七升,为母疏衰四升,受以成布七升,冠八升,去麻服葛,葛带三重。期而小祥,练冠縓缘,要绖不除,男子除乎首,妇人除乎带。男子何为除乎首也,妇人何为除乎带也?男子重首,妇人重带,除服者先重者,易服者易轻者。又期而大祥,素缟麻衣。中月而禫,禫而纤,无所不佩。

  

  易服者,何为易轻者也?斩衰之丧,既虞卒哭。遭齐哀之丧,轻者包,重者特。既练,遭大功之丧,麻葛重。

  

  齐衰之丧,既虞卒哭,遭大功之丧,麻葛兼服之。

  

  斩衰之葛与齐衰之麻同,齐衰之葛与大功之麻同,大功之葛与小功之麻同,小功之葛与缌之麻同。麻同则兼服之,兼服之服重者,则易轻者也。

  

  
  
  《礼记郊特牲》

  郊特牲而社稷大牢。天子适诸侯,诸侯膳用犊;诸侯适天子,天子赐之礼大牢。贵诚之义也。故天子牲孕弗食也,祭帝弗用也,大路繁缨一就,先路三就,次路五就,郊血,大飨腥,三献爓,一献孰,至敬不飨味,而贵气臭也。诸侯为宾,灌用郁鬯,灌用臭也。大飨尚腶修而已矣。

  

  大飨君三重席而酢焉。三献之介,君专席而酢焉。此降尊以就卑也。

  

  飨禘有乐,而食尝无乐,阴阳之义也。凡饮,养阳气也。凡食,养阴气也。故春禘而秋尝,春飨孤子,秋食耆老,其义一也,而食尝无乐。饮,养阳气也,故有乐。食,养阴气也,故无声。凡声,阳也。

  

  鼎俎奇而笾豆偶,阴阳之义也。笾豆之实,水土之品也,不敢用亵味而贵多品,所以交于旦明之义也。

  

  宾入大门而奏肆夏,示易以敬也。卒爵而乐阕,孔子屡叹之。奠酬而工升歌,发德也。歌者在上,匏竹在下,贵人声也。乐由阳来者也,礼由阴作者也,阴阳和而万物得。

  

  旅币无方,所以别土地之宜,而节远迩之期也。龟为前列,先知也。以钟次之,以和居参之也。虎豹之皮,示服猛也。束帛加璧,往德也。

  

  庭燎之百,由齐桓公始也。大夫之奏肆夏也,由赵文子始也。

  

  朝觐大夫之私觌,非礼也。大夫执圭而使,所以申信也,不敢私觌,所以致敬也。而庭实私觌,何为乎诸侯之庭?为人臣者无外交,不敢贰君也。

  

  大夫而飨君,非礼也。大夫强而君杀之,义也,由三桓始也。天子无客礼,莫敢为主焉。君适其臣,升自阼阶,不敢有其室也。觐礼,天子不下堂而见诸侯。下堂而见诸侯,天子之失礼也。由夷王以下。

  

  诸侯之宫县而祭以白牡,击玉磬,朱干设钖,冕而舞大武,乘大路,诸侯之僭礼也。台门而旅树,反坫,绣黼丹朱中衣,大夫之僭礼也。故天子微,诸侯僭,大夫强,诸侯胁。于此相贵以等,相觌以货,相赂以利,而天下之礼乱矣。诸侯不敢祖天子,大夫不敢祖诸侯,而公庙之设于私家,非礼也,由三桓始也。

  

  天子存二代之后,犹尊贤也,尊贤不过二代。诸侯不臣寓公,故古者寓公不继世。

  

  君之南乡,荅阳之义也。臣之北面,荅君也。

  

  大夫之臣不稽首,非尊家臣,以辟君也。大夫有献弗亲,君有赐不面拜,为君之荅己也。

  

  乡人禓,孔子朝服立于阼,存室神也。

  

  孔子曰:“射之以乐也,何以听?何以射?”

  

  孔子曰:“士使之射,不能,则辞以疾,县弧之义也。”

  

  孔子曰:“三日齐,一日用之,犹恐不敬。二日伐鼓,何居?”

  

  孔子曰:“绎之于库门内,祊之于东方,朝市之于西方,失之矣!”

  

  社祭土而主阴气也,君南乡于北墉下,荅阴之义也。日用甲,用日之始也。天子大社,必受霜露风雨,以达天地之气也。是故丧国之社屋之,不受天阳也。薄社北牖,使阴明也。社所以神地之道也。地载万物,天垂象,取财于地,取法于天,是以尊天而亲地也。故教民美报焉。家主中溜,而国主社,示本也。唯为社事,单出里,唯为社田,国人毕作。唯社,丘乘共粢盛,所以报本反始也。

  

  季春出火,为焚也,然后简其车赋,而历其卒伍,而君亲誓社,以习军旅,左之右之,坐之起之,以观其习变也。而流示之禽,而盐诸利,以观其不犯命也。求服其志,不贪其得。故以战则克,以祭则受福。

  

  天子适四方,先柴。

  

  郊之祭也,迎长日之至也,大报天而主日也。兆于南郊,就阳位也。扫地而祭,于其质也。器用陶匏,以象天地之性也。于郊,故谓之郊。牲用骍,尚赤也,用犊,贵诚也。郊之用辛也,周之始郊,日以至,卜郊,受命于祖庙,作龟于祢宫,尊祖亲考之义也。卜之日,王立于泽,亲听誓命,受教谏之义也。献命库门之内,戒百官也。大庙之命,戒百姓也。祭之日,王皮弁以听祭报,示民严上也。丧者不哭,不敢凶服,泛埽反道,乡为田烛,弗命而民听上。祭之日,王被衮以象天,戴冕璪十有二旒,则天数也。乘素车,贵其质也。旗十有二旒,龙章而设日月,以象天也。天垂象,圣人则之,郊所以明天道也。帝牛不吉,以为稷牛。帝牛必在涤三月,稷牛唯具,所以别事天神与人鬼也。万物本乎天,人本乎祖,此所以配上帝也。郊之祭也,大报本反始也。

  

  天子大蜡八,伊耆氏始为蜡。蜡也者,索也。岁十二月,合聚万物而索飨之也。蜡之祭也,主先啬而祭司啬也。祭百种,以报啬也。飨农,及邮表畷,禽兽,仁之至,义之尽也。古之君子,使之必报之。迎猫,为其食田鼠也,迎虎,为其食田豕也,迎而祭之也。祭坊与水庸,事也。曰:土反其宅,水归其壑,昆虫毋作,草木归其泽。皮弁素服而祭,素服,以送终也。葛带榛杖,丧杀也。蜡之祭,仁之至,义之尽也。黄衣黄冠而祭,息田夫也。野夫黄冠,黄冠,草服也。

  

  大罗氏,天子之掌鸟兽者也,诸侯贡属焉。草笠而至,尊野服也。罗氏致鹿与女,而诏客告也,以戒诸侯曰:“好田好女者亡其国。”天子树瓜华,不敛藏之种也。八蜡,以记四方,四方年不顺成,八蜡不通,以谨民财也。顺成之方,其蜡乃通,以移民也。既蜡而收,民息已,故既蜡,君子不兴功。

  

  恒豆之菹,水草之和气也,其醢,陆产之物也。加豆,陆产也,其醢,水物也。笾豆之荐,水土之品也。不敢用常亵味而贵多品,所以交于神明之义也,非食味之道也。先王之荐,可食也而不可耆也。卷冕路车,可陈也而不可好也,武壮,而不可乐也。宗庙之威,而不可安也。宗庙之器,可用也而不可便其利也。所以交于神明者,不可以同于所安乐之义也。酒醴之美,玄酒明水之尚,贵五味之本也。黼黻文绣之美,疏布之尚,反女功之始也。莞簟之安,而蒲越、稿鞂之尚,明之也。大羹不和,贵其质也。大圭不琢,美其质也。丹漆雕几之美,素车之乘,尊其朴也,贵其质而已矣。所以交于神明者,不可同于所安亵之甚也,如是而后宜。鼎俎奇而笾豆偶,阴阳之义也。黄目,郁气之上尊也。黄者中也,目者,气之清明者也,言酌于中而清明于外也。祭天,扫地而祭焉,于其质而已矣。醯醢之美而煎盐之尚,贵天产也。割刀之用而鸾刀之贵,贵其义也。声和而后断也。

  

  冠义,始冠之缁布之冠也。大古冠布,齐则缁之,其緌也。孔子曰:“吾未之闻也,冠而敝之可也。”适子冠于阼,以着代也。醮于客位,加有成也。三加弥尊,喻其志也。冠而字之,敬其名也。委貌,周道也。章甫,殷道也。毋追,夏后氏之道也。周弁、殷冔、夏收,三王共皮弁素积。无大夫冠礼,而有其昏礼。古者五十而后爵,何大夫冠礼之有?诸侯之有冠礼,夏之末造也。天子之元子,士也,天下无生而贵者也。继世以立诸侯,象贤也。以官爵人,德之杀也。死而谥,今也。古者生无爵,死无谥。礼之所尊,尊其义也。失其义,陈其数,祝史之事也。故其数可陈也,其义难知也。知其义而敬守之,天子之所以治天下也。

  

  天地合,而后万物兴焉。夫昏礼,万世之始也。取于异姓,所以附远厚别也。币必诚,辞无不腆,告之以直信。信,事人也,信,妇德也,壹与之齐,终身不改,故夫死不嫁。男子亲迎,男先于女,刚柔之义也。天先乎地,君先乎臣,其义一也。执挚以相见,敬章别也。男女有别,然后父子亲,父子亲,然后义生,义生,然后礼作,礼作,然后万物安。无别无义,禽兽之道也。婿亲御授绥,亲之也。亲之也者,亲之也。敬而亲之,先王之所以得天下也。出乎大门而先,男帅女,女从男,夫妇之义由此始也。妇人从人者也,幼从父兄,嫁从夫,夫死从子。夫也者,夫也。夫也者,以知帅人者也。玄冕齐戒,鬼神阴阳也。将以为社稷主,为先祖后,而可以不致敬乎?共牢而食,同尊卑也。故妇人无爵,从夫之爵,坐以夫之齿。器用陶匏,尚礼然也。三王作牢,用陶匏,厥明,妇盥馈,舅姑卒食,妇馂余,私之也。舅姑降自西阶,妇降自阼阶,授之室也。昏礼不用乐,幽阴之义也。乐,阳气也。昏礼不贺,人之序也。

  

  有虞氏之祭也,尚用气。血、腥、爓祭,用气也。

  

  殷人尚声,臭味未成,涤荡其声,乐三阕,然后出迎牲。声音之号,所以诏告于天地之间也。周人尚臭,灌用鬯臭,郁合鬯,臭阴达于渊泉,灌以圭璋,用玉气也。既灌,然后迎牲,致阴气也。萧合黍稷,臭阳达于墙屋,故既奠,然后蓻萧合膻芗。凡祭慎诸此。魂气归于天,形魄归于地,故祭求诸阴阳之义也。殷人先求诸阳,周人先求诸阴。诏祝于室,坐尸于堂,用牲于庭,升首于室,直祭祝于主,索祭祝于祊,不知神之所在,于彼乎?于此乎?或诸远人乎?祭于祊,尚曰求诸远者与?祊之为言倞也,肵之为言敬也。富也者,福也。首也者,直也。相飨之也。嘏,长也,大也。尸,陈也。毛、血,告幽全之物也。告幽全之物者,贵纯之道也。血祭,盛气也。祭肺肝心,贵气主也。祭黍稷加肺,祭齐加明水,报阴也。取膟膋燔燎升首,报阳也。明水涗齐,贵新也。凡涗,新之也。其谓之明水也,由主人之絜着此水也。君再拜稽首,肉袒亲割,敬之至也。敬之至也,服也。拜,服也,稽首,服之甚也,肉袒,服之尽也。祭称孝孙孝子,以其义称也。称曾孙某,谓国家也。祭祀之相,主人自致其敬,尽其嘉,而无与让也。腥、肆、爓、腍祭,岂知神之所飨也?主人自尽其敬而已矣!举斝角,诏妥尸。古者尸无事则立,有事而后坐也。尸,神象也。祝,将命也。缩酌用茅,明酌也。醆酒涗于清,汁献涗于醆酒,犹明清与醆酒,于旧泽之酒也。祭有祈焉,有报焉,有由辟焉。齐之玄也,以阴幽思也。故君子三日齐,必见其所祭者。

  
 
  

  《礼记经解》

  

  孔子曰:“入其国,其教可知也。其为人也温柔敦厚,诗教也;疏通知远,书教也;广博易良,乐教也;絜静精微,易教也;恭俭庄敬,礼教也;属辞比事,春秋教也。故诗之失愚,书之失诬,乐之失奢,易之失贼,礼之失烦,春秋之失乱。其为人也温柔敦厚而不

  

  愚,则深于诗者也;疏通知远而不诬,则深于书者也;广博易良而不奢,则深于乐者也;絜静精微而不贼,则深于易者也;恭俭庄敬而不烦,则深于礼者也;属辞比事而不乱,则深于春秋者也。”

  

  天子者,与天地参,故德配天地,兼利万物,与日月并明,明照四海而不遗微小。其在朝廷则道仁圣礼义之序,燕处则听雅颂之音,行步则有环佩之声,升车则有鸾和之音,居处有礼,进退有度,百官得其宜,万事得其序。诗云:“淑人君子,其仪不忒。其仪不忒,正是四国。”此之谓也。发号出令而民说谓之和,上下相亲谓之仁,民不求其所欲而得之谓之信,除去天地之害谓之义。义与信,和与仁,霸王之器也。有治民之意而无其器,则不成。

  

  礼之于正国也,犹衡之于轻重也,绳墨之于曲直也,规矩之于方圜也。故衡诚悬,不可欺以轻重;绳墨诚陈,不可欺以曲直;规矩诚设,不可欺以方圜;君子审礼,不可诬以奸诈。是故隆礼由礼,谓之有方之士。不隆礼不由礼,谓之无方之民。敬让之道也,故以奉宗庙则敬,以入朝廷则贵贱有位,以处室家则父子亲、兄弟和,以处乡里则长幼有序。孔子曰:“安上治民,莫善于礼。”此之谓也。

  

  故朝觐之礼,所以明君臣之义也。聘问之礼,所以使诸侯相尊敬也。丧祭之礼,所以明臣子之恩也。乡饮酒之礼,所以明长幼之序也。昏姻之礼,所以明男女之别也。夫礼,禁乱之所由生,犹坊止水之所自来也。故以旧坊为无所用而坏之者,必有水败。以旧礼为无所用而去之者,必有乱患。

  

  故昏姻之礼废,则夫妇之道苦,而淫辟之罪多矣。乡饮酒之礼废,则长幼之序失,而争斗之狱繁矣。丧祭之礼废,则臣子之恩薄,而倍死忘生者众矣。聘觐之礼废,则君臣之位失,诸侯之行恶,而倍畔侵陵之败起矣。

  

  故礼之教化也微,其止邪也于未形,使人日徙善远罪而不自知也,是以先王隆之也。易曰:“君子慎始。差若豪厘,缪以千里。”此之谓也。

  
  卷八 离娄下

  孟子曰:“舜生於诸冯,迁於负夏,卒於鸣条,东夷之人也。文王生於岐周,卒于毕郢,西夷之人也。地之相去也,千有馀里;世之相后也,千有馀岁。得志行乎中国,若合符节,先圣后圣,其揆一也。”

  子产听郑国之政,以其乘舆济人於溱洧。孟子曰:“惠而不知为政。岁十一月,徒杠成;十二月,舆梁成,民未病涉也。君子平其政,行辟人可也,焉得人人而济之?故为政者,每人而悦之,日亦不足矣。”

  孟子告齐宣王曰:“君之视臣如手足,则臣视君如腹心;君之视臣如犬马,则臣视君如国人;君之视臣如土芥,则臣视君如寇雠。”王曰:“礼,为旧君有服,何如斯可为服矣?”曰:“谏行言听,膏泽下於民;有故而去,则使人导之出疆,又先於其所往;去三年不反,然后收其田里。此之谓三有礼焉。如此,则为之服矣。今也为臣,谏则不行,言则不听,膏泽不下於民;有故而去,则君搏执之,又极之於其所往;去之日,遂收其田里。此之谓寇雠。寇雠何服之有?”孟子曰:“无罪而杀士,则大夫可以去;无罪而戮民,则士可以徙。”

  孟子曰:“君仁,莫不仁;君义,莫不义。”

  孟子曰:“非礼之礼,非义之义,大人弗为。”

  孟子曰:“中也养不中,才也养不才,故人乐有贤父兄也。如中也弃不中,才也弃不才,则贤不肖之相去,其间不能以寸。”

  孟子曰:“人有不为也,而后可以有为。”

  孟子曰:“言人之不善,当如后患何?”孟子曰:“仲尼不为已甚者。”

  孟子曰:“大人者,言不必信,行不必果,惟义所在。”

  孟子曰:“大人者,不失其赤子之心者也。”

  孟子曰:“养生者不足以当大事,惟送死可以当大事。”

  孟子曰:“君子深造之以道,欲其自得之也。自得之,则居之安;居之安,则资之深;资之深,则取之左右逢其原,故君子欲其自得之也。”

  孟子曰:“博学而详说之,将以反说约也。”

  孟子曰:“以善服人者,未有能服人者也。以善养人,然后能服天下。天下不心服而王者,未之有也。”

  孟子曰:“言无实不祥。不祥之实,蔽贤者当之。”

  徐子曰:“仲尼亟称於水,曰‘水哉,水哉!’何取於水也?”孟子曰:“源泉混混,不舍昼夜,盈科而后进,放乎四海。有本者如是,是之取尔。苟为无本,七八月之间雨集,沟浍皆盈,其涸也,可立而待也。故声闻过情,君子耻之。”

  孟子曰:“人之所以异於禽兽者几希,庶民去之,君之存之。舜明於庶物,察於人伦,由仁义行,非行仁义也。”

  孟子曰:“禹恶旨酒而好善言。汤执中,立贤无方。文王视民如伤,望道而未之见。武王不泄迩,不忘远。周公思兼三王,以施四事,其有不合者,仰而思之,夜以继日;幸而得之,坐以待旦。”

  孟子曰:“王者之迹熄而《诗》亡,《诗》亡然后《春秋》作。晋之《乘》,楚之《梼杌》,鲁之《春秋》,一也。其事则齐桓、晋文,其文则史。孔子曰:‘其义则丘窃取之矣。’”孟子曰:“君子之泽五世而斩,小人之泽五世而斩。予未得为孔子徒也,予私淑诸人也。”

  孟子曰:“可以取,可以无取,取伤廉;可以与,可以无与,与伤惠;可以死,可以无死,死伤勇。”

  逢蒙学射於羿,尽羿之道,思天下惟羿为愈己,於是杀羿。孟子曰:“是亦羿有罪焉。”公明仪曰:“宜若无罪焉。”曰:“薄乎云尔,恶得无罪?郑人使子濯孺子侵卫,卫使庾公之斯追之。子濯孺子曰:‘今日我疾作,不可以执弓,吾死矣夫!’问其仆曰:‘追我者谁也?’其仆曰:‘庾公之斯也。’曰:‘吾生矣。’其仆曰:‘庾公之斯,卫之善射者也。夫子曰吾生,何谓也?’曰:‘庾公之斯学射於尹公之他,尹公之他学射於我。夫尹公之他,端人也,其取友必端矣。’庾公之斯至,曰:‘夫子何为不执弓?’曰:‘今日我疾作,不可以执弓。’曰:‘小人学射於尹公之他,尹公之他学射於夫子。我不忍以夫子之道反害夫子。虽然,今日之事,君事也,我不敢废。’抽矢,扣轮,去其金,发乘矢而后反。”

  孟子曰:“西子蒙不洁,则人皆掩鼻而过之。虽有恶人,斋戒沐浴,则可以祀上帝。”

  孟子曰:“天下之言性也,则故而已矣。故者以利为本。所恶於智者,为其凿也。如智者若禹之行水也,则无恶於智矣。禹之行水也,行其所无事也。如智者亦行其所无事,则智亦大矣。天之高也,星辰之远也,苟求其故,千岁之日至,可坐而致也。”

  公行子有子之丧。右师往吊,入门,有进而与右师言者,有就右师之位而与右师言者。孟子不与右师言,右师不悦,曰:“诸君子皆与驩言,孟子独不与驩言,是简驩也。”孟子闻之,曰:“礼,朝廷不历位而相与言,不逾阶而相揖也。

  我欲行礼,子敖以我为简,不亦异乎?”孟子曰:“君子所以异於人者,以其存心也。君子以仁存心,以礼存心。仁者爱人,有礼者敬人。爱人者,人恒爱之;敬人者,人恒敬之。有人於此,其待我以横逆,则君子必自反也:我必不仁也,必无礼也,此物奚宜至哉?其自反而仁矣,自反而有礼矣,其横逆由是也,君子必自反也,我必不忠。自反而忠矣,其横逆由是也。君子曰:‘此亦妄人也已矣。如此,则与禽兽奚择哉?於禽兽又何难焉?’是故君子有终身之忧,无一朝之患也。乃若所忧则有之:舜,人也;我,亦人也。舜为法於天下,可传於后世,我由未免为乡人也,是则可忧也。忧之如何?如舜而已矣。若夫君子所患则亡矣。非仁无为也,非礼无行也。如有一朝之患,则君子不患矣。”

  禹、稷当平世,三过其门而不入,孔子贤之。颜子当乱世,居於陋巷,一箪食,一瓢饮,人不堪其忧,颜子不改其乐,孔子贤之。孟子曰:“禹、稷、颜回同道。禹思天下有溺者,由己溺之也;稷思天下有饥者,由己饥之也,是以如是其急也。禹、稷、颜子易地则皆然。今有同室之人斗者,救之,虽被发缨冠而救之,可也。乡邻有斗者,被发缨冠而往救之,则惑也,虽闭户可也。”

  公都子曰:“匡章,通国皆称不孝焉。夫子与之游,又从而礼貌之,敢问何也?”孟子曰:“世俗所谓不孝者五:惰其四支,不顾父母之养,一不孝也;博奕好饮酒,不顾父母之养,二不孝也;好货财,私妻子,不顾父母之养,三不孝也;从耳目之欲,以为父母戮,四不孝也;好勇斗很,以危父母,五不孝也。章子有一於是乎?夫章子,子父责善而不相遇也。责善,朋友之道也。父子责善,贼恩之大者。夫章子,岂不欲有夫妻子母之属哉?为得罪於父,不得近,出妻屏子,终身不养焉。其设心以为不若是,是则罪之大者,是则章子已矣。”

  曾子居武城,有越寇。或曰:“寇至,盍去诸?”曰:“无寓人於我室,毁伤其薪木。”寇退,则曰:“脩我墙屋,我将反。”寇退,曾子反。左右曰:“待先生如此其忠且敬也,寇至则先去以为民望;寇退则反,殆於不可。”沈犹行曰:“是非汝所知也。昔沈犹有负刍之祸,从先生者七十人,未有与焉。”子思居於卫,有齐寇。或曰:“寇至,盍去诸?”子思曰:“如伋去,君谁与守?”孟子曰:“曾子、子思同道。曾子,师也,父兄也。子思,臣也,微也。曾子、子思易地则皆然。”

  储子曰:“王使人瞷夫子,果有以异於人乎?”孟子曰:“何以异於人哉?尧、舜与人同耳。”

  齐人有一妻一妾而处室者。其良人出,则必餍酒肉而后反。其妻问所与饮食者,则尽富贵也。其妻告其妾曰:“良人出,则必餍酒肉而后反,问其与饮食者,尽富贵也,而未尝有显者来,吾将瞷良人之所之也。”蚤起,施从良人之所之,遍国中无与立谈者。卒之东郭墦间,之祭者乞其馀,不足,又顾而之他,此其为餍足之道也。其妻归,告其妾,曰:“良人者,所仰望而终身也,今若此。”

  与其妾讪其良人,而相泣於中庭,而良人未之知也,施施从外来,骄其妻妾。由君子观之,则人之所以求富贵利达者,其妻妾不羞也而不相泣者,几希矣。
  

  卷二 梁惠王下

  庄暴见孟子,曰:“暴见於王,王语暴以好乐,暴未有以对也。”曰:“好乐何如?”孟子曰:“王之好乐甚,则齐国其庶几乎!”他日,见於王,曰:“王尝语庄子以好乐,有诸?”王变乎色,曰:“寡人非能好先王之乐也,直好世俗之乐耳。”曰:“王之好乐甚,则齐其庶几乎!今之乐犹古之乐也。”曰:“可得闻与?”曰:“独乐乐,与人乐乐,孰乐?”曰:“不若与人。”曰:“与少乐乐,与众乐乐,孰乐?”曰:“不若与众。”“臣请为王言乐。今王鼓乐於此,百姓闻王钟鼓之声,管籥之音,举疾首蹙頞而相告曰:‘吾王之好鼓乐,夫何使我至於此极也?父子不相见,兄弟妻子离散。’今王田猎於此,百姓闻王车马之音,见羽旄之美,举疾首蹙頞而相告曰:‘吾王之好田猎,夫何使我至於此极也?父子不相见,兄弟妻子离散。’此无他,不与民同乐也。今王鼓乐於此,百姓闻王钟鼓之声,管籥之音,举欣欣然有喜色而相告曰:‘吾王庶几无疾病与,何以能鼓乐也?’今王田猎於此,百姓闻王车马之音,见羽旄之美,举欣欣然有喜色而相告曰:‘吾王庶几无疾病与,何以能田猎也?’此无他,与民同乐也。

  今王与百姓同乐,则王矣。”

  齐宣王问曰:“文王之囿方七十里,有诸?”孟子对曰:“於传有之。”曰:“若是其大乎?”曰:“民犹以为小也。”曰:“寡人之囿方四十里,民犹以为大,何也?”曰:“文王之囿方七十里,刍荛者往焉,雉兔者往焉。与民同之,民以为小,不亦宜乎?臣始至於境,问国之大禁,然后敢入。臣闻郊关之内,有囿方四十里,杀其麋鹿者,如杀人之罪。则是方四十里为阱於国中,民以为大,不亦宜乎?”齐宣王问曰:“交邻国有道乎?”孟子对曰:“有。惟仁者为能以大事小,是故汤事葛,文王事昆夷。惟智者为能以小事大,故太王事獯鬻,勾践事吴。以大事小者,乐天者也;以小事大者,畏天者也。乐天者保天下,畏天者保其国。

  《诗》云:‘畏天之威,于时保之。’”王曰:“大哉言矣!寡人有疾,寡人好勇。”对曰:“王请无好小勇。夫抚剑疾视,曰:‘彼恶敢当我哉!’此匹夫之勇,敌一人者也。王请大之!“《诗》云:‘王赫斯怒,爰整其旅,以遏徂莒,以笃周祜,以对于天下。’此文王之勇也。文王一怒而安天下之民。《书》曰:‘天降下民,作之君,作之师。惟曰其助上帝,宠之四方,有罪无罪惟我在,天下曷敢有越厥志?’一人衡行於天下,武王耻之。此武王之勇也。而武王亦一怒而安天下之民。今王亦一怒而安天下之民,民惟恐王之不好勇也。”

  齐宣王见孟子于雪宫。王曰:“贤者亦有此乐乎?”孟子对曰:“有人不得,则非其上矣。不得而非其上者,非也;为民上而不与民同乐者,亦非也。乐民之乐者,民亦乐其乐;忧民之忧者,民亦忧其忧。乐以天下,忧以天下,然而不王者,未之有也。昔者齐景公问於晏子曰:‘吾欲观於转附、朝儛,遵海而南,放於琅邪,吾何修而可以比於先王观也?’晏子对曰:‘善哉问也!天子適诸侯曰巡狩。巡狩者,巡所守也。诸侯朝於天子曰述职。述职者,述所职也。无非事者,春省耕而补不足,秋省敛而助不给。夏谚曰:‘吾王不游,吾何以休?吾王不豫,吾何以助?一游一豫,为诸侯度。’今也不然,师行而粮食,饥者弗食,劳者弗息。睊々胥谗,民乃作慝。方命虐民,饮食若流。流连荒亡,为诸侯忧。从流下而忘反,谓之流,从流上而忘反,谓之连,从兽无厌谓之荒,乐酒无厌谓之亡。先王无流连之乐,荒亡之行。惟君所行也。’景公说,大戒於国,出舍於郊。於是始兴发补不足。召大师曰:‘为我作君臣相说之乐!’盖《徵招》、《角招》是也。其《诗》曰:‘畜君何尤?’畜君者,好君也。”

  齐宣王问曰:“人皆谓我毁明堂,毁诸已乎?”孟子对曰:“夫明堂者,王者之堂也。王欲行王政,则勿毁之矣。”王曰:“王政可得闻与?”对曰:“昔者文王之治岐也,耕者九一,仕者世禄,关市讥而不征,泽梁无禁,罪人不孥。老而无妻曰鳏,老而无夫曰寡,老而无子曰独,幼而无父曰孤。此四者,天下之穷民而无告者。文王发政施仁,必先斯四者。《诗》云:‘哿矣富人,哀此茕独。’”王曰:“善哉言乎!”曰:“王如善之,则何为不行?”王曰:“寡人有疾,寡人好货。”对曰:“昔者公刘好货,《诗》云:‘乃积乃仓,乃裹餱粮,于橐于囊。思戢用光。弓矢斯张,干戈戚扬,爰方启行’。故居者有积仓,行者有裹囊也,然后可以爰方启行。王如好货,与百姓同之,於王何有?”王曰:“寡人有疾,寡人好色。”对曰:“昔者太王好色,爱厥妃。《诗》云:‘古公亶父,来朝走马,率西水浒,至於岐下,爰及姜女,聿来胥宇。当是时也,内无怨女,外无旷夫。王如好色,与百姓同之,於王何有?”孟子谓齐宣王曰:“王之臣,有讬其妻子於其友,而之楚游者,比其反也,则冻馁其妻子,则如之何?”王曰:“弃之。”曰:“士师不能治士,则如之何?”王曰:“已之。”曰:“四境之内不治,则如之何?”王顾左右而言他。

  孟子见齐宣王,曰:“所谓故国者,非谓有乔木之谓也,有世臣之谓也。王无亲臣矣,昔者所进,今日不知其亡也。”王曰:“吾何以识其不才而舍之?”曰:“国君进贤,如不得已,将使卑逾尊,疏逾戚,可不慎与?左右皆曰贤,未可也;诸大夫皆曰贤,未可也;国人皆曰贤,然后察之。见贤焉,然后用之。左右皆曰不可,勿听;诸大夫皆曰不可,勿听;国人皆曰不可,然后察之。见不可焉,然后去之。左右皆曰可杀,勿听;诸大夫皆曰可杀,勿听;国人皆曰可杀,然后察之。见可杀焉,然后杀之。故曰国人杀之也。如此,然后可以为民父母。”

  齐宣王问曰:“汤放桀,武王伐纣,有诸?”孟子对曰:“於传有之。”曰:“臣弑其君,可乎?”曰:“贼仁者谓之‘贼’,贼义者谓之‘残’。残贼之人,谓之‘一夫’。闻诛一夫纣矣,未闻弑君也。”

  孟子谓齐宣王曰:“为巨室,则必使工师求大木。工师得大木,则王喜,以为能胜其任也。匠人斫而小之,则王怒,以为不胜其任矣。夫人幼而学之,壮而欲行之,王曰:‘姑舍女所学而从我’,则何如?今有璞玉於此,虽万镒,必使玉人彫琢之。至於治国家,则曰:‘姑舍女所学而从我’,则何以异於教玉人彫琢玉哉?”齐人伐燕,胜之。宣王问曰:“或谓寡人勿取,或谓寡人取之。以万乘之国伐万乘之国,五旬而举之,人力不至於此。不取,必有天殃。取之,何如?”孟子对曰:“取之而燕民悦,则取之。古之人有行之者,武王是也。取之而燕民不悦,则勿取。古之人有行之者,文王是也。以万乘之国伐万乘之国,箪食壶浆以迎王师,岂有它哉?避水火也。如水益深,如火益热,亦运而已矣。”

  齐人伐燕,取之。诸侯将谋救燕。宣王曰:“诸侯多谋伐寡人者,何以待之?”孟子对曰:“臣闻七十里为政於天下者,汤是也。未闻以千里畏人者也。《书》曰:‘汤一征,自葛始。’天下信之,东面而征,西夷怨;南面而征,北狄怨,曰:‘奚为后我?’民望之,若大旱之望云霓也。归市者不止,耕者不变,诛其君而吊其民,若时雨降。民大悦。《书》曰:‘徯我后,后来其苏。’今燕虐其民,王往而征之,民以为将拯己於水火之中也,箪食壶浆以迎王师。若杀其父兄,系累其子弟,毁其宗庙,迁其重器,如之何其可也?天下固畏齐之强也,今又倍地而不行仁政,是动天下之兵也。王速出令,反其旄倪,止其重器,谋於燕众,置君而后去之,则犹可及止也。”

  邹与鲁閧。穆公问曰:“吾有司死者三十三人,而民莫之死也。诛之,则不可胜诛;不诛,则疾视其长上之死而不救,如之何则可也?”孟子对曰:“凶年饥岁,君之民老弱转乎沟壑,壮者散而之四方者,几千人矣;而君之仓廪实,府库充,有司莫以告,是上慢而残下也。曾子曰:‘戒之戒之!出乎尔者,反乎尔者也。’夫民今而后得反之也。君无尤焉!君行仁政,斯民亲其上,死其长矣。”

  滕文公问曰:“滕,小国也,间於齐、楚。事齐乎?事楚乎?”孟子对曰:“是谋非吾所能及也。无已,则有一焉:凿斯池也,筑斯城也,与民守之,效死而民弗去,则是可为也。”

  滕文公问曰:“齐人将筑薛,吾甚恐,如之何则可?”孟子对曰:“昔者大王居邠,狄人侵之,去,之岐山之下居焉。非择而取之,不得已也。苟为善,后世子孙必有王者矣。君子创业垂统,为可继也。若夫成功,则天也。君如彼何哉?强为善而已矣。”

  滕文公问曰:“滕,小国也。竭力以事大国,则不得免焉,如之何则可?”孟子对曰:“昔者大王居邠,狄人侵之。事之以皮币,不得免焉;事之以犬马,不得免焉;事之以珠玉,不得免焉。乃属其耆老而告之曰:‘狄人之所欲者,吾土地也。吾闻之也:君子不以其所以养人者害人。二三子何患乎无君?我将去之。’去邠,逾梁山,邑于岐山之下居焉。邠人曰:‘仁人也,不可失也。’从之者如归市。或曰:‘世守也,非身之所能为也。’效死勿去。“君请择於斯二者。”

  鲁平公将出,嬖人臧仓者请曰:“他日君出,则必命有司所之。今乘舆已驾矣,有司未知所之,敢请!”公曰:“将见孟子。”曰:“何哉!君所为轻身以先於匹夫者,以为贤乎?礼义由贤者出,而孟子之后丧逾前丧,君无见焉!”公曰:“诺。”乐正子入见,曰:“君奚为不见孟轲也?”曰:“或告寡人曰:‘孟子之后丧逾前丧。’是以不往见也。”曰:“何哉?君所谓逾者,前以士,后以大夫;前以三鼎,而后以五鼎与?”曰:“否。谓棺椁衣衾之美也。”曰:“非所谓逾也,贫富不同也。”乐正子见孟子曰:“克告於君,君为来见也。嬖人有臧仓者沮君,君是以不果来也。”曰:“行或使之,止或尼之。行止非人所能也。吾之不遇鲁侯,天也。臧氏之子焉能使予不遇哉?”
  卷九 万章上

  万章问曰:“舜往于田,号泣于旻天,何为其号泣也?”孟子曰:“怨慕也。”

  万章曰:“‘父母爱之,喜而不忘。父母恶之,劳而不怨。’然则舜怨乎?”曰:“长息问於公明高曰:‘舜往于田,则吾既得闻命矣。号泣于旻天,于父母,则吾不知也。’公明高曰:‘是非尔所知也。’夫公明高以孝子之心为不若是恝。

  我竭力耕田,共为子职而已矣。父母之不我爱,於我何哉?帝使其子九男二女,百官牛羊仓廪备,以事舜於畎亩之中,天下之士多就之者,帝将胥天下而迁之焉。

  为不顺於父母,如穷人无所归。天下之士悦之,人之所欲也,而不足以解忧;好色,人之所欲,妻帝之二女,而不足以解忧;富,人之所欲,富有天下,而不足以解忧;贵,人之所欲,贵为天子,而不足以解忧。人悦之、好色、富贵,无足以解忧者,惟顺於父母可以解忧。人少则慕父母,知好色则慕少艾,有妻子则慕妻子,仕则慕君,不得於君则热中。大孝终身慕父母。五十而慕者,予於大舜见之矣。”

  万章问曰:“《诗》云,‘娶妻如之何?必告父母。’信斯言也,宜莫如舜。

  舜之不告而娶,何也?”孟子曰:“告则不得娶。男女居室,人之大伦也。如告,则废人之大伦,以怼父母,是以不告也。”万章曰:“舜之不告而娶,则吾既得闻命矣。帝之妻舜而不告,何也?”曰:“帝亦知告焉则不得妻也。”万章曰:“父母使舜完廪,捐阶,瞽瞍焚廪。使浚井,出,从而揜之。象曰:‘谟盖都君咸我绩,牛羊,父母;仓廪,父母。干戈,朕;琴,朕;弤,朕;二嫂,使治朕栖。’象往入舜宫,舜在床琴。象曰:‘郁陶思君尔。’忸怩。舜曰:‘惟兹臣庶,汝其于予治。’不识舜不知象之将杀己与?”曰:“奚而不知也?象忧亦忧,象喜亦喜。”曰:“然则舜伪喜者与?”曰:“否;昔者有馈生鱼於郑子产,子产使校人畜之池。校人烹之,反命曰:‘始舍之,圉圉焉;少则洋洋焉;攸然而逝。’子产曰:‘得其所哉!得其所哉!’校人出,曰:‘孰谓子产智?予既烹而食之,曰,得其所哉,得其所哉。’故君子可欺以其方,难罔以非其道。

  彼以爱兄之道来,故诚信而喜之,奚伪焉?”万章问曰:“象日以杀舜为事。立为天子则放之,何也?”孟子曰:“封之也,或曰放焉。”万章曰:“舜流共工于幽州,放驩兜于崇山,杀三苗于三危,殛鲧于羽山,四罪而天下咸服,诛不仁也。象至不仁,封之有庳。有庳之人奚罪焉?仁人固如是乎?在他人则诛之,在弟则封之?”曰:“仁人之於弟也,不藏怒焉,不宿怨焉,亲爱之而已矣。亲之,欲其贵也;爱之,欲其富也。封之有庳,富贵之也。身为天子,弟为匹夫,可谓亲爱之乎?”“敢问或曰放者,何谓也?”曰:“象不得有为於其国,天子使吏治其国而纳其贡税焉,故谓之放。岂得暴彼民哉?虽然,欲常常而见之,故源源而来,‘不及贡,以政接于有庳。’此之谓也。”

  咸丘蒙问曰:“语云:盛德之士,君不得而臣,父不得而子。舜南面而立,尧帅诸侯北面而朝之,瞽瞍亦北面而朝之。舜见瞽瞍,其容有蹙。孔子曰:‘於斯时也,天下殆哉,岌岌乎!’不识此语诚然乎哉?”孟子曰:“否!此非君子之言,齐东野人之语也。尧老而舜摄也。《尧典》曰:‘二十有八载,放勋乃徂落,百姓如丧考妣。三年,四海遏密八音。’孔子曰:‘天无二日,民无二王。’舜既为天子矣,又帅天下诸侯以为尧三年丧,是二天子矣。”咸丘蒙曰:“舜之不臣尧,则吾既得闻命矣。《诗》云,‘普天之下,莫非王土。率士之滨,莫非王臣。’而舜既为天子矣,敢问瞽瞍之非臣,如何?”曰:“是诗也,非是之谓也。劳於王事而不得养父母也。曰:‘此莫非王事,我独贤劳也。’故说诗者不以文害辞,不以辞害志。以意逆志,是为得之,如以辞而已矣,《云汉》之诗曰:‘周馀黎民,靡有孑遗。’信斯言也,是周无遗民也。孝子之至,莫大乎尊亲。

  尊亲之至,莫大乎以天下养。为天子父,尊之至也。以天下养,养之至也。《诗》曰:‘永言孝思,孝思惟则。’此之谓也。《书》曰:‘祗载见瞽瞍,夔夔斋栗,瞽瞍亦允若。’是为父不得而子也。”

  万章曰:“尧以天下与舜,有诸?”孟子曰:“否。天子不能以天下与人。”

  “然则舜有天下也,孰与之?”曰:“天与之。”“天与之者,谆谆然命之乎?”曰:“否。天不言,以行与事示之而已矣。”曰:“以行与事示之者,如之何?”曰:“天子能荐人於天,不能使天与之天下。诸侯能荐人於天子,不能使天子与之诸侯。大夫能荐人於诸侯,不能使诸侯与之大夫。昔者,尧荐舜於天而天受之,暴之於民而民受之。故曰:天不言,以行与事示之而已矣。”“曰:敢问荐之於天而天受之,暴之於民而民受之,如何?”曰:“使之主祭,而百神享之,是天受之;使之主事而事治,百姓安之,是民受之也。天与之,人与之,故曰天子不能以天下与人。舜相尧二十有八载,非人之所能为也,天也。尧崩,三年之丧毕,舜避尧之子於南河之南,天下诸侯朝觐者,不之尧之子而之舜;讼狱者,不之尧之子而之舜;讴歌者,不讴歌尧之子而讴歌舜,故曰天也。夫然后之中国,践天子位焉。而居尧之宫,逼尧之子,是篡也,非天与也。《太誓》曰:‘天视自我民视,天听自我民听。’此之谓也。”

  万章问曰:“人有言‘至於禹而德衰,不传於贤而传於子’,有诸?”孟子曰:“否,不然也。天与贤,则与贤;天与子,则与子。昔者,舜荐禹於天,十有七年,舜崩。三年之丧毕,禹避舜之子於阳城,天下之民从之,若尧崩之后不从尧之子而从舜也。禹荐益於天,七年,禹崩。三年之丧毕,益避禹之子於箕山之阴。朝觐讼狱者不之益而之启,曰:‘吾君之子也。’讴歌者不讴歌益而讴歌启,曰:‘吾君之子也。’丹朱之不肖,舜之子亦不肖。舜之相尧、禹之相舜也,历年多,施泽於民久。启贤,能敬承继禹之道。益之相禹也,历年少,施泽於民未久。舜、禹、益相去久远,其子之贤不肖,皆天也,非人之所能为也。莫之为而为者,天也;莫之致而至者,命也。匹夫而有天下者,德必若舜禹,而又有天子荐之者,故仲尼不有天下。继世而有天下,天之所废,必若桀纣者也,故益、伊尹、周公不有天下。伊尹相汤以王於天下,汤崩,太丁未立,外丙二年,仲壬四年。太甲颠覆汤之典刑,伊尹放之於桐三年。太甲悔过,自怨自艾,於桐处仁迁义三年,以听伊尹之训己也,复归于亳。周公之不有天下,犹益之於夏、伊尹之於殷也。孔子曰:‘唐虞禅,夏后殷周继,其义一也。’”万章问曰:“人有言‘伊尹以割烹要汤’,有诸?”孟子曰:“否,不然。

  伊尹耕於有莘之野,而乐尧、舜之道焉。非其义也,非其道也,禄之以天下弗顾也,系马千驷弗视也。非其义也,非其道也。一介不以与人,一介不以取诸人。

  汤使人以币聘之,嚣嚣然曰:‘我何以汤之聘币为哉?我岂若处畎亩之中,由是以乐尧、舜之道哉?’汤三使往聘之,既而幡然改曰:‘与我处畎亩之中,由是以乐尧、舜之道,吾岂若使是君为尧、舜之君哉?吾岂若使是民为尧、舜之民哉?吾岂若於吾身亲见之哉?天之生此民也,使先知觉后知,使先觉觉后觉也。予,天民之先觉者也,予将以斯道觉斯民也,非予觉之而谁也?’思天下之民,匹夫匹妇有不被尧、舜之泽者,若己推而内之沟中,其自任以天下之重如此,故就汤而说之以伐夏救民。吾未闻枉己而正人者也,况辱己以正天下者乎?圣人之行不同也,或远或近,或去或不去,归洁其身而已矣。吾闻其以尧、舜之道要汤,未闻以割烹也。《伊训》曰:‘天诛造攻自牧宫,朕载自亳。’”万章问曰:“或谓孔子於卫主痈疽,於齐主侍人瘠环,有诸乎?”孟子曰:“否,不然也。好事者为之也。於卫主颜雠由。弥子之妻与子路之妻,兄弟也。

  弥子谓子路曰:‘孔子主我,卫卿可得也。’子路以告。孔子曰:‘有命。’孔子进以礼,退以义,得之不得曰‘有命’。而主痈疽与侍人瘠环,是无义无命也。

  孔子不悦於鲁、卫,遭宋桓司马,将要而杀之,微服而过宋。是时孔子当阨,主司城贞子,为陈侯周臣。吾闻观近臣,以其所为主;观远臣,以其所主。若孔子主痈疽与侍人瘠环,何以为孔子。”

  万章问曰:“或曰:‘百里奚自鬻於秦养牲者,五羊之皮,食牛,以要秦缪公。’信乎?”孟子曰:“否,不然。好事者为之也。百里奚,虞人也。晋人以垂棘之璧与屈产之乘,假道於虞以伐虢。宫之奇谏,百里奚不谏。知虞公之不可谏而去之秦,年已七十矣,曾不知以食牛干秦缪公之为汙也,可谓智乎?不可谏而不谏,可谓不智乎?知虞公之将亡而先去之,不可谓不智也。时举於秦,知缪公之可与有行也而相之,可谓不智乎?相秦而显其君於天下,可传於后世,不贤而能之乎?自鬻以成其君,乡党自好者不为,而谓贤者为之乎?”
  卷六 滕文公下

  陈代曰:“不见诸侯,宜若小然。今一见之,大则以王,小则以霸。且《志》曰:‘枉尺而直寻,’宜若可为也。”孟子曰:“昔齐景公田,招虞人以旌,不至,将杀之。志士不忘在沟壑,勇士不忘丧其元。孔子奚取焉?取非其招不往也。

  如不待其招而往,何哉?且夫枉尺而直寻者,以利言也。如以利,则枉寻直尺而利,亦可为与?昔者赵简子使王良与嬖奚乘,终日而不获一禽。嬖奚反命曰:‘天下之贱工也。’或以告王良。良曰:‘请复之。’强而后可,一朝而获十禽。

  嬖奚反命曰:‘天下之良工也。’简子曰:‘我使掌与女乘。’谓王良。良不可,曰:‘吾为之范我驰驱,终日不获一;为之诡遇,一朝而获十。《诗》云:“不失其驰,舍矢如破。”我不贯与小人乘,请辞。’御者且羞与射者比,比而得禽兽,虽若丘陵,弗为也。如枉道而从彼,何也?且子过矣!枉己者,未有能直人者也。”

  景春曰:“公孙衍、张仪岂不诚大丈夫哉?一怒而诸侯惧,安居而天下熄。”

  孟子曰:“是焉得为大丈夫乎?子未学礼乎?丈夫之冠也,父命之;女子之嫁也,母命之,往送之门,戒之曰:‘往之女家,必敬必戒,无违夫子!’以顺为正者,妾妇之道也。居天下之广居,立天下之正位,行天下之大道;得志,与民由之;不得志,独行其道。富贵不能淫,贫贱不能移,威武不能屈,此之谓大丈夫。”

  周霄问曰:“古之君子仕乎?”孟子曰:“仕。《传》曰:‘孔子三月无君,则皇皇如也,出疆必载质。’公明仪曰:‘古之人三月无君,则吊。’”“三月无君则吊,不以急乎?”曰:“士之失位也,犹诸侯之失国家也。《礼》曰:‘诸侯耕助,以供粢盛;夫人蚕缫,以为衣服。犠牲不成,粢盛不絜,衣服不备,不敢以祭。惟士无田,则亦不祭。’牲杀、器皿、衣服不备,不敢以祭,则不敢以宴,亦不足吊乎?”“出疆必载质,何也?”曰:“士之仕也,犹农夫之耕也。

  农夫岂为出疆舍其耒耜哉?”曰:“晋国亦仕国也,未尝闻仕如此其急。仕如此其急也,君子之难仕,何也?”曰:“丈夫生而愿为之有室,女子生而愿为之有家。父母之心,人皆有之。不待父母之命、媒妁之言,钻穴隙相窥,逾墙相从,则父母国人皆贱之。古之人未尝不欲仕也,又恶不由其道。不由其道而往者,与钻穴隙之类也。”

  彭更问曰:“后车数十乘,从者数百人,以传食於诸侯,不以泰乎?”孟子曰:“非其道,则一箪食不可受於人;如其道,则舜受尧之天下,不以为泰。子以为泰乎?”曰:“否!士无事而食,不可也。”曰:“子不通功易事,以羡补不足,则农有馀粟,女有馀布;子如通之,则梓匠轮舆皆得食於子。於此有人焉,入则孝,出则悌,守先王之道,以待后之学者,而不得食於子。子何尊梓匠轮舆而轻为仁义者哉?”曰:“梓匠轮舆,其志将以求食也;君子之为道也,其志亦将以求食与?”曰:“子何以其志为哉?其有功於子,可食而食之矣。且子食志乎?食功乎?”曰:“食志。”曰:“有人於此,毁瓦画墁,其志将以求食也,则子食之乎?”曰:“否。”曰:“然则子非食志也,食功也。”

  万章问曰:“宋,小国也,今将行王政,齐楚恶而伐之,则如之何?”孟子曰:“汤居亳,与葛为邻。葛伯放而不祀,汤使人问之,曰:‘何为不祀?’曰:‘无以供犠牲也。’汤使遗之牛羊。葛伯食之,又不以祀。汤又使人问之曰:‘何为不祀?’曰:‘无以供粢盛也。’汤使亳众往为之耕,老弱馈食。葛伯率其民,要其有酒食黍稻者夺之,不授者杀之。有童子以黍肉饷,杀而夺之。《书》曰:‘葛伯仇饷。’此之谓也。为其杀是童子而征之,四海之内皆曰:‘非富天下也,为匹夫匹妇复雠也。’汤始征,自葛载,十一征而无敌於天下。东面而征,西夷怨;南面而征,北狄怨。曰:‘奚为后我?’民之望之,若大旱之望雨也。

  归市者弗止,芸者不变,诛其君,吊其民,如时雨降。民大悦。《书》曰:‘徯我后,后来其无罚!’‘有攸不惟臣,东征,绥厥士女,篚厥玄黄,绍我周王见休,惟臣附于大邑周。’其君子实玄黄于篚以迎其君子,其小人箪食壶浆以迎其小人。救民於水火之中,取其残而已矣。《太誓》曰:‘我武惟扬,侵于之疆,则取于残,杀伐用张,于汤有光。’不行王政云尔。苟行王政,四海之内皆举首而望之,欲以为君,齐楚虽大,何畏焉?”孟子谓戴不胜曰:“子欲子之王之善与?我明告子。有楚大夫於此,欲其子之齐语也,则使齐人傅诸?使楚人傅诸?”曰:“使齐人傅之。”曰:“一齐人傅之,众楚人咻之,虽日挞而求其齐也,不可得矣;引而置之庄岳之间数年,虽日挞而求其楚,亦不可得矣。子谓薛居州,善士也,使之居於王所。在於王所者,长幼卑尊皆薛居州也,王谁与为不善?在王所者,长幼卑尊皆非薛居州也,王谁与为善?一薛居州,独如宋王何?”公孙丑问曰:“不见诸侯,何义?”孟子曰:“古者不为臣不见。段干木逾垣而辟之,泄柳闭门而不纳,是皆已甚。迫,斯可以见矣。阳货欲见孔子而恶无礼,大夫有赐於士,不得受於其家,则往拜其门。阳货矙孔子之亡也,而馈孔子蒸豚。孔子亦矙其亡也,而往拜之。当是时,阳货先,岂得不见?曾子曰:‘胁肩谄笑,病于夏畦。’子路曰:‘未同而言,观其色赧赧然,非由之所知也。’由是观之,则君子之所养,可知已矣。”

  戴盈之曰:“什一,去关市之征,今兹未能,请轻之,以待来年,然后已,何如?”孟子曰:“今有人日攘其邻之鸡者,或告之曰:‘是非君子之道。’曰:‘请损之,月攘一鸡,以待来年,然后已。’如知其非义,斯速已矣,何待来年?”公都子曰:“外人皆称夫子好辩,敢问何也?”孟子曰:“予岂好辩哉?予不得已也。天下之生久矣,一治一乱。当尧之时,水逆行,汜滥於中国,蛇龙居之,民无所定。下者为巢,上者为营窟。《书》曰:‘洚水警余。’洚水者,洪水也。使禹治之。禹掘地而注之海,驱蛇龙而放之菹。水由地中行,江、淮、河、汉是也。险阻既远,鸟兽之害人者消,然后人得平土而居之。尧、舜既没,圣人之道衰,暴君代作。坏宫室以为汙池,民无所安息;弃田以为园囿,使民不得衣食。邪说暴行又作,园囿、汙池、沛泽多而禽兽至。及纣之身,天下又大乱。周公相武王诛纣,伐奄三年讨其君,驱飞廉於海隅而戮之,灭国者五十,驱虎、豹、犀、象而远之,天下大悦。《书》曰:‘丕显哉,文王谟!丕承哉,武王烈!佑启我后人,咸以正无缺。’世衰道微,邪说暴行有作,臣弑其君者有之,子弑其父者有之。孔子惧,作《春秋》。《春秋》,天子之事也。是故孔子曰:‘知我者其惟《春秋》乎!罪我者其惟《春秋》乎!’圣王不作,诸侯放恣,处士横议,杨朱、墨翟之言盈天下。天下之言不归杨,则归墨。杨氏为我,是无君也;墨氏兼爱,是无父也。无父无君,是禽兽也。公明仪曰:‘庖有肥肉,厩有肥马;民有饥色,野有饿莩,此率兽而食人也。’杨墨之道不息,孔子之道不著,是邪说诬民,充塞仁义也。仁义充塞,则率兽食人,人将相食。吾为此惧,闲先圣之道,距杨墨,放淫辞,邪说者不得作。作於其心,害於其事;作於其事,害於其政。

  圣人复起,不易吾言矣。昔者禹抑洪水而天下平,周公兼夷狄,驱猛兽而百姓宁,孔子成《春秋》而乱臣贼子惧。《诗》云:‘戎狄是膺,荆舒是惩,则莫我敢承。’无父无君,是周公所膺也。我亦欲正人心,息邪说,距诐行,放淫辞,以承三圣者,岂好辩哉?予不得已也。能言距杨墨者,圣人之徒也。”

  匡章曰:“陈仲子岂不诚廉士哉?居於陵,三日不食,耳无闻,目无见也。

  井上有李,螬食实者过半矣,匍匐往,将食之,三咽,然后耳有闻,目有见。”

  孟子曰:“於齐国之士,吾必以仲子为巨擘焉。虽然,仲子恶能廉?充仲子之操,则蚓而后可者也。夫蚓,上食槁壤,下饮黄泉。仲子所居之室,伯夷之所筑与?抑亦盗跖之所筑与?所食之粟,伯夷之所树与?抑亦盗跖之所树与?是未可知也。”

  曰:“是何伤哉?彼身织屦,妻辟纑,以易之也。”曰:“仲子,齐之世家也,兄戴,盖禄万钟。以兄之禄为不义之禄而不食也,以兄之室为不义之室而不居也,辟兄离母,处於於陵。他日归,则有馈其兄生鹅者,己频顣曰:‘恶用是鶂鶂者为哉?’他日,其母杀是鹅也,与之食之。其兄自外至,曰:‘是鶂鶂之肉也。’出而哇之。以母则不食,以妻则食之;以兄之室则弗居,以於陵则居之,是尚为能充其类也乎?若仲子者,蚓而后充其操者也。”
  卷七 离娄上

  孟子曰:“离娄之明,公输子之巧,不以规矩,不能成方员;师旷之聪,不以六律,不能正五音;尧、舜之道,不以仁政,不能平治天下。今有仁心仁闻而民不被其泽,不可法於后世者,不行先王之道也。故曰:徒善不足以为政,徒法不能以自行。《诗》云:‘不愆不忘,率由旧章。’遵先王之法而过者,未之有也。圣人既竭目力焉,继之以规矩准绳,以为方员平直,不可胜用也;既竭耳力焉,继之以六律正五音,不可胜用也;既竭心思焉,继之以不忍人之政,而仁覆天下矣。故曰:为高必因丘陵,为下必因川泽,为政不因先王之道,可谓智乎?是以惟仁者宜在高位。不仁而在高位,是播其恶於众也。上无道揆也,下无法守也,朝不信道,工不信度,君子犯义,小人犯刑,国之所存者幸也。故曰:城郭不完,兵甲不多,非国之灾也;田野不辟,货财不聚,非国之害也。上无礼,下无学,贼民兴,丧无日矣。《诗》曰:‘天之方蹶,无然泄泄。’泄泄犹沓沓也。

  事君无义,进退无礼,言则非先王之道者,犹沓沓也。故曰:责难於君谓之恭,陈善闭邪谓之敬,吾君不能谓之贼。”

  孟子曰:“规矩,方员之至也;圣人,人伦之至也。欲为君,尽君道;欲为臣,尽臣道。二者皆法尧、舜而已矣。不以舜之所以事尧事君,不敬其君者也;不以尧之所以治民治民,贼其民者也。孔子曰:‘道二,仁与不仁而已矣。’暴其民甚,则身弑国亡;不甚,则身危国削,名之曰‘幽’、‘厉’,虽孝子慈孙,百世不能改也。《诗》云:‘殷鉴不远,在夏后之世’,此之谓也。”

  孟子曰:“三代之得天下也以仁,其失天下也以不仁。国之所以废兴存亡者亦然。天子不仁,不保四海;诸侯不仁,不保社稷;卿大夫不仁,不保宗庙;士庶人不仁,不保四体。今恶死亡而乐不仁,是由恶醉而强酒。”

  孟子曰:“爱人不亲,反其仁;治人不治,反其智;礼人不答,反其敬。行有不得者皆反求诸己,其身正而天下归之。《诗》云:‘永言配命,自求多福。’”孟子曰:“人有恒言,皆曰‘天下国家’。天下之本在国,国之本在家,家之本在身。”

  孟子曰:“为政不难,不得罪於巨室。巨室之所慕,一国慕之;一国之所慕,天下慕之。故沛然德教,溢乎四海。”

  孟子曰:“天下有道,小德役大德,小贤役大贤;天下无道,小役大,弱役强。斯二者,天也。顺天者存,逆天者亡。齐景公曰:‘既不能令,又不受命,是绝物也。’涕出而女於吴。今也小国师大国而耻受命焉,是犹弟子而耻受命於先师也。如耻之,莫若师文王。师文王,大国五年,小国七年,必为政於天下矣。

  《诗》云:‘商之孙子,其丽不亿。上帝既命,侯于周服。侯服于周,天命靡常。

  殷士肤敏,祼将于京。’孔子曰:‘仁不可为众也。夫国君好仁,天下无敌。’今也欲无敌於天下而不以仁,是犹执热而不以濯也。《诗》云:‘谁能执热,逝不以濯?’”孟子曰:“不仁者可与言哉?安其危而利其菑,乐其所以亡者。不仁而可与言,则何亡国败家之有?有孺子歌曰:‘沧浪之水清兮,可以濯我缨;沧浪之水浊兮,可以濯我足。’孔子曰:‘小子听之!清斯濯缨,浊斯濯足矣。自取之也。’夫人必自侮,然后人侮之;家必自毁,而后人毁之;国必自伐,而后人伐之。

  《太甲》曰:‘天作孽,犹可违。自作孽,不可活。’此之谓也。”

  孟子曰:“桀纣之失天下也,失其民也。失其民者,失其心也。得天下有道:得其民,斯得天下矣。得其民有道:得其心,斯得民矣。得其心有道:所欲与之聚之,所恶勿施尔也。民之归仁也,犹水之就下、兽之走圹也。故为渊驱鱼者,獭也;为丛驱爵者,鹯也;为汤武驱民者,桀与纣也。今天下之君有好仁者,则诸侯皆为之驱矣。虽欲无王,不可得已。今之欲王者,犹七年之病求三年之艾也。

  苟为不畜,终身不得。苟不志於仁,终身忧辱,以陷於死亡。《诗》云:‘其何能淑,载胥及溺。’此之谓也。”

  孟子曰:“自暴者不可与有言也,自弃者不可与有为也。言非礼义,谓之自暴也。吾身不能居仁由义,谓之自弃也。仁,人之安宅也;义,人之正路也。旷安宅而弗居,舍正路而不由,哀哉!”孟子曰:“道在迩而求诸远,事在易而求诸难。人人亲其亲,长其长,而天下平。”

  孟子曰:“居下位而不获於上,民不可得而治也。获於上有道,不信於友,弗获於上矣。信於友有道,事亲弗悦,弗信於友矣。悦亲有道,反身不诚,不悦於亲矣。诚身有道,不明乎善,不诚其身矣。是故诚者,天之道也。思诚者,人之道也。至诚而不动者,未之有也。不诚,未有能动者也。”

  孟子曰:“伯夷辟纣,居北海之滨,闻文王作,兴曰:‘盍归乎来!吾闻西伯善养老者。’太公辟纣,居东海之滨,闻文王作,兴曰:‘盍归乎来!吾闻西伯善养老者。’二老者,天下之大老也,而归之,是天下之父归之也。天下之父归之,其子焉往?诸侯有行文王之政者,七年之内,必为政於天下矣。”

  孟子曰:“求也为季氏宰,无能改於其德,而赋粟倍他日。孔子曰:‘求非我徒也,小子鸣鼓而攻之可也。’由此观之,君不行仁政而富之,皆弃於孔子者也,况於为之强战?争地以战,杀人盈野;争城以战,杀人盈城,此所谓率土地而食人肉,罪不容於死。故善战者服上刑,连诸侯者次之,辟草莱、任土地者次之。”

  孟子曰:“存乎人者,莫良於眸子。眸子不能掩其恶。胸中正则眸子了焉,胸中不正则眸子眊焉。听其言也,观其眸子,人焉廋哉!”孟子曰:“恭者不侮人,俭者不夺人。侮夺人之君,惟恐不顺焉,恶得为恭俭?恭俭岂可以声音笑貌为哉?”淳於髡曰:“男女授受不亲,礼与?”孟子曰:“礼也。”曰:“嫂溺,则援之以手乎?”曰:“嫂溺不援,是豺狼也。男女授受不亲,礼也。嫂溺,援之以手者,权也。”曰:“今天下溺矣,夫子之不援,何也?”曰:“天下溺,援之以道。嫂溺,援之以手。子欲手援天下乎?”公孙丑曰:“君子之不教子,何也?”孟子曰:“势不行也。教者必以正。

  以正不行,继之以怒。继之以怒,则反夷矣。夫子教我以正,夫子未出於正也。

  则是父子相夷也。父子相夷,则恶矣。古者易子而教之,父子之间不责善。责善则离,离则不祥莫大焉。”

  孟子曰:“事,孰为大?事亲为大。守,孰为大?守身为大。不失其身而能事其亲者,吾闻之矣。失其身而能事其亲者,吾未之闻也。孰不为事?事亲,事之本也。孰不为守?守身,守之本也。曾子养曾晳,必有酒肉。将彻,必请所与。

  问有馀,必曰:‘有。’曾晳死,曾元养曾子,必有酒肉。将彻,不请所与。问有馀,曰:‘亡矣。’将以复进也。此所谓养口体者也。若曾子,则可谓养志也。

  事亲若曾子者,可也。”

  孟子曰:“人不足与適也,政不足与间也。唯大人为能格君心之非。君仁,莫不仁;君义,莫不义;君正,莫不正。一正君而国定矣。”

  孟子曰:“有不虞之誉,有求全之毁。”

  孟子曰:“人之易其言也,无责耳矣。”

  孟子曰:“人之患在好为人师。”

  乐正子从於子敖之齐。乐正子见孟子。孟子曰:“子亦来见我乎?”曰:“先生何为出此言也?”曰:“子来几日矣?”曰:“昔者。”曰:“昔者,则我出此言也,不亦宜乎?”曰:“舍馆未定。”曰:“子闻之也,舍馆定,然后求见长者乎?”曰:“克有罪。”

  孟子谓乐正子曰:“子之从於子敖来,徒餔啜也。我不意子学古之道而以餔啜也。”

  孟子曰:“不孝有三,无后为大。舜不告而娶,为无后也,君子以为犹告也。”

  孟子曰:“仁之实,事亲是也;义之实,从兄是也;智之实,知斯二者弗去是也;礼之实,节文斯二者是也;乐之实,乐斯二者,乐则生矣;生则恶可已也,恶可已,则不知足之蹈之手之舞之。”

  孟子曰:“天下大悦而将归己,视天下悦而归己犹草芥也,惟舜为然。不得乎亲,不可以为人。不顺乎亲,不可以为子。舜尽事亲之道而瞽瞍厎豫,瞽瞍厎豫而天下化,瞽瞍厎豫而天下之为父子者定,此之谓大孝。”
卷三 公孙丑上

  公孙丑问曰:“夫子当路於齐,管仲、晏子之功,可复许乎?”孟子曰:“子诚齐人也,知管仲、晏子而已矣。或问乎曾西曰:‘吾子与子路孰贤?’曾西蹴然曰:‘吾先子之所畏也。’曰:‘然则吾子与管仲孰贤?’曾西艴然不悦,曰:‘尔何曾比予於管仲?管仲得君,如彼其专也,行乎国政,如彼其久也,功烈如彼其卑也,尔何曾比予於是?’”曰:“管仲,曾西之所不为也,而子为我愿之乎?”曰:“管仲以其君霸,晏子以其君显。管仲、晏子犹不足为与?”曰:“以齐王,由反手也。”曰:“若是,则弟子之惑滋甚。且以文王之德,百年而后崩,犹未洽於天下。武王、周公继之,然后大行。今言王若易然,则文王不足法与?”曰:“文王何可当也?由汤至於武丁,贤圣之君六七作,天下归殷久矣,久则难变也。武丁朝诸侯有天下,犹运之掌也。纣之去武丁未久也,其故家遗俗,流风善政,犹有存者。又有微子、微仲、王子比干、箕子、胶鬲,皆贤人也,相与辅相之,故久而后失之也。尺地莫非其有也,一民莫非其臣也,然而文王犹方百里起,是以难也。齐人有言曰:‘虽有智慧,不如乘势;虽有鎡基,不如待时。’今时则易然也。夏后、殷、周之盛,地未有过千里者也,而齐有其地矣。鸡鸣狗吠相闻,而达乎四境,而齐有其民矣。地不改辟矣,民不改聚矣,行仁政而王,莫之能御也。且王者之不作,未有疏於此时者也;民之憔悴於虐政,未有甚於此时者也。饥者易为食,渴者易为饮。孔子曰:‘德之流行,速於置邮而传命。’当今之时,万乘之国行仁政,民之悦之,犹解倒悬也。故事半古之人,功必倍之,惟此时为然。”

  公孙丑问曰:“夫子加齐之卿相,得行道焉,虽由此霸王,不异矣。如此则动心否乎?”孟子曰:“否!我四十不动心。”曰:“若是,则夫子过孟贲远矣。”曰:“是不难,告子先我不动心。”曰:“不动心有道乎?”曰:“有。

  北宫黝之养勇也,不肤桡,不目逃,思以一豪挫於人,若挞之於市朝,不受於褐宽博,亦不受於万乘之君;视刺万乘之君,若刺褐夫,无严诸侯,恶声至,必反之。孟施舍之所养勇也,曰:‘视不胜犹胜也;量敌而后进,虑胜而后会,是畏三军者也。舍岂能为必胜哉?能无惧而已矣。’孟施舍似曾子,北宫黝似子夏。

  夫二子之勇,未知其孰贤,然而孟施舍守约也。昔者曾子谓子襄曰:‘子好勇乎?吾尝闻大勇於夫子矣。自反而不缩,虽褐宽博,吾不惴焉;自反而缩,虽千万人,吾往矣。’孟施舍之守气,又不如曾子之守约也。”曰:“敢问夫子之不动心与告子之不动心,可得闻与?”“告子曰:‘不得於言,勿求於心;不得於心,勿求於气。’不得於心,勿求於气,可;不得於言,勿求於心,不可。夫志,气之帅也;气,体之充也。夫志至焉,气次焉;故曰:‘持其志,无暴其气。’”“既曰志至焉,气次焉,又曰持其志,无暴其气者,何也?”曰:“志壹则动气,气壹则动志也。今夫蹶者趋者,是气也,而反动其心。”“敢问夫子恶乎长?”曰:“我知言,我善养吾浩然之气。”“敢问何谓浩然之气?”曰:“难言也。

  其为气也,至大至刚,以直养而无害,则塞於天地之间。其为气也,配义与道。

  无是,馁也。是集义所生者,非义袭而取之也。行有不慊於心,则馁矣。我故曰:告子未尝知义,以其外之也。必有事焉而勿正,心勿忘,勿助长也。无若宋人然:宋人有闵其苗之不长而揠之者,芒芒然归,谓其人曰:‘今日病矣!予助苗长矣!’其子趋而往视之,苗则槁矣。天下之不助苗长者寡矣。以为无益而舍之者,不耘苗者也;助之长者,揠苗者也,非徒无益,而又害之。”“何谓知言?”曰:“诐辞知其所蔽,淫辞知其所陷,邪辞知其所离,遁辞知其所穷。生於其心,害於其政;发於其政,害於其事。圣人复起,必从吾言矣。宰我、子贡善为说辞,冉牛、闵子、颜渊善言德行,孔子兼之,曰:‘我於辞命,则不能也。’”“然则夫子既圣矣乎?”曰:“恶!是何言也?昔者子贡问於孔子曰:‘夫子圣矣乎?’孔子曰:‘圣则吾不能,我学不厌,而教不倦也。’子贡曰:‘学不厌,智也;教不倦,仁也。仁且智,夫子既圣矣乎。’夫圣,孔子不居,是何言也?昔者窃闻之:子夏、子游、子张皆有圣人之一体,冉牛、闵子、颜渊则具体而微。”“敢问所安?”曰:“姑舍是。”曰:“伯夷、伊尹何如?”曰:“不同道。非其君不事,非其民不使;治则进,乱则退,伯夷也。何事非君,何使非民;治亦进,乱亦进,伊尹也。可以仕则仕,可以止则止,可以久则久,可以速则速,孔子也。皆古圣人也,吾未能有行焉。乃所愿,则学孔子也。”“伯夷、伊尹於孔子,若是班乎?”曰:“否!自有生民以来,未有孔子也。”“然则有同与?”曰:“有。得百里之地而君之,皆能以朝诸侯,有天下;行一不义,杀一不辜,而得天下,皆不为也。是则同。”曰:“敢问其所以异。”曰:“宰我、子贡、有若,智足以知圣人,汙不至阿其所好。宰我曰:‘以予观於夫子,贤於尧、舜远矣。’子贡曰:‘见其礼而知其政,闻其乐而知其德,由百世之后,等百世之王,莫之能违也。

  自生民以来,未有夫子也。’有若曰:‘岂惟民哉?麒麟之於走兽,凤凰之於飞鸟,泰山之於丘垤,河海之於行潦,类也。圣人之於民,亦类也。出於其类,拔乎其萃,自生民以来,未有盛於孔子也。’”孟子曰:“以力假仁者霸,霸必有大国;以德行仁者王,王不待大。汤以七十里,文王以百里。以力服人者,非心服也,力不赡也;以德服人者,中心悦而诚服也,如七十子之服孔子也。《诗》云:‘自西自东,自南自北,无思不服。’此之谓也。”

  孟子曰:“仁则荣,不仁则辱。今恶辱而居不仁,是犹恶湿而居下也。如恶之,莫如贵德而尊士,贤者在位,能者在职。国家闲暇,及是时,明其政刑。

  虽大国,必畏之矣。《诗》云:‘迨天之未阴雨,彻彼桑土,绸缪牖户。今此下民,或敢侮予。’孔子曰:‘为此诗者,其知道乎!能治其国家,谁敢侮之?’今国家闲暇,及是时,般乐怠敖,是自求祸也。祸福无不自己求之者。《诗》云:‘永言配命,自求多福。’《太甲》曰:‘天作孽,犹可违。自作孽,不可活。’此之谓也。”

  孟子曰:“尊贤使能,俊杰在位,则天下之士皆悦,而愿立於其朝矣;市,廛而不征,法而不廛,则天下之商皆悦,而愿藏於其市矣;关,讥而不征,则天下之旅皆悦,而愿出於其路矣;耕者,助而不税,则天下之农皆悦,而愿耕於其野矣;廛,无夫里之布,则天下之民皆悦,而愿为之氓矣。信能行此五者,则邻国之民仰之若父母矣。率其子弟,攻其父母,自有生民以来未有能济者也。如此,则无敌於天下。无敌於天下者,天吏也。然而不王者,未之有也。”

  孟子曰:“人皆有不忍人之心。先王有不忍人之心,斯有不忍人之政矣。以不忍人之心,行不忍人之政,治天下可运之掌上。所以谓人皆有不忍人之心者,今人乍见孺子将入於井,皆有怵惕恻隐之心,非所以内交於孺子之父母也,非所以要誉於乡党朋友也,非恶其声而然也。由是观之,无恻隐之心,非人也;无羞恶之心,非人也;无辞让之心,非人也;无是非之心,非人也。恻隐之心,仁之端也;羞恶之心,义之端也;辞让之心,礼之端也;是非之心,智之端也。人之有是四端也,犹其有四体也。有是四端而自谓不能者,自贼者也;谓其君不能者,贼其君者也。凡有四端於我者,知皆扩而充之矣,若火之始然,泉之始达。苟能充之,足以保四海;苟不充之,不足以事父母。”

  孟子曰:“矢人岂不仁於函人哉?矢人唯恐不伤人,函人唯恐伤人。巫匠亦然。故术不可不慎也。孔子曰:‘里仁为美。择不处仁,焉得智?’夫仁,天之尊爵也,人之安宅也。莫之御而不仁,是不智也。不仁、不智,无礼、无义,人役也。人役而耻为役,由弓人而耻为弓,矢人而耻为矢也。如耻之,莫如为仁。

  仁者如射,射者正己而后发;发而不中,不怨胜己者,反求诸己而已矣。”

  孟子曰:“子路,人告之以有过则喜。禹,闻善言则拜。大舜有大焉,善与人同,舍己从人,乐取於人以为善。自耕稼、陶、渔以至为帝,无非取於人者。

  取诸人以为善,是与人为善者也。故君子莫大乎与人为善。”

  孟子曰:“伯夷,非其君不事,非其友不友。不立於恶人之朝,不与恶人言。

  立於恶人之朝,与恶人言,如以朝衣朝冠坐於涂炭。推恶恶之心,思与乡人立,其冠不正,望望然去之,若将浼焉。是故诸侯虽有善其辞命而至者,不受也。不受也者,是亦不屑就已。柳下惠不羞汙君,不卑小官;进不隐贤,必以其道;遗佚而不怨,阨穷而不悯。故曰:‘尔为尔,我为我,虽袒裼裸裎於我侧,尔焉能浼我哉?’故由由然与之偕而不自失焉,援而止之而止。援而止之而止者,是亦不屑去已。”孟子曰:“伯夷隘,柳下惠不恭。隘与不恭,君子不由也。”
卷十 万章下

  孟子曰:“伯夷,目不视恶色,耳不听恶声。非其君不事,非其民不使。治则进,乱则退。横政之所出,横民之所止,不忍居也。思与乡人处,如以朝衣朝冠坐於涂炭也。当纣之时,居北海之滨,以待天下之清也。故闻伯夷之风者,顽夫廉,懦夫有立志。伊尹曰:‘何事非君?何使非民?’治亦进,乱亦进,曰:‘天之生斯民也,使先知觉后知,使先觉觉后觉。予,天民之先觉者也。予将以此道觉此民也。’思天下之民,匹夫匹妇有不与被尧、舜之泽者,若己推而内之沟中,其自任以天下之重也。柳下惠不羞汙君,不辞小官。进不隐贤,必以其道。

  遗佚而不怨,阨穷而不悯。与乡人处,由由然不忍去也。‘尔为尔,我为我,虽袒裼裸裎於我侧,尔焉能浼我哉?’故闻柳下惠之风者,鄙夫宽,薄夫敦。孔子之去齐,接淅而行。去鲁,曰:‘迟迟吾行也,去父母国之道也。’可以速而速,可以久而久,可以处而处,可以仕而仕,孔子也。”孟子曰:“伯夷,圣之清者也;伊尹,圣之任者也;柳下惠,圣之和者也;孔子,圣之时者也。孔子之谓集大成。集大成也者,金声而玉振之也。金声也者,始条理也;玉振之也者,终条理也。始条理者,智之事也;终条理者,圣之事也。智,譬则巧也;圣,譬则力也。由射於百步之外也,其至,尔力也;其中,非尔力也。”

  北宫锜问曰:“周室班爵禄也,如之何?”孟子曰:“其详不可得闻也,诸侯恶其害己也,而皆去其籍;然而轲也尝闻其略也。天子一位,公一位,侯一位,伯一位,子、男同一位,凡五等也。君一位,卿一位,大夫一位,上士一位,中士一位,下士一位,凡六等。天子之制,地方千里,公侯皆方百里,伯七十里,子、男五十里,凡四等。不能五十里,不达於天子,附於诸侯,曰附庸。天子之卿受地视侯,大夫受地视伯,元士受地视子、男。大国地方百里,君十卿禄,卿禄四大夫,大夫倍上士,上士倍中士,中士倍下士,下士与庶人在官者同禄,禄足以代其耕也。次国地方七十里,君十卿禄,卿禄三大夫,大夫倍上士,上士倍中士,中士倍下士,下士与庶人在官者同禄,禄足以代其耕也。小国地方五十里,君十卿禄,卿禄二大夫,大夫倍上士,上士倍中士,中士倍下士,下士与庶人在官者同禄,禄足以代其耕也。耕者之所获,一夫百亩,百亩之粪,上农夫食九人,上次食八人,中食七人,中次食六人,下食五人。庶人在官者,其禄以是为差。”

  万章问曰:“敢问友。”孟子曰:“不挟长,不挟贵,不挟兄弟而友。友也者,友其德也,不可以有挟也。孟献子,百乘之家也,有友五人焉:乐正裘,牧仲,其三人则予忘之矣。献子之与此五人者友也,无献子之家者也。此五人者,亦有献子之家,则不与之友矣。非惟百乘之家为然也,虽小国之君亦有之。费惠公曰:‘吾於子思则师之矣,吾於颜般则友之矣。王顺、长息,则事我者也。非惟小国之君为然也,虽大国之君亦有之。晋平公之於亥唐也,入云则入,坐云则坐,食云则食。虽蔬食菜羹,未尝不饱,盖不敢不饱也。然终於此而已矣。弗与共天位也,弗与治天职也,弗与食天禄也。士之尊贤者也,非王公之尊贤也。舜尚见帝,帝馆甥于贰室,亦飨舜,迭为宾主,是天子而友匹夫也。用下敬上,谓之贵贵;用上敬下,谓之尊贤。贵贵尊贤,其义一也。”

  万章曰:“敢问交际何心也?”孟子曰:“恭也。”曰:“卻之卻之为不恭’,何哉?”曰:“尊者赐之。曰:其所取之者义乎,不义乎?而后受之,以是为不恭,故弗卻也。”曰:“请无以辞卻之,以心卻之,曰:其取诸民之不义也。而以他辞无受,不可乎?”曰:“其交也以道,其接也以礼,斯孔子受之矣。”万章曰:“今有御人於国门之外者,其交也以道,其餽也以礼,斯可受御与?”曰:“不可。《康诰》曰:‘杀越人于货,闵不畏死,凡民罔不譈。’是不待教而诛者也。殷受夏,周受殷,所不辞也。於今为烈,如之何其受之?”曰:“今之诸侯取之於民也,犹御也。苟善其礼际矣,斯君子受之,敢问何说也?”曰:“子以为有王者作,将比今之诸侯而诛之乎?其教之不改而后诛之乎?夫谓非其有而取之者盗也,充类至义之尽也。孔子之仕於鲁也,鲁人猎较,孔子亦猎较。猎较犹可,而况受其赐乎?”曰:“然则孔子之仕也,非事道与?”曰:“事道也。”“事道奚猎较也?”曰:“孔子先簿正祭器,不以四方之食供簿正。”

  曰:“奚不去也?”曰:“为之兆也。兆足以行矣,而不行,而后去,是以未尝有所终三年淹也。孔子有见行可之仕,有际可之仕,有公养之仕。於季桓子,见行可之仕也。於卫灵公,际可之仕也。於卫孝公,公养之仕也。”

  孟子曰:“仕非为贫也,而有时乎为贫。娶妻非为养也,而有时乎为养。为贫者,辞尊居卑,辞富居贫。辞尊居卑,辞富居贫,恶乎宜乎?抱关击柝。孔子尝为委吏矣,曰:‘会计当而已矣。’尝为乘田矣,曰:‘牛羊茁壮长而已矣。’位卑而言高,罪也。立乎人之本朝而道不行,耻也。”

  万章曰:“士之不讬诸侯,何也?”孟子曰:“不敢也。诸侯失国而后讬於诸侯,礼也。士之讬於诸侯,非礼也。”万章曰:“君餽之粟,则受之乎?”曰:“受之。”“受之何义也?”曰:“君之於氓也,固周之。”曰:“周之则受,赐之则不受,何也?”曰:“不敢也。”曰:“敢问其不敢何也?”曰:“抱关击柝者皆有常职以食於上。无常职而赐於上者,以为不恭也。”曰:“君餽之则受之,不识可常继乎?”曰:“缪公之於子思也,亟问,亟餽鼎肉。

  子思不悦。於卒也,摽使者出诸大门之外,北面稽首再拜而不受,曰:‘今而后知君之犬马畜伋。’盖自是台无餽也。悦贤不能举,又不能养也,可谓悦贤乎?”曰:“敢问国君欲养君子,如何斯可谓养矣?”曰:“以君命将之,再拜稽首而受。其后廪人继粟,庖人继肉,不以君命将之。子思以为鼎肉使己仆仆尔亟拜也,非养君子之道也。尧之於舜也,使其子九男事之,二女女焉,百官牛羊仓廪备,以养舜於畎亩之中,后举而加诸上位,故曰王公之尊贤者也。”

  万章曰:“敢问不见诸侯,何义也?”孟子曰:“在国曰市井之臣,在野曰草莽之臣,皆谓庶人。庶人不传质为臣,不敢见於诸侯,礼也。”万章曰:“庶人,召之役则往役,君欲见之,召之则不往见之,何也?”曰:“往役,义也。

  往见,不义也。且君之欲见之也,何为也哉?”曰:“为其多闻也,为其贤也。”

  曰:“为其多闻也,则天子不召师,而况诸侯乎?为其贤也,则吾未闻欲见贤而召之也。缪公亟见於子思,曰:‘古千乘之国以友士,何如?’子思不悦,曰:‘古之人有言曰:事之云乎?岂曰友之云乎?’子思之不悦也,岂不曰:‘以位,则子,君也;我,臣也;何敢与君友也?以德,则子事我者也,奚可以与我友?’千乘之君求与之友而不可得也,而况可召与?齐景公田,招虞人以旌,不至,将杀之。志士不忘在沟壑,勇士不忘丧其元。孔子奚取焉?取非其招不往也。”曰:“敢问招虞人何以?”曰:“以皮冠。庶人以旃,士以旂,大夫以旌。以大夫之招招虞人,虞人死不敢往。以士之招招庶人,庶人岂敢往哉?况乎以不贤人之招招贤人乎?欲见贤人而不以其道,犹欲其入而闭之门也。夫义,路也;礼,门也。

  惟君子能由是路,出入是门也。《诗》云,‘周道如底,其直如矢。君子所履,小人所视。’”万章曰:“孔子,君命召不俟驾而行,然则孔子非与?”曰:“孔子当仕,有官职,而以其官召之也。”

  孟子谓万章曰:“一乡之善士斯友一乡之善士,一国之善士斯友一国之善士,天下之善士斯友天下之善士。以友天下之善士为未足,又尚论古之人。颂其诗,读其书,不知其人,可乎?是以论其世也,是尚友也。”

  齐宣王问卿。孟子曰:“王何卿之问也?”王曰:“卿不同乎?”曰:“不同。有贵戚之卿,有异姓之卿。”王曰:“请问贵戚之卿。”曰:“君有大过则谏,反覆之而不听,则易位。”王勃然变乎色。曰:“王勿异也。王问臣,臣不敢不以正对。”王色定,然后请问异姓之卿。曰:“君有过则谏,反覆之而不听,则去。”
  卷十二 告子下

  任人有问屋庐子曰:“礼与食孰重?”曰:“礼重。”“色与礼孰重?”曰:“礼重。”曰:“以礼食,则饥而死;不以礼食,则得食,必以礼乎?亲迎,则不得妻;不亲迎,则得妻,必亲迎乎?”屋庐子不能对。明日之邹,以告孟子。

  孟子曰:“於!答是也何有?不揣其本,而齐其末,方寸之木可使高於岑楼。金重於羽者,岂谓一钩金与一舆羽之谓哉?取食之重者与礼之轻者而比之,奚翅食重?取色之重者与礼之轻者而比之,奚翅色重?往应之曰:‘紾兄之臂而夺之食,则得食;不紾,则不得食,则将紾之乎?逾东家墙而搂其处子,则得妻;不搂,则不得妻;则将搂之乎?”曹交问曰:“人皆可以为尧、舜,有诸?”孟子曰:“然。”“交闻文王十尺,汤九尺。今交九尺四寸以长,食粟而已,如何则可?”曰:“奚有於是?亦为之而已矣。有人於此,力不能胜一匹雏,则为无力人矣。今曰举百钧,则为有力人矣。然则举乌获之任,是亦为乌获而已矣。夫人岂以不胜为患哉?弗为耳。

  徐行后长者谓之弟,疾行先长者谓之不弟。夫徐行者,岂人所不能哉?所不为也。

  尧、舜之道,孝悌而已矣。子服尧之服,诵尧之言,行尧之行,是尧而已矣。子服桀之服,诵桀之言,行桀之行,是桀而已矣。”曰:“交得见於邹君,可以假馆,愿留而受业於门。”曰:“夫道若大路然,岂难知哉?人病不求耳。子归而求之,有馀师。”

  公孙丑问曰:“高子曰:《小弁》,小人之诗也。”孟子曰:“何以言之?”曰:“怨。”曰:“固哉,高叟之为诗也!有人於此,越人关弓而射之,则己谈笑而道之,无他,疏之也。其兄关弓而射之,则己垂涕泣而道之,无他,戚之也。

  《小弁》之怨,亲亲也。亲亲,仁也。固矣夫,高叟之为诗也!”曰:“《凯风》何以不怨?”曰:“《凯风》,亲之过小者也。《小弁》,亲之过大者也。亲之过大而不怨,是愈疏也;亲之过小而怨,是不可矶也。愈疏,不孝也;不可矶,亦不孝也。孔子曰:‘舜其至孝矣,五十而慕。’”宋牼将之楚,孟子遇於石丘,曰:“先生将何之?”曰:“吾闻秦、楚构兵,我将见楚王说而罢之。楚王不悦,我将见秦王说而罢之。二王我将有所遇焉。”

  曰:“轲也请无问其详,愿闻其指。说之将何如?”曰:“我将言其不利也。”

  曰:“先生之志则大矣,先生之号则不可。先生以利说秦、楚之王,秦、楚之王悦於利,以罢三军之师,是三军之士乐罢而悦於利也。为人臣者怀利以事其君,为人子者怀利以事其父,为人弟者怀利以事其兄,是君臣、父子、兄弟终去仁义,怀利以相接,然而不亡者,未之有也。先生以仁义说秦、楚之王,秦、楚之王悦於仁义,而罢三军之师,是三军之士乐罢而悦於仁义也。为人臣者怀仁义以事其君,为人子者怀仁义以事其父,为人弟者怀仁义以事其兄,是君臣、父子、兄弟去利,怀仁义以相接也,然而不王者,未之有也。何必曰利?”孟子居邹。季任为任处守,以币交,受之而不报。处於平陆,储子为相,以币交,受之而不报。他日,由邹之任,见季子;由平陆之齐,不见储子。屋庐子喜曰:“连得间矣!”问曰:“夫子之任见季子,之齐不见储子,为其为相与?”曰:“非也。《书》曰;‘享多仪,仪不及物曰不享,惟不役志于享。’为其不成享也。”屋庐子悦。或问之,屋庐子曰:“季子不得之邹,储子得之平陆。”

  淳于髡曰;“先名实者,为人也;后名实者,自为也。夫子在三卿之中,名实未加於上下而去之,仁者固如此乎?”孟子曰:“居下位,不以贤事不肖者,伯夷也。五就汤,五就桀者,伊尹也。不恶汙君,不辞小官者,柳下惠也。三子者不同道,其趋一也。”“一者何也?”曰:“仁也。君子亦仁而已矣,何必同?”曰:“鲁缪公之时,公仪子为政,子柳、子思为臣,鲁之削也滋甚。若是乎贤者之无益於国也!”曰:“虞不用百里奚而亡,秦缪公用之而霸。不用贤则亡,削何可得欤?”曰:“昔者王豹处於淇,而河西善讴。绵驹处於高唐,而齐右善歌。

  华周、杞梁之妻善哭其夫而变国俗。有诸内必形诸外,为其事而无其功者,髡未尝睹之也。是故无贤者也,有则髡必识之。”曰:“孔子为鲁司寇,不用,从而祭,燔肉不至,不税冕而行。不知者以为为肉也,其知者以为为无礼也。乃孔子则欲以微罪行,不欲为苟去。君子之所为,众人固不识也。”

  孟子曰:“五霸者,三王之罪人也。今之诸侯,五霸之罪人也。今之大夫,今之诸侯之罪人也。天子適诸侯曰巡狩,诸侯朝於天子曰述职。春省耕而补不足,秋省敛而助不给。入其疆,土地辟,田野治,养老尊贤,俊杰在位,则有庆,庆以地。入其疆,土地荒芜,遗老失贤,掊克在位,则有让。一不朝则贬其爵,再不朝则削其地,三不朝则六师移之。是故天子讨而不伐,诸侯伐而不讨。五霸者,搂诸侯以伐诸侯者也。故曰五霸者,三王之罪人也。五霸,桓公为盛。葵丘之会诸侯,束牲载书而不歃血。初命曰:‘诛不孝,无易树子,无以妾为妻。’再命曰:‘尊贤育才,以彰有德。’三命曰:‘敬老慈幼,无忘宾旅。’四命曰:‘士无世官,官事无摄,取士必得,无专杀大夫。’五命曰:‘无曲防,无遏籴,无有封而不告。’曰:‘凡我同盟之人,既盟之后,言归于好。’今之诸侯皆犯此五禁,故曰今之诸侯,五霸之罪人也。长君之恶其罪小,逢君之恶其罪大。今之大夫皆逢君之恶,故曰今之大夫,今之诸侯之罪人也。”

  鲁欲使慎子为将军。孟子曰:“不教民而用之,谓之殃民。殃民者,不容於尧、舜之世。一战胜齐,遂有南阳,然且不可。”慎子勃然不悦,曰:“此则滑釐所不识也。”曰:“吾明告子:天子之地方千里,不千里,不足以待诸侯。诸侯之地方百里,不百里,不足以守宗庙之典籍。周公之封於鲁,为方百里也,地非不足,而俭於百里。太公之封于齐也,亦为方百里也,地非不足也,而俭於百里。今鲁方百里者五,子以为有王者作,则鲁在所损乎,在所益乎?徒取诸彼以与此,然且仁者不为,况於杀人以求之乎?君子之事君也,务引其君以当道,志於仁而已。”

  孟子曰:“今之事君者皆曰:‘我能为君辟土地,充府库。’今之所谓良臣,古之所谓民贼也。君不乡道,不志於仁,而求富之,是富桀也。‘我能为君约与国,战必克。’今之所谓良臣,古之所谓民贼也。君不乡道,不志於仁,而求为之强战,是辅桀也。由今之道,无变今之俗,虽与之天下,不能一朝居也。”

  白圭曰:“吾欲二十而取一,何如?”孟子曰:“子之道,貉道也。万室之国,一人陶,则可乎?”曰:“不可,器不足用也。”曰:“夫貉,五穀不生,惟黍生之。无城郭、宫室、宗庙、祭祀之礼,无诸侯币帛饔飧,无百官有司,故二十取一而足也。今居中国,去人伦,无君子,如之何其可也?陶以寡,且不可以为国,况无君子乎?欲轻之於尧、舜之道者,大貉小貉也;欲重之於尧、舜之道者,大桀小桀也。”

  白圭曰:“丹之治水也愈於禹。”孟子曰:“子过矣。禹之治水,水之道也,是故禹以四海为壑。今吾子以邻国为壑。水逆行谓之洚水。洚水者,洪水也。仁人之所恶也。吾子过矣。”

  孟子曰:“君子不亮,恶乎执?”鲁欲使乐正子为政。孟子曰:“吾闻之,喜而不寐。”公孙丑曰:“乐正子强乎?”曰:“否。”“有知虑乎?”曰:“否。”“多闻识乎?”曰:“否。”

  “然则奚为喜而不寐?”曰:“其为人也好善。”“好善足乎?”曰:“好善优於天下,而况鲁国乎?夫苟好善,则四海之内皆将轻千里而来告之以善。夫苟不好善,则人将曰:‘訑訑,予既已知之矣。’訑訑之声音颜色距人於千里之外。士止於千里之外,则谗谄面谀之人至矣。与谗谄面谀之人居,国欲治,可得乎?”陈子曰:“古之君子何如则仕?”孟子曰:“所就三,所去三。迎之致敬以有礼;言,将行其言也,则就之。礼貌未衰,言弗行之,则去之。其次,虽未行其言也,迎之致敬以有礼,则就之。礼貌衰,则去之。其下,朝不食,夕不食,饥饿不能出门户,君闻之,曰:‘吾大者不能行其道,又不能从其言也。使饥饿於我土地,吾耻之。’周之,亦可受也,免死而已矣。”

  孟子曰:“舜发於畎亩之中,傅说举於版筑之间,胶鬲举於鱼盐之中,管夷吾举於士,孙叔敖举於海,百里奚举於市。故天将降大任於是人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,曾益其所不能。人恒过,然后能改。困於心,衡於虑,而后作。征於色,发於声,而后喻。

  入则无法家拂士,出则无敌国外患者,国恒亡。然后知生於忧患而死於安乐也。”

  孟子曰:“教亦多术矣,予不屑之教诲也者,是亦教诲之而已矣。”
  卷十三 尽心上

  孟子曰:“尽其心者,知其性也。知其性,则知天矣。存其心,养其性,所以事天也。殀寿不贰,脩身以俟之,所以立命也。”

  孟子曰:“莫非命也,顺受其正。是故知命者不立乎岩墙之下。尽其道而死者,正命也;桎梏死者,非正命也。”

  孟子曰:“求则得之,舍则失之,是求有益於得也,求在我者也。求之有道,得之有命,是求无益於得也,求在外者也。”

  孟子曰:“万物皆备於我矣。反身而诚,乐莫大焉。强恕而行,求仁莫近焉。”

  孟子曰:“行之而不著焉,习矣而不察焉,终身由之而不知其道者,众也。”

  孟子曰:“人不可以无耻,无耻之耻,无耻矣。”

  孟子曰:“耻之於人大矣。为机变之巧者,无所用耻焉。不耻不若人,何若人有?”孟子曰:“古之贤王好善而忘势。古之贤士何独不然?乐其道而忘人之势,故王公不致敬尽礼,则不得亟见之。见且由不得亟,而况得而臣之乎?”孟子谓宋句践曰:“子好游乎?吾语子游。人知之亦嚣嚣;人不知亦嚣嚣。”

  曰:“何如斯可以嚣嚣矣?”曰:“尊德乐义,则可以嚣嚣矣。故士穷不失义,达不离道。穷不失义,故士得己焉;达不离道,故民不失望焉。古之人,得志,泽加於民;不得志,脩身见於世。穷则独善其身,达则兼善天下。”

  孟子曰:“待文王而后兴者,凡民也。若夫豪杰之士,虽无文王犹兴。”

  孟子曰:“附之以韩、魏之家,如其自视欿然,则过人远矣。”

  孟子曰:“以佚道使民,虽劳不怨。以生道杀民,虽死不怨杀者。”

  孟子曰:“霸者之民驩虞如也,王者之民皞皞如也。杀之而不怨,利之而不庸,民日迁善而不知为之者。夫君子所过者化,所存者神,上下与天地同流,岂曰小补之哉?”孟子曰:“仁言不如仁声之入人深也,善政不如善教之得民也。善政,民畏之;善教,民爱之。善政得民财,善教得民心。”

  孟子曰:“人之所不学而能者,其良能也;所不虑而知者,其良知也。孩提之童无不知爱其亲者,及其长也,无不知敬其兄也。亲亲,仁也;敬长,义也;无他,达之天下也。”

  孟子曰:“舜之居深山之中,与木石居,与鹿豕游。其所以异於深山之野人者几希。及其闻一善言,见一善行,若决江河,沛然莫之能御也。”

  孟子曰:“无为其所不为,无欲其所不欲,如此而已矣。”

  孟子曰:“人之有德慧术知者,恒存乎疢疾。独孤臣孽子,其操心也危,其虑患也深,故达。”

  孟子曰:“有事君人者,事是君则为容悦者也。有安社稷臣者,以安社稷为悦者也。有天民者,达可行於天下而后行之者也。有大人者,正己而物正者也。”

  孟子曰:“君子有三乐,而王天下不与存焉。父母俱存,兄弟无故,一乐也;仰不愧於天,俯不怍於人,二乐也;得天下英才而教育之,三乐也。君子有三乐,而王天下不与存焉。”

  孟子曰:“广土众民,君子欲之,所乐不存焉。中天下而立,定四海之民,君子乐之,所性不存焉。君子所性,虽大行不加焉,虽穷居不损焉,分定故也。

  君子所性,仁义礼智根於心,其生色也睟然,见於面,盎於背,施於四体,四体不言而喻。”

  孟子曰:“伯夷辟纣,居北海之滨,闻文王作,兴曰:‘盍归乎来?吾闻西伯善养老者。’太公辟纣,居东海之滨,闻文王作,兴曰:‘盍归乎来?吾闻西伯善养老者。’天下有善养老,则仁人以为己归矣。五亩之宅,树墙下以桑,匹妇蚕之,则老者足以衣帛矣。五母鸡,二母彘,无失其时,老者足以无失肉矣。

  百亩之田,匹夫耕之,八口之家足以无饥矣。所谓西伯善养老者,制其田里,教之树畜,导其妻子使养其老。五十非帛不暖,七十非肉不饱。不暖不饱,谓之冻馁。文王之民无冻馁之老者,此之谓也。”

  孟子曰:“易其田畴,薄其税敛,民可使富也。食之以时,用之以礼,财不可胜用也。民非水火不生活,昏暮叩人之门户求水火,无弗与者,至足矣。圣人治天下,使有菽粟如水火。菽粟如水火,而民焉有不仁者乎?”孟子曰:“孔子登东山而小鲁,登太山而小天下,故观於海者难为水,游於圣人之门者难为言。观水有术,必观其澜。日月有明,容光必照焉。流水之为物也,不盈科不行;君子之志於道也,不成章不达。”

  孟子曰:“鸡鸣而起,孳孳为善者,舜之徒也;鸡鸣而起,孳孳为利者,跖之徒也。欲知舜与跖之分,无他,利与善之间也。”

  孟子曰:“杨子取为我,拔一毛而利天下,不为也。墨子兼爱,摩顶放踵利天下,为之。子莫执中。执中为近之。执中无权,犹执一也。所恶执一者,为其贼道也,举一而废百也。”

  孟子曰:“饥者甘食,渴者甘饮,是未得饮食之正也,饥渴害之也。岂惟口腹有饥渴之害?人心亦皆有害。人能无以饥渴之害为心害,则不及人不为忧矣。”

  孟子曰:“柳下惠不以三公易其介。”

  孟子曰:“有为者辟若掘井,掘井九轫而不及泉,犹为弃井也。”

  孟子曰:“尧、舜,性之也;汤、武,身之也;五霸,假之也。久假而不归,恶知其非有也。”

  公孙丑曰:“伊尹曰:‘予不狎于不顺,放太甲于桐,民大悦。太甲贤,又反之,民大悦。’贤者之为人臣也,其君不贤,则固可放与?”孟子曰:“有伊尹之志则可,无伊尹之志则篡也。”

  公孙丑曰:“《诗》曰:‘不素餐兮’。君子之不耕而食,何也?”孟子曰:“君子居是国也,其君用之,则安富尊荣;其子弟从之,则孝悌忠信。‘不素餐兮’,孰大於是?”王子垫问曰:“士何事?”孟子曰:“尚志。”曰:“何谓尚志?”曰:“仁义而已矣。杀一无罪,非仁也。非其有而取之,非义也。居恶在?仁是也。

  路恶在?义是也。居仁由义,大人之事备矣。”

  孟子曰:“仲子,不义与之齐国而弗受,人皆信之,是舍箪食豆羹之义也。

  人莫大焉亡亲戚君臣上下。以其小者信其大者,奚可哉?”桃应问曰:“舜为天子,皋陶为士,瞽瞍杀人,则如之何?”孟子曰:“执之而已矣。”“然则舜不禁与?”曰:“夫舜恶得而禁之?夫有所受之也。”

  “然则舜如之何?”曰:“舜视弃天下犹弃敝蹝也。窃负而逃,遵海滨而处,终身然,乐而忘天下。”

  孟子自范之齐,望见齐王之子,喟然叹曰:“居移气,养移体,大哉居乎!夫非尽人之子与?”孟子曰:“王子宫室、车马、衣服多与人同,而王子若彼者,其居使之然也。况居天下之广居者乎?鲁君之宋,呼於垤泽之门。守者曰:‘此非吾君也,何其声之似我君也?’此无他,居相似也。”

  孟子曰:“食而弗爱,豕交之也;爱而不敬,兽畜之也。恭敬者,币之未将者也。恭敬而无实,君子不可虚拘。”

  孟子曰:“形、色,天性也。惟圣人然后可以践形。”

  齐宣王欲短丧。公孙丑曰:“为期之丧,犹愈於已乎?”孟子曰:“是犹或紾其兄之臂,子谓之姑徐徐云尔,亦教之孝悌而已矣。”王子有其母死者,其傅为之请数月之丧。公孙丑曰:“若此者何如也?”曰:“是欲终之而不可得也。

  虽加一日愈於已,谓夫莫之禁而弗为者也。”

  孟子曰:“君子之所以教者五:有如时雨化之者,有成德者,有达财者,有答问者,有私淑艾者。此五者,君子之所以教也。”

  公孙丑曰:“道则高矣,美矣,宜若登天然,似不可及也。何不使彼为可几及而日孳孳也?”孟子曰:“大匠不为拙工改废绳墨,羿不为拙射变其彀率。君子引而不发,跃如也。中道而立,能者从之。”

  孟子曰:“天下有道,以道殉身;天下无道,以身殉道。未闻以道殉乎人者也。”

  公都子曰:“滕更之在门也,若在所礼。而不答,何也?”孟子曰:“挟贵而问,挟贤而问,挟长而问,挟有勋劳而问,挟故而问,皆所不答也。滕更有二焉。”

  孟子曰:“於不可已而已者,无所不已。於所厚者薄,无所不薄也。其进锐者,其退速。”

  孟子曰:“君子之於物也,爱之而弗仁;於民也,仁之而弗亲。亲亲而仁民,仁民而爱物。”

  孟子曰:“知者无不知也,当务之为急;仁者无不爱也,急亲贤之为务。尧、舜之知而不遍物,急先务也;尧、舜之仁不遍爱人,急亲贤也。不能三年之丧,而緦、小功之察;放饭流歠,而问无齿决,是之谓不知务。”
  卷十四 尽心下

  孟子曰:“不仁哉梁惠王也!仁者以其所爱及其所不爱,不仁者以其所不爱及其所爱。”公孙丑问曰:“何谓也?”“梁惠王以土地之故,糜烂其民而战之,大败。将复之,恐不能胜,故驱其所爱子弟以殉之,是之谓以其所不爱及其所爱也。”

  孟子曰:“《春秋》无义战。彼善於此,则有之矣。征者,上伐下也,敌国不相征也。”

  孟子曰:“尽信《书》,则不如无《书》。吾於《武成》,取二三策而已矣。

  仁人无敌於天下,以至仁伐至不仁,而何其血之流杵也?”孟子曰:“有人曰:‘我善为陈,我善为战。’大罪也。国君好仁,天下无敌焉。南面而征,北狄怨;东面而征,西夷怨。曰:‘奚为后我?’武王之伐殷也,革车三百两,虎贲三千人。王曰:‘无畏!宁尔也,非敌百姓也。’若崩厥角稽首。征之为言正也,各欲正己也,焉用战?”孟子曰:“梓匠轮舆能与人规矩,不能使人巧。”

  孟子曰:“舜之饭糗茹草也,若将终身焉。及其为天子也,被袗衣,鼓琴,二女果,若固有之。”

  孟子曰:“吾今而后知杀人亲之重也。杀人之父,人亦杀其父;杀人之兄,人亦杀其兄。然则非自杀之也,一间耳。”

  孟子曰:“古之为关也,将以御暴;今之为关也,将以为暴。”

  孟子曰:“身不行道,不行於妻子;使人不以道,不能行於妻子。”

  孟子曰:“周于利者凶年不能杀,周于德者邪世不能乱。”

  孟子曰:“好名之人能让千乘之国,苟非其人,箪食豆羹见於色。”

  孟子曰:“不信仁贤,则国空虚;无礼义,则上下乱;无政事,则财用不足。”

  孟子曰:“不仁而得国者有之矣,不仁而得天下者未之有也。”

  孟子曰:“民为贵,社稷次之,君为轻。是故得乎丘民而为天子,得乎天子为诸侯,得乎诸侯为大夫。诸侯危社稷,则变置。犠牲既成,粢盛既絜,祭祀以时,然而旱乾水溢,则变置社稷。”

  孟子曰:“圣人,百世之师也,伯夷、柳下惠是也。故闻伯夷之风者,顽夫廉,懦夫有立志。闻柳下惠之风者,薄夫敦,鄙夫宽。奋乎百世之上,百世之下闻者莫不兴起也。非圣人而能若是乎?而况於亲炙之者乎?”孟子曰:“仁也者,人也。合而言之,道也。”

  孟子曰:“孔子之去鲁,曰:‘迟迟吾行也,去父母国之道也。’去齐,接淅而行,去他国之道也。”

  孟子曰:“君子之戹於陈、蔡之间,无上下之交也。”

  貉稽曰:“稽大不理於口。”孟子曰:“无伤也。士憎兹多口。《诗》云:‘忧心悄悄,愠于群小。’孔子也。‘肆不殄厥愠,亦不殒厥问。’文王也。”

  孟子曰:“贤者以其昭昭,使人昭昭;今以其昏昏,使人昭昭。”

  孟子谓高子曰:“山径之蹊间,介然用之而成路,为间不用,则茅塞之矣。

  今茅塞子之心矣。”

  高子曰:“禹之声尚文王之声。”孟子曰:“何以言之?”曰:“以追蠡。”

  曰:“是奚足哉?城门之轨,两马之力与?”齐饥。陈臻曰:“国人皆以夫子将复为发棠,殆不可复。”孟子曰:“是为冯妇也。晋人有冯妇者,善搏虎,卒为善士。则之野,有众逐虎。虎负嵎,莫之敢撄。望见冯妇,趋而迎之。冯妇攘臂下车。众皆悦之,其为士者笑之。”

  孟子曰:“口之於味也,目之於色也,耳之於声也,鼻之於臭也,四肢之於安佚也,性也。有命焉,君子不谓性也。仁之於父子也,义之於君臣也,礼之於宾主也,知之於贤者也,圣人之於天道也,命也。有性焉,君子不谓命也。”

  浩生不害问曰:“乐正子何人也?”孟子曰:“善人也,信人也。”“何谓善?何谓信?”曰:“可欲之谓善,有诸己之谓信,充实之谓美,充实而有光辉之谓大,大而化之之谓圣,圣而不可知之之谓神。乐正子,二之中、四之下也。”

  孟子曰:“逃墨必归於杨,逃杨必归於儒。归,斯受之而已矣。今之与杨、墨辩者,如追放豚,既入其苙,又从而招之。”

  孟子曰:“有布缕之征,粟米之征,力役之征。君子用其一,缓其二。用其二而民有殍,用其三而父子离。”

  孟子曰:“诸侯之宝三:土地、人民、政事。宝珠玉者,殃必及身。”

  盆成括仕於齐,孟子曰:“死矣盆成括!”盆成括见杀,门人问曰:“夫子何以知其将见杀?”曰:“其为人也小有才,未闻君子之大道也,则足以杀其躯而已矣。”

  孟子之滕,馆於上宫。有业屦於牖上,馆人求之弗得。或问之曰:“若是乎从者之廋也?”曰:“子以是为窃屦来与?”曰:“殆非也。夫子之设科也,往者不追,来者不拒。苟以是心至,斯受之而已矣。”

  孟子曰:“人皆有所不忍,达之於其所忍,仁也;人皆有所不为,达之於其所为,义也。人能充无欲害人之心,而仁不可胜用也;人能充无穿逾之心,而义不可胜用也;人能充无受尔汝之实,无所往而不为义也。士未可以言而言,是以言餂之也;可以言而不言,是以不言餂之也。是皆穿逾之类也。”

  孟子曰:“言近而指远者,善言也;守约而施博者,善道也。君子之言也,不下带而道存焉。君子之守,脩其身而天下平。人病舍其田而芸人之田,所求於人者重,而所以自任者轻。”

  孟子曰:“尧、舜,性者也。汤、武,反之也。动容周旋中礼者,盛德之至也。哭死而哀,非为生者也。经德不回,非以干禄也。言语必信,非以正行也。

  君子行法,以俟命而已矣。”

  孟子曰:“说大人则藐之,勿视其巍巍然。堂高数仞,榱题数尺,我得志弗为也。食前方丈,侍妾数百人,我得志弗为也。般乐饮酒,驱骋田猎,后车千乘,我得志弗为也。在彼者皆我所不为也,在我者皆古之制也,吾何畏彼哉?”孟子曰:“养心莫善於寡欲。其为人也寡欲,虽有不存焉者,寡矣;其为人也多欲,虽有存焉者,寡矣。”

  曾皙嗜羊枣,而曾子不忍食羊枣。公孙丑问曰:“脍炙与羊枣孰美?”孟子曰:“脍炙哉!”公孙丑曰:“然则曾子何为食脍炙而不食羊枣?”曰:“脍炙所同也,羊枣所独也。讳名不讳姓,姓所同也,名所独也。”

  万章问曰:“孔子在陈,曰:‘盍归乎来!吾党之小子狂简,进取,不忘其初。’孔子在陈,何思鲁之狂士?”孟子曰:“孔子‘不得中道而与之,必也狂狷乎!狂者进取,獧者有所不为也’。孔子岂不欲中道哉?不可必得,故思其次也。”“敢问何如斯可谓狂矣?”曰:“如琴张、曾皙、牧皮者,孔子之所谓狂矣。”“何以谓之狂也?”曰:“其志<口翏>々然,曰:‘古之人,古之人。’夷考其行,而不掩焉者也。狂者又不可得,欲得不屑不絜之士而与之,是獧也,是又其次也。孔子曰:‘过我门而不入我室,我不憾焉者,其惟乡原乎!乡原,德之贼也。’”曰:“何如斯可谓之乡原矣?”曰:“何以是<口翏>々也?言不顾行,行不顾言,则曰‘古之人,古之人。行何为踽踽凉凉?生斯世也,为斯世也,善斯可矣’。阉然媚於世也者,是乡原也。”万子曰:“一乡皆称原人焉,无所往而不为原人,孔子以为德之贼,何哉?”曰:“非之无举也,刺之无刺也。

  同乎流俗,合乎污世。居之似忠信,行之似廉絜,众皆悦之,自以为是,而不可与入尧、舜之道,故曰‘德之贼’也。孔子曰:‘恶似而非者,恶莠,恐其乱苗也;恶佞,恐其乱义也;恶利口,恐其乱信也;恶郑声,恐其乱乐也;恶紫,恐其乱朱也;恶乡原,恐其乱德也。’君子反经而已矣。经正则庶民兴,庶民兴,斯无邪慝矣。”

  孟子曰:“由尧、舜至於汤,五百有馀岁。若禹、皋陶,则见而知之;若汤,则闻而知之。由汤至於文王,五百有馀岁。若伊尹、莱朱,则见而知之;若文王,则闻而知之。由文王至於孔子,五百有馀岁。若太公望、散宜生,则见而知之;若孔子,则闻而知之。由孔子而来,至於今百有馀岁,去圣人之世,若此其未远也,近圣人之居,若此其甚也,然而无有乎尔,则亦无有乎尔。”

  
  卷十一 告子上

  告子曰:“性犹杞柳也,义犹桮棬也。以人性为仁义,犹以杞柳为桮棬。”孟子曰:“子能顺杞柳之性而以为桮棬乎?将戕贼杞柳而后以为桮棬也?如将戕贼杞柳而以为桮棬,则亦将戕贼人以为仁义与?率天下之人而祸仁义者,必子之言夫!”告子曰:“性犹湍水也,决诸东方则东流,决诸西方则西流。人性之无分於善不善也,犹水之无分於东西也。”孟子曰:“水信无分於东西,无分於上下乎?人性之善也,犹水之就下也。人无有不善,水无有不下。今夫水,搏而跃之,可使过颡;激而行之,可使在山。是岂水之性哉?其势则然也。人之可使为不善,其性亦犹是也。”

  告子曰:“生之谓性。”孟子曰:“生之谓性也,犹白之谓白与?”曰:“然。”“白羽之白也,犹白雪之白;白雪之白,犹白玉之白欤?”曰:“然。”

  “然则犬之性犹牛之性,牛之性犹人之性欤?”告子曰:“食、色,性也。仁,内也,非外也;义,外也,非内也。”孟子曰:“何以谓仁内义外也?”曰:“彼长而我长之,非有长於我也。犹彼白而我白之,从其白於外也,故谓之外也。”曰:“异於白马之白也,无以异於白人之白也。不识长马之长也,无以异於长人之长欤?且谓长者义乎?长之者义乎?”曰:“吾弟则爱之,秦人之弟则不爱也,是以我为悦者也,故谓之内。长楚人之长,亦长吾之长,是以长为悦者也,故谓之外也。”曰:“耆秦人之炙,无以异於耆吾炙,夫物则亦有然者也,然则耆炙亦有外欤?”孟季子问公都子曰:“何以谓义内也?”曰:“行吾敬,故谓之内也。”

  “乡人长於伯兄一岁,则谁敬?”曰:“敬兄。”“酌则谁先?”曰:“先酌乡人。”“所敬在此,所长在彼,果在外非由内也。”公都子不能答,以告孟子。

  孟子曰:“敬叔父乎?敬弟乎?彼将曰:‘敬叔父。’曰:‘弟为尸,则谁敬?’彼将曰:‘敬弟。’子曰:‘恶在其敬叔父也?’彼将曰:‘在位故也。’子亦曰:‘在位故也。庸敬在兄,斯须之敬在乡人。’”季子闻之,曰:“敬叔父则敬,敬弟则敬,果在外非由内也。”公都子曰:“冬日则饮汤,夏日则饮水,然则饮食亦在外也?”公都子曰:“告子曰:‘性无善无不善也。’或曰:‘性可以为善,可以为不善。是故文、武兴则民好善,幽、厉兴则民好暴。’或曰:‘有性善,有性不善。是故以尧为君而有象,以瞽瞍为父而有舜,以纣为兄之子且以为君而有微子启、王子比干。’今曰‘性善’,然则彼皆非欤?”孟子曰:“乃若其情,则可以为善矣,乃所谓善也。若夫为不善,非才之罪也。恻隐之心,人皆有之;羞恶之心,人皆有之;恭敬之心,人皆有之;是非之心,人皆有之。恻隐之心,仁也;羞恶之心,义也;恭敬之心,礼也;是非之心,智也。仁义礼智,非由外铄我也,我固有之也,弗思耳矣。故曰:‘求则得之,舍则失之。’或相倍蓰而无筭者,不能尽其才者也。《诗》曰:‘天生蒸民,有物有则。民之秉彝,好是懿德。’孔子曰:‘为此诗者,其知道乎!故有物必有则,民之秉彝也,故好是懿德。’”孟子曰:“富岁,子弟多赖;凶岁,子弟多暴。非天之降才尔殊也,其所以陷溺其心者然也。今夫麰麦,播种而耰之,其地同,树之时又同,浡然而生,至於日至之时,皆孰矣。虽有不同,则地有肥<石尧>,雨露之养、人事之不齐也。

  故凡同类者,举相似也,何独至於人而疑之?圣人与我同类者。故龙子曰:‘不知足而为屦,我知其不为蕢也。’屦之相似,天下之足同也。口之於味有同耆也,易牙先得我口之所耆者也。如使口之於味也,其性与人殊,若犬马之与我不同类也,则天下何耆皆从易牙之於味也?至於味,天下期於易牙,是天下之口相似也。

  惟耳亦然。至於声,天下期於师旷,是天下之耳相似也。惟目亦然。至於子都,天下莫不知其姣也。不知子都之姣者,无目者也。故曰:口之於味也,有同耆焉;耳之於声也,有同听焉;目之於色也,有同美焉。至於心,独无所同然乎?心之所同然者何也?谓理也,义也。圣人先得我心之所同然耳。故理义之悦我心,犹刍豢之悦我口。”

  孟子曰:“牛山之木尝美矣,以其郊於大国也,斧斤伐之,可以为美乎?是其日夜之所息,雨露之所润,非无萌蘖之生焉,牛羊又从而牧之,是以若彼濯濯也。人见其濯濯也,以为未尝有材焉,此岂山之性也哉?虽存乎人者,岂无仁义之心哉?其所以放其良心者,亦犹斧斤之於木也,旦旦而伐之,可以为美乎?其日夜之所息,平旦之气,其好恶与人相近也者几希,则其旦昼之所为,有梏亡之矣。梏之反覆,则其夜气不足以存。夜气不足以存,则其违禽兽不远矣。人见其禽兽也,而以为未尝有才焉者,是岂人之情也哉?故苟得其养,无物不长;苟失其养,无物不消。孔子曰:‘操则存,舍则亡;出入无时,莫知其乡。’惟心之谓与?”孟子曰:“无或乎王之不智也。虽有天下易生之物也,一日暴之,十日寒之,未有能生者也。吾见亦罕矣,吾退而寒之者至矣,吾如有萌焉何哉?今夫弈之为数,小数也,不专心致志,则不得也。弈秋,通国之善弈者也。使弈秋诲二人弈,其一人专心致志,惟弈秋之为听。一人虽听之,一心以为有鸿鹄将至,思援弓缴而射之,虽与之俱学,弗若之矣。为是其智弗若与?曰:非然也。”

  孟子曰:“鱼,我所欲也,熊掌亦我所欲也;二者不可得兼,舍鱼而取熊掌者也。生亦我所欲也,义亦我所欲也;二者不可得兼,舍生而取义者也。生亦我所欲,所欲有甚於生者,故不为苟得也;死亦我所恶,所恶有甚於死者,故患有所不辟也。如使人之所欲莫甚於生,则凡可以得生者,何不用也?使人之所恶莫甚於死者,则凡可以辟患者,何不为也?由是则生而有不用也,由是则可以辟患而有不为也,是故所欲有甚於生者,所恶有甚於死者。非独贤者有是心也,人皆有之,贤者能勿丧耳。一箪食,一豆羹,得之则生,弗得则死,嘑尔而与之,行道之人弗受;蹴尔而与之,乞人不屑也。万钟则不辩礼义而受之。万钟於我何加焉?为宫室之美、妻妾之奉、所识穷乏者得我与?乡为身死而不受,今为宫室之美为之;乡为身死而不受,今为妻妾之奉为之;乡为身死而不受,今为所识穷乏者得我而为之,是亦不可以已乎?此之谓失其本心。”

  孟子曰:“仁,人心也;义,人路也。舍其路而弗由,放其心而不知求,哀哉!人有鸡犬放,则知求之;有放心而不知求。学问之道无他,求其放心而已矣。”

  孟子曰:“今有无名之指屈而不信,非疾痛害事也,如有能信之者,则不远秦、楚之路,为指之不若人也。指不若人,则知恶之;心不若人,则不知恶,此之谓不知类也。”

  孟子曰:“拱把之桐梓,人苟欲生之,皆知所以养之者。至於身,而不知所以养之者,岂爱身不若桐梓哉?弗思甚也。”

  孟子曰:“人之於身也,兼所爱。兼所爱,则兼所养也。无尺寸之肤不爱焉,则无尺寸之肤不养也。所以考其善不善者,岂有他哉?於己取之而已矣。体有贵贱,有小大。无以小害大,无以贱害贵。养其小者为小人,养其大者为大人。今有场师,舍其梧槚,养其樲棘,则为贱场师焉。养其一指而失其肩背,而不知也,则为狼疾人也。饮食之人,则人贱之矣,为其养小以失大也。饮食之人无有失也,则口腹岂適为尺寸之肤哉?”公都子问曰:“钧是人也,或为大人,或为小人,何也?”孟子曰:“从其大体为大人,从其小体为小人。”曰:“钧是人也,或从其大体,或从其小体,何也?”曰:“耳目之官不思,而蔽於物。物交物,则引之而已矣。心之官则思,思则得之,不思则不得也。此天之所与我者。先立乎其大者,则其小者不能夺也。

  此为大人而已矣。”

  孟子曰:“有天爵者,有人爵者。仁义忠信,乐善不倦,此天爵也;公卿大夫,此人爵也。古之人脩其天爵,而人爵从之。今之人脩其天爵,以要人爵;既得人爵,而弃其天爵,则惑之甚者也,终亦必亡而已矣。”

  孟子曰:“欲贵者,人之同心也。人人有贵於己者,弗思耳矣。人之所贵者,非良贵也。赵孟之所贵,赵孟能贱之。《诗》云:‘既醉以酒,既饱以德。’言饱乎仁义也,所以不愿人之膏粱之味也。今闻广誉施於身,所以不愿人之文绣也。”

  孟子曰:“仁之胜不仁也,犹水胜火。今之为仁者,犹以一杯水救一车薪之火也,不熄,则谓之水不胜火。此又与於不仁之甚者也,亦终必亡而已矣。”

  孟子曰:“五穀者,种之美者也。苟为不熟,不如荑稗。夫仁亦在乎熟之而已矣。”

  孟子曰:“羿之教人射,必志於彀。学者亦必志於彀。大匠诲人必以规矩,学者亦必以规矩。”
  卷四 公孙丑下

  孟子曰:“天时不如地利,地利不如人和。三里之城,七里之郭,环而攻之而不胜。夫环而攻之,必有得天时者矣;然而不胜者,是天时不如地利也。城非不高也,池非不深也,兵革非不坚利也,米粟非不多也;委而去之,是地利不如人和也。故曰:域民不以封疆之界,固国不以山谿之险,威天下不以兵革之利。

  得道者多助,失道者寡助。寡助之至,亲戚畔之;多助之至,天下顺之。以天下之所顺,攻亲戚之所畔;故君子有不战,战必胜矣。”

  孟子将朝王,王使人来曰:“寡人如就见者也,有寒疾,不可以风。朝,将视朝,不识可使寡人得见乎?”对曰:“不幸而有疾,不能造朝。”明日,出吊於东郭氏。公孙丑曰:“昔者辞以病,今日吊,或者不可乎?”曰:“昔者疾,今日愈,如之何不吊?”王使人问疾,医来。孟仲子对曰:“昔者有王命,有采薪之忧,不能造朝。今病小愈,趋造於朝,我不识能至否乎?”使数人要於路,曰:“请必无归而造於朝!”不得已而之景丑氏宿焉。景子曰:“内则父子,外则君臣,人之大伦也。父子主恩,君臣主敬。丑见王之敬子也,未见所以敬王也。”

  曰:“恶!是何言也!齐人无以仁义与王言者,岂以仁义为不美也?其心曰:‘是何足与言仁义也’云尔,则不敬莫大乎是。我非尧、舜之道,不敢以陈於王前,故齐人莫如我敬王也。”景子曰:“否,非此之谓也。礼曰:‘父召,无诺;君命召,不俟驾。’固将朝也,闻王命而遂不果,宜与夫礼若不相似然。”曰:“岂谓是与?曾子曰:‘晋楚之富,不可及也。彼以其富,我以吾仁;彼以其爵,我以吾义。吾何慊乎哉?’夫岂不义而曾子言之?是或一道也。天下有达尊三:爵一,齿一,德一。朝廷莫如爵,乡党莫如齿,辅世长民莫如德。恶得有其一以慢其二哉?故将大有为之君,必有所不召之臣,欲有谋焉,则就之。其尊德乐道,不如是不足以有为也。故汤之於伊尹,学焉而后臣之,故不劳而王;桓公之於管仲,学焉而后臣之,故不劳而霸。今天下地丑德齐,莫能相尚,无他,好臣其所教,而不好臣其所受教。汤之於伊尹,桓公之於管仲,则不敢召。管仲且犹不可召,而况不为管仲者乎?”陈臻问曰:“前日於齐,王餽兼金一百而不受;於宋,餽七十镒而受;於薛,餽五十镒而受。前日之不受是,则今日之受非也;今日之受是,则前日之不受非也。夫子必居一於此矣。”孟子曰:“皆是也。当在宋也,予将有远行,行者必以赆;辞曰:‘餽赆。’予何为不受?当在薛也,予有戒心;辞曰:‘闻戒,故为兵餽之。’予何为不受?若於齐,则未有处也。无处而餽之,是货之也。焉有君子而可以货取乎?”孟子之平陆,谓其大夫曰:“子之持戟之士,一日而三失伍,则去之否乎?”曰:“不待三。”“然则子之失伍也亦多矣。凶年饥岁,子之民,老羸转於沟壑,壮者散而之四方者,几千人矣。”曰:“此非距心之所得为也。”曰:“今有受人之牛羊而为之牧之者,则必为之求牧与刍矣。求牧与刍而不得,则反诸其人乎?抑亦立而视其死与?”曰:“此则距心之罪也。”他日,见於王曰:“王之为都者,臣知五人焉。知其罪者惟孔距心。”为王诵之。王曰:“此则寡人之罪也。”

  孟子谓蚳鼃曰:“子之辞灵丘而请士师,似也,为其可以言也。今既数月矣,未可以言与?”蚳鼃谏於王而不用,致为臣而去。齐人曰:“所以为蚳鼃则善矣,所以自为则吾不知也。”公都子以告。曰:“吾闻之也,有官守者,不得其职则去;有言责者,不得其言则去。我无官守,我无言责也,则吾进退,岂不绰绰然有馀裕哉?”孟子为卿於齐,出吊於滕,王使盖大夫王驩为辅行。王驩朝暮见。反齐滕之路,未尝与之言行事也。公孙丑曰:“齐卿之位,不为小矣。齐滕之路,不为近矣。反之而未尝与言行事,何也?”曰:“夫既或治之,予何言哉?”孟子自齐葬於鲁,反於齐,止於嬴。充虞请曰:“前日不知虞之不肖,使虞敦匠,事严,虞不敢请。今愿窃有请也:木若以美然。”曰:“古者棺椁无度,中古,棺七寸,椁称之。自天子达於庶人,非直为观美也,然后尽於人心。不得,不可以为悦;无财,不可以为悦。得之为有财,古之人皆用之,吾何为独不然?且比化者勿使土亲肤,於人心独无恔乎?吾闻之,君子不以天下俭其亲。”

  沈同以其私问曰:“燕可伐与?”孟子曰:“可。子哙不得与人燕,子之不得受燕於子哙。有仕於此,而子悦之,不告於王而私与之吾子之禄爵,夫士也亦无王命而私受之於子,则可乎?何以异於是?”齐人伐燕。或问曰:“劝齐伐燕,有诸?”曰:“未也。沈同问‘燕可伐与’,吾应之曰‘可’。彼然而伐之也。

  彼如曰:‘孰可以伐之?’则将应之曰:‘为天吏,则可以伐之。’今有杀人者,或问之曰:‘人可杀与?’则将应之曰:‘可。’彼如曰:‘孰可以杀之?’则将应之曰:‘为士师,则可以杀之。’今以燕伐燕,何为劝之哉?”燕人畔。王曰:“吾甚惭於孟子。”陈贾曰:“王无患焉。王自以为与周公孰仁且智?”王曰:“恶!是何言也?”曰:“周公使管叔监殷,管叔以殷畔。

  知而使之,是不仁也;不知而使之,是不智也。仁、智,周公未之尽也,而况於王乎?贾请见而解之。”见孟子,问曰:“周公何人也?”曰:“古圣人也。”

  曰:“使管叔监殷,管叔以殷畔也,有诸?”曰:“然。”曰:“周公知其将畔而使之与?”曰:“不知也。”“然则圣人且有过与?”曰:“周公,弟也;管叔,兄也。周公之过,不亦宜乎?且古之君子,过则改之;今之君子,过则顺之。

  古之君子,其过也,如日月之食,民皆见之,及其更也,民皆仰之;今之君子,岂徒顺之,又从为之辞。”

  孟子致为臣而归。王就见孟子,曰:“前日愿见而不可得,得侍同朝,甚喜。

  今又弃寡人而归,不识可以继此而得见乎?”对曰:“不敢请耳,固所愿也。”

  他日,王谓时子曰:“我欲中国而授孟子室,养弟子以万钟,使诸大夫国人皆有所矜式。子盍为我言之!”时子因陈子而以告孟子,陈子以时子之言告孟子。孟子曰:“然。夫时子恶知其不可也?如使予欲富,辞十万而受万,是为欲富乎?季孙曰:‘异哉子叔疑!使己为政,不用,则亦已矣,又使其子弟为卿。人亦孰不欲富贵?而独於富贵之中有私龙断焉。’古之为市也,以其所有易其所无者,有司者治之耳。有贱丈夫焉,必求龙断而登之,以左右望而罔市利。人皆以为贱,故从而征之。征商自此贱丈夫始矣。”

  孟子去齐,宿於昼。有欲为王留行者,坐而言。不应,隐几而卧。客不悦,曰:“弟子齐宿而后敢言,夫子卧而不听,请勿复敢见矣。”曰:“坐!我明语子。昔者鲁缪公无人乎子思之侧,则不能安子思;泄柳、申详无人乎缪公之侧,则不能安其身。子为长者虑,而不及子思。子绝长者乎?长者绝子乎?”孟子去齐。尹士语人曰:“不识王之不可以为汤武,则是不明也;识其不可,然且至,则是干泽也。千里而见王,不遇故去,三宿而后出昼,是何濡滞也?士则兹不悦。”高子以告。曰:“夫尹士恶知予哉?千里而见王,是予所欲也。不遇故去,岂予所欲哉?予不得已也。予三宿而出昼,於予心犹以为速,王庶几改之!王如改诸,则必反予。夫出昼,而王不予追也,予然后浩然有归志。予虽然,岂舍王哉!王由足用为善,王如用予,则岂徒齐民安?天下之民举安。王庶几改之!予日望之!予岂若是小丈夫然哉?谏於其君而不受,则怒,悻悻然见於其面,去则穷日之力而后宿哉?”尹士闻之,曰:“士诚小人也。”

  孟子去齐,充虞路问曰:“夫子若有不豫色然。前日虞闻诸夫子曰:‘君子不怨天,不尤人。’”曰:“彼一时,此一时也。五百年必有王者兴,其间必有名世者。由周而来,七百有馀岁矣。以其数,则过矣;以其时考之,则可矣。夫天未欲平治天下也,如欲平治天下,当今之世,舍我其谁也?吾何为不豫哉?”孟子去齐,居休。公孙丑问曰:“仕而不受禄,古之道乎?”曰:“非也。

  於崇,吾得见王,退而有去志,不欲变,故不受也。继而有师命,不可以请。久於齐,非我志也。”
  卷五 滕文公上

  滕文公为世子,将之楚,过宋而见孟子。孟子道性善,言必称尧、舜。

  世子自楚反,复见孟子。孟子曰:“世子疑吾言乎?夫道一而已矣。成覸谓齐景公曰:‘彼,丈夫也;我,丈夫也;吾何畏彼哉?’颜渊曰:‘舜,何人也?予,何人也?有为者亦若是。’公明仪曰:‘文王,我师也;周公岂欺我哉?’今滕,绝长补短,将五十里也,犹可以为善国。《书》曰:‘若药不瞑眩,厥疾不瘳。’”滕定公薨。世子谓然友曰:“昔者孟子尝与我言於宋,於心终不忘。今也不幸至於大故,吾欲使子问於孟子,然后行事。”然友之邹,问於孟子。孟子曰:“不亦善乎!亲丧,固所自尽也。曾子曰:‘生,事之以礼;死,葬之以礼,祭之以礼,可谓孝矣。’诸侯之礼,吾未之学也。虽然,吾尝闻之矣。三年之丧,斋疏之服,飦粥之食,自天子达於庶人,三代共之。”然友反命,定为三年之丧。父兄百官皆不欲也,故曰:“吾宗国鲁先君莫之行,吾先君亦莫之行也,至於子之身而反之,不可。且《志》曰:‘丧祭从先祖。’曰:‘吾有所受之也。’”谓然友曰:“吾他日未尝学问,好驰马试剑。今也父兄百官不我足也,恐其不能尽於大事,子为我问孟子。”然友复之邹问孟子。孟子曰:“然,不可以他求者也。孔子曰:‘君薨,听於冢宰。歠粥,面深墨,即位而哭,百官有司莫敢不哀,先之也。’上有好者,下必有甚焉者矣。君子之德,风也;小人之德,草也。草尚之风,必偃。是在世子。”然友反命。世子曰:“然。是诚在我。”五月居庐,未有命戒。百官族人可,谓曰知。及至葬,四方来观之,颜色之戚,哭泣之哀,吊者大悦。

  滕文公问为国。孟子曰:“民事不可缓也。《诗》云:‘昼尔于茅,宵尔索绹;亟其乘屋,其始播百穀。’民之为道也,有恒产者有恒心,无恒产者无恒心。苟无恒心,放辟邪侈,无不为已。及陷乎罪,然后从而刑之,是罔民也。焉有仁人在位罔民而可为也?是故贤君必恭俭礼下,取於民有制。阳虎曰:‘为富不仁矣,为仁不富矣。’夏后氏五十而贡,殷人七十而助,周人百亩而彻,其实皆什一也。彻者,彻也。助者,藉也。龙子曰:‘治地莫善於助,莫不善於贡。’贡者,挍数岁之中以为常。乐岁,粒米狼戾,多取之而不为虐,则寡取之;凶年,粪其田而不足,则必取盈焉。为民父母,使民盻盻然,将终岁勤动,不得以养其父母,又称贷而益之,使老稚转乎沟壑,恶在其为民父母也?夫世禄,滕固行之矣。《诗》云:‘雨我公田,遂及我私。’惟助为有公田。由此观之,虽周亦助也。设为庠序学校以教之。庠者,养也。校者,教也。序者,射也。夏曰校,殷曰序,周曰庠;学则三代共之,皆所以明人伦也。人伦明於上,小民亲於下。

  有王者起,必来取法,是为王者师也。《诗》云:‘周虽旧邦,其命惟新。’文王之谓也。子力行之,亦以新子之国!”使毕战问井地。孟子曰:“子之君将行仁政,选择而使子,子必勉之!夫仁政,必自经界始。经界不正,井地不钧,穀禄不平,是故暴君汙吏必慢其经界。经界既正,分田制禄可坐而定也。夫滕,壤地褊小,将为君子焉,将为野人焉。无君子,莫治野人;无野人,莫养君子。请野九一而助,国中什一使自赋。卿以下必有圭田,圭田五十亩,馀夫二十五亩。

  死徙无出乡,乡田同井,出入相友,守望相助,疾病相扶持,则百姓亲睦。方里而井,井九百亩,其中为公田。八家皆私百亩,同养公田。公事毕,然后敢治私事,所以别野人也。此其大略也。若夫润泽之,则在君与子矣。”

  有为神农之言者许行,自楚之滕,踵门而告文公曰:“远方之人闻君行仁政,愿受一廛而为氓。”文公与之处。其徒数十人,皆衣褐,捆屦、织席以为食。陈良之徒陈相与其弟辛负耒耜而自宋之滕,曰:“闻君行圣人之政,是亦圣人也,愿为圣人氓。”陈相见许行而大悦,尽弃其学而学焉。陈相见孟子,道许行之言曰:“滕君则诚贤君也。虽然,未闻道也。贤者与民并耕而食,饔飧而治。今也滕有仓禀府库,则是厉民而以自养也,恶得贤?”孟子曰:“许子必种粟而后食乎?”曰:“然。”“许子必织布然后衣乎?”曰:“否。许子衣褐。”“许子冠乎?”曰:“冠。”曰:“奚冠?”曰:“冠素。”曰:“自织之与?”曰:“否;以粟易之。”曰:“许子奚为不自织?”曰:“害於耕。”曰:“许子以釜甑爨,以铁耕乎?”曰:“然。”“自为之与?”曰:“否。以粟易之。”

  “以粟易械器者,不为厉陶冶;陶冶亦以其械器易粟者,岂为厉农夫哉?且许子何不为陶冶,舍皆取诸其宫中而用之?何为纷纷然与百工交易?何许子之不惮烦?”曰:“百工之事固不可耕且为也。”“然则治天下独可耕且为与?有大人之事,有小人之事。且一人之身,而百工之所为备,如必自为而后用之,是率天下而路也。故曰或劳心,或劳力;劳心者治人,劳力者治於人;治於人者食人,治人者食於人,天下之通义也。当尧之时,天下犹未平,洪水横流,氾滥於天下,草木畅茂,禽兽繁殖,五穀不登,禽兽偪人,兽蹄鸟迹之道交於中国。尧独忧之,举舜而敷治焉。舜使益掌火,益烈山泽而焚之,禽兽逃匿。禹疏九河,瀹济、漯而注诸海,决汝、汉,排淮、泗而注之江,然后中国可得而食也。当是时也,禹八年於外,三过其门而不入,虽欲耕,得乎?后稷教民稼穑,树艺五穀。五穀熟而民人育。人之有道也,饱食、暖衣、逸居而无教,则近於禽兽。圣人有忧之,使契为司徒,教以人伦:父子有亲,君臣有义,夫妇有别,长幼有叙,朋友有信。

  放勋曰:‘劳之来之,匡之直之,辅之翼之,使自得之,又从而振德之。’圣人之忧民如此,而暇耕乎?尧以不得舜为己忧,舜以不得禹、皋陶为己忧。夫以百亩之不易为己忧者,农夫也。分人以财谓之惠,教人以善谓之忠,为天下得人者谓之仁。是故以天下与人易,为天下得人难。孔子曰:‘大哉尧之为君!惟天为大,惟尧则之,荡荡乎民无能名焉!君哉舜也!巍巍乎有天下而不与焉!’尧、舜之治天下,岂无所用其心哉?亦不用於耕耳。吾闻用夏变夷者,未闻变於夷者也。陈良,楚产也,悦周公、仲尼之道,北学於中国。北方之学者,未能或之先也。彼所谓豪杰之士也。子之兄弟事之数十年,师死而遂倍之!昔者孔子没,三年之外,门人治任将归,入揖於子贡,相乡而哭,皆失声,然后归。子贡反,筑室於场,独居三年,然后归。他日,子夏、子张、子游以有若似圣人,欲以所事孔子事之,强曾子。曾子曰:‘不可,江、汉以濯之,秋阳以暴之,皜皜乎不可尚已。’今也南蛮鴂舌之人,非先王之道,子倍子之师而学之,亦异於曾子矣。吾闻出於幽谷迁於乔木者,未闻下乔木而入於幽谷者。鲁颂曰:‘戎狄是膺,荆舒是惩。’周公方且膺之,子是之学,亦为不善变矣。”“从许子之道,则市贾不贰,国中无伪。虽使五尺之童適市,莫之或欺。布帛长短同,则贾相若;麻缕丝絮轻重同,则贾相若;五穀多寡同,则贾相若;屦大小同,则贾相若。”曰:“夫物之不齐,物之情也。或相倍蓰,或相什百,或相千万。子比而同之,是乱天下也。巨屦小屦同贾,人岂为之哉?从许子之道,相率而为伪者也,恶能治国家?”墨者夷之因徐辟而求见孟子。孟子曰:“吾固愿见,今吾尚病,病愈,我且往见,夷子不来!”他日,又求见孟子。孟子曰:“吾今则可以见矣。不直则道不见,我且直之。吾闻夷子墨者,墨之治丧也,以薄为其道也。夷子思以易天下,岂以为非是而不贵也。然而夷子葬其亲厚,则是以所贱事亲也。”

徐子以告夷子。

  夷子曰:“儒者之道,古之人若保赤子,此言何谓也?之则以为爱无差等,施由亲始。”徐子以告孟子。孟子曰:“夫夷子信以为人之亲其兄之子为若亲其邻之赤子乎?彼有取尔也。赤子匍匐将入井,非赤子之罪也。且天之生物也,使之一本,而夷子二本故也。盖上世尝有不葬其亲者,其亲死,则举而委之於壑。他日过之,狐狸食之,蝇蚋姑嘬之。其颡有泚,睨而不视。夫泚也,非为人泚,中心达於面目,盖归反蘽梩而掩之。掩之诚是也,则孝子仁人之掩其亲,亦必有道矣。”徐子以告夷子。夷子怃然,为间,曰:“命之矣。”
卷一 梁惠王上

  孟子见梁惠王。王曰:“叟!不远千里而来,亦将有以利吾国乎?”

孟子对曰:“王!何必曰利?亦有仁义而已矣。

王曰:‘何以利吾国?’大夫曰:‘何以利吾家?’士庶人曰:‘何以利吾身?’上下交征利而国危矣。万乘之国,弑其君者,必千乘之家;千乘之国,弑其君者,必百乘之家。万取千焉,千取百焉,不为不多矣。苟为后义而先利,不夺不餍。未有仁而遗其亲者也,未有义而后其君者也。王亦曰:仁义而已矣,何必曰利?”

孟子见梁惠王。王立於沼上,顾鸿雁麋鹿,曰:“贤者亦乐此乎?”

孟子对曰:“贤者而后乐此,不贤者,虽有此不乐也。《诗》云:‘经始灵台,经之营之,庶民攻之,不日成之。经始勿亟,庶民子来。王在灵囿,麀鹿攸伏,麀鹿濯濯,白鸟鹤鹤。王在灵沼,於牣鱼跃。’文王以民力为台为沼,而民欢乐之,谓其台曰灵台,谓其沼曰灵沼,乐其有麋鹿鱼鳖。古之人与民偕乐,故能乐也。

  汤誓曰:‘时日害丧,予及女皆亡。’民欲与之皆亡,虽有台池鸟兽,岂能独乐哉?”梁惠王曰:“寡人之於国也,尽心焉耳矣。河内凶,则移其民於河东,移其粟於河内。河东凶亦然。察邻国之政,无如寡人之用心者。邻国之民不加少,寡人之民不加多,何也?”孟子对曰:“王好战,请以战喻。填然鼓之,兵刃既接,弃甲曳兵而走。或百步而后止,或五十步而后止。以五十步笑百步,则何如?”

曰:“不可,直不百步耳,是亦走也。”

曰:“王如知此,则无望民之多於邻国也。不违农时,穀不可胜食也;数罟不入洿池,鱼鳖不可胜食也;斧斤以时入山林,材木不可胜用也。穀与鱼鳖不可胜食,材木不可胜用,是使民养生丧死无憾也。养生丧死无憾,王道之始也。五亩之宅,树之以桑,五十者可以衣帛矣。鸡豚狗彘之畜,无失其时,七十者可以食肉矣。百亩之田,勿夺其时,数口之家可以无饥矣。谨庠序之教,申之以孝悌之义,颁白者不负戴於道路矣。七十者衣帛食肉,黎民不饥不寒,然而不王者,未之有也。狗彘食人食而不知检,途有饿莩而不知发;人死则曰:‘非我也,岁也。’是何异於刺人而杀之,曰:‘非我也,兵也。’王无罪岁,斯天下之民至焉。”

  梁惠王曰:“寡人愿安承教。”

孟子对曰:“杀人以梃与刃,有以异乎?”

曰:“无以异也。”

“以刃与政,有以异乎?”

曰:“无以异也。”

曰:“庖有肥肉,厩有肥马,民有饥色,野有饿莩,此率兽而食人也。兽相食,且人恶之;为民父母,行政,不免於率兽而食人,恶在其为民父母也?仲尼曰:‘始作俑者,其无后乎!’为其象人而用之也。如之何其使斯民饥而死也?”

梁惠王曰:“晋国,天下莫强焉,叟之所知也。及寡人之身,东败於齐,长子死焉;西丧地於秦七百里;南辱於楚。寡人耻之,愿比死者壹洒之,如之何则可?”

孟子对曰:“地方百里而可以王。王如施仁政於民,省刑罚,薄税敛,深耕易耨,壮者以暇日修其孝悌忠信,入以事其父兄,出以事其长上,可使制梃以挞秦、楚之坚甲利兵矣。彼夺其民时,使不得耕耨以养其父母。父母冻饿,兄弟妻子离散。彼陷溺其民,王往而征之,夫谁与王敌?故曰:‘仁者无敌。’王请勿疑!”

孟子见梁襄王,出,语人曰:“望之不似人君,就之而不见所畏焉。

卒然问曰:‘天下恶乎定?’吾对曰:‘定於一。’

‘孰能一之?’对曰:‘不嗜杀人者能一之。’

‘孰能与之?’

对曰:‘天下莫不与也。王知夫苗乎?七八月之间旱,则苗槁矣。天油然作云,沛然下雨,则苗浡然兴之矣。其如是,孰能御之?今夫天下之人牧,未有不嗜杀人者也。如有不嗜杀人者,则天下之民皆引领而望之矣。诚如是也,民归之,由水之就下,沛然谁能御之?’”

齐宣王问曰:“齐桓、晋文之事,可得闻乎?”

孟子对曰:“仲尼之徒无道桓文之事者,是以后世无传焉,臣未之闻也。无以,则王乎?”

曰:“德何如则可以王矣?”

曰:“保民而王,莫之能御也。”

曰:“若寡人者,可以保民乎哉?”曰:“可。”曰:“何由知吾可也?”

曰:“臣闻之胡龁曰:王坐於堂上,有牵牛而过堂下者,王见之,曰:‘牛何之?’

对曰:‘将以衅钟。’

王曰:‘舍之!吾不忍其觳觫,若无罪而就死地。’对曰:‘然则废衅钟与?’

曰:‘何可废也?以羊易之!’──不识有诸?”

曰:“有之。”

曰:“是心足以王矣。百姓皆以王为爱也,臣固知王之不忍也。”

王曰:“然。诚有百姓者。齐国虽褊小,吾何爱一牛?即不忍其觳觫,若无罪而就死地,故以羊易之也。”

曰:“王无异於百姓之以王为爱也。以小易大,彼恶知之?王若隐其无罪而就死地,则牛羊何择焉?”

王笑曰:“是诚何心哉?我非爱其财而易之以羊也。宜乎百姓之谓我爱也。”

曰:“无伤也,是乃仁术也,见牛未见羊也。君子之於禽兽也,见其生,不忍见其死;闻其声,不忍食其肉。是以君子远庖厨也。”王说,曰:“《诗》云:‘他人有心,予忖度之。’夫子之谓也。夫我乃行之,反而求之,不得吾心。夫子言之,於我心有戚戚焉。此心之所以合於王者,何也?”曰:“有复於王者曰:‘吾力足以举百钧,而不足以举一羽;明足以察秋毫之末,而不见舆薪。则王许之乎?”

曰:“否。”“今恩足以及禽兽,而功不至於百姓者,独何与?然则一羽之不举,为不用力焉;舆薪之不见,为不用明焉;百姓之不见保,为不用恩焉。故王之不王,不为也,非不能也。”

曰:“不为者与不能者之形何以异?”

曰:“挟太山以超北海,语人曰:‘我不能。’是诚不能也。为长者折枝,语人曰:‘我不能。’是不为也,非不能也。故王之不王,非挟太山以超北海之类也;王之不王,是折枝之类也。老吾老,以及人之老;幼吾幼,以及人之幼。天下可运於掌。《诗》云:‘刑于寡妻,至于兄弟,以御于家邦。’言举斯心加诸彼而已。故推恩足以保四海,不推恩无以保妻子。古之人所以大过人者,无他焉,善推其所为而已矣。

  今恩足以及禽兽,而功不至於百姓者,独何与?权,然后知轻重;度,然后知长短。物皆然,心为甚。王请度之!抑王兴甲兵,危士臣,构怨於诸侯,然后快於心与?”

王曰:“否。吾何快於是?将以求吾所大欲也。”

曰:“王之所大欲,可得闻与?”王笑而不言。曰:“为肥甘不足於口与?轻暖不足於体与?抑为采色不足视於目与?声音不足听於耳与?便嬖不足使令於前与?王之诸臣皆足以供之,而王岂为是哉?”

曰:“否。吾不为是也。”

曰:“然则王之所大欲可知已。

  欲辟土地,朝秦、楚,莅中国而抚四夷也。以若所为求若所欲,犹缘木而求鱼也。”

  王曰:“若是其甚与?”

曰:“殆有甚焉。缘木求鱼,虽不得鱼,无后灾。以若所为,求若所欲,尽心力而为之,后必有灾。”

曰:“可得闻与?”

曰:“邹人与楚人战,则王以为孰胜?”

曰:“楚人胜。”

曰:“然则小固不可以敌大,寡固不可以敌众,弱固不可以敌强。海内之地,方千里者九,齐集有其一。以一服八,何以异於邹敌楚哉?盖亦反其本矣。今王发政施仁,使天下仕者皆欲立於王之朝,耕者皆欲耕於王之野,商贾皆欲藏於王之市,行旅皆欲出於王之途,天下之欲疾其君者,皆欲赴诉於王。其若是,孰能御之?”

王曰:“吾惛,不能进於是矣。

  愿夫子辅吾志,明以教我。我虽不敏,请尝试之。”曰:“无恒产而有恒心者,惟士为能。若民,则无恒产,因无恒心。苟无恒心,放辟邪侈,无不为已。及陷於罪,然后从而刑之,是罔民也。焉有仁人在位罔民而可为也?是故明君制民之产,必使仰足以事父母,俯足以畜妻子,乐岁终身饱,凶年免於死亡。然后驱而之善,故民之从之也轻。今也制民之产,仰不足以事父母,俯不足以畜妻子;乐岁终身苦,凶年不免於死亡。此惟救死而恐不赡,奚暇治礼义哉?王欲行之,则盍反其本矣!五亩之宅,树之以桑,五十者可以衣帛矣。鸡豚狗彘之畜,无失其时,七十者可以食肉矣。百亩之田,勿夺其时,八口之家可以无饥矣。谨庠序之教,申之以孝悌之义,颁白者不负戴於道路矣。老者衣帛食肉,黎民不饥不寒,然而不王者,未之有也。”
  《礼记孔子闲居》

  

  孔子闲居,子夏侍,子夏曰:“敢问诗云‘凯弟君子,民之父母’,何如斯可谓民之父母矣?”

  

  孔子曰:“夫民之父母乎,必达于礼乐之原,以致五至而行三无,以横于天下,四方有败,必先知之。此之谓民之父母矣。”

  

  子夏曰:“民之父母既得而闻之矣,敢问何谓五至?”

  

  孔子曰:“志之所至,诗亦至焉;诗之所至,礼亦至焉;礼之所至,乐亦至焉;乐之所至,哀亦至焉。哀乐相生,是故正明目而视之不可得而见也,倾耳而听之不可得而闻也,志气塞乎天地。此之谓五至。”

  

  子夏曰:“五至既得而闻之矣,敢问何谓三无?”

  

  孔子曰:“无声之乐,无体之礼,无服之丧,此之谓三无。”

  

  子夏曰:“三无既得略而闻之矣,敢问何诗近之?”

  

  孔子曰:“夙夜其命宥密,无声之乐也。威仪逮逮,不可选也,无体之礼也。凡民有丧,匍匐救之,无服之丧也。”

  

  子夏曰:“言则大矣美矣盛矣!言尽于此而已乎?”孔子曰:“何为其然也。君子之服之也,犹有五起焉。”

  

  子夏曰:“何如。”

  

  孔子曰:“无声之乐,气志不违;无体之礼,威仪迟迟;无服之丧,内恕孔悲。无声之乐,气志既得;无体之礼,威仪翼翼;无服之丧,施及四国。无声之乐,气志既从;无体之礼,上下和同;无服之丧,以畜万邦。无声之乐,日闻四方;无体之礼,日就月将;无服之丧,纯德孔明。无声之乐,气志既起;无体之礼,施及四海;无服之丧,施于孙子。”

  

  子夏曰:“三王之德,参于天地,敢问何如斯可谓参于天地矣?”

  

  孔子曰:“奉三无私以劳天下。”

  

  子夏曰:“敢问何谓三无私?”

  

  孔子曰:“天无私覆,地无私载,日月无私照。奉斯三者以劳天下,此之谓三无私。其在诗曰:‘帝命不违,至于汤齐。汤降不迟,圣敬日齐。昭假迟迟,上帝是祗。帝命式于九围。’是汤之德也。天有四时,春秋冬夏。风雨霜露,无非教也。地载神气,神气风霆,风霆流形,庶物露生,无非教也。清明在躬,气志如神,嗜欲将至,有开必先。天降时雨,山川出云。其在诗曰:‘嵩高惟岳,峻极于天。惟岳降神,生甫及申。惟申及甫,惟周之翰。四国于蕃,四方于宣。’此文武之德也.三代之王也,必先令闻。诗云:‘明明天子,令闻不已。’三代之德也。弛其文德,协此四国,大王之德也。”

  

  子夏蹶然而起,负墙而立,曰:“弟子敢不承乎?”

  
 

  《礼记乐记》

  凡音之起,由人心生也。人心之动,物使之然也。感于物而动,故形于声。声相应,故生变。变成方谓之音。比音而乐之,及干戚羽旄,谓之乐。乐者,音之所由生也,其本在人心之感于物也。是故其哀心感者,其声焦以杀;其乐心感者,其声啴以缓;其喜心感者,其声发以散;其怒心感者,其声粗以厉;其敬心感者,其声直以廉;其爱心感者,其声和以柔。六者非性也,感于物而后动。是故先王慎所以感之者。故礼以道其志,乐以和其声,政以一其行,刑以防其奸。礼乐刑政,其极一也,所以同民心而出治道也。

  

  凡音者,生人心者也。情动于中,故形于声。声成文,谓之音。是故治世之音安以乐,其政和。乱世之音怨以怒,其政乖。亡国之音哀以思,其民困。声音之道与政通矣!宫为君,商为臣,角为民,征为事,羽为物。五者不乱,则无怙懘之音矣。宫乱则荒,其君骄;商乱则陂,其官坏;角乱则忧,其民怨;征乱则哀,其事勤;羽乱则危,其财匮。五者皆乱,迭相陵,谓之慢。如此则国之灭亡无日矣!郑卫之音,乱世之音也,比于慢矣!桑间濮上之音,亡国之音也,其政散,其民流,诬上行私而不可止也。

  

  凡音者,生于人心者也;乐者,通伦理者也。是故知声而不知音者,禽兽是也;知音而不知乐者,众庶是也。唯君子为能知乐。是故审声以知音,审音以知乐,审乐以知政,而治道备矣!是故不知声者不可与言音,不知音者不可与言乐,知乐则几于礼矣!礼乐皆得谓之有德。德者,得也。是故乐之隆,非极音也;食飨之礼,非致味也。清庙之瑟,朱弦而疏越,壹倡而三叹,有遗音者矣!大飨之礼,尚玄酒而俎腥鱼,大羹不和,有遗味者矣!是故先王之制礼乐也,非以极口腹耳目之欲也,将以教民平好恶,而反人道之正也。

  

  人生而静,天之性也。感于物而动,性之欲也。物至知知,然后好恶形焉。好恶无节于内,知诱于外,不能反躬,天理灭矣。夫物之感人无穷,而人之好恶无节,则是物至而人化物也。人化物也者,灭天理而穷人欲者也。于是有悖逆诈伪之心,有淫泆作乱之事,是故强者胁弱,众者暴寡,知者诈愚,勇者苦怯,疾病不养,老幼孤独不得其所。此大乱之道也。是故先王之制礼乐,人为之节。衰麻哭泣,所以节丧纪也;钟鼓干戚,所以和安乐也;昏姻冠笄,所以别男女也;射乡食飨,所以正交接也。礼节民心,乐和民声,政以行之,刑以防之,礼乐刑政四达而不悖,则王道备矣!

  

  乐者为同,礼者为异。同则相亲,异则相敬。乐胜则流,礼胜则离。合情饰貌者,礼乐之事也。礼义立则贵贱等矣,乐文同则上下和矣,好恶着则贤不肖别矣,刑禁暴、爵举贤则政均矣。仁爱以之,义以正之,如此则民治行矣。乐由中出,礼自外作。乐由中出故静,礼自外作故文。大乐必易,大礼必简。乐至则无怨,礼至则不争,揖让而治天下者,礼乐之谓也。暴民不作,诸侯宾服,兵革不试,五刑不用,百姓无患,天子不怒,如此则乐达矣。合父子之亲,明长幼之序,以敬四海之内,天子如此,则礼行矣。

  

  大乐与天地同和,大礼与天地同节。和故百物不失,节故祀天祭地。明则有礼乐,幽则有鬼神,如此,则四海之内合敬同爱矣!礼者殊事,合敬者也;乐者异文,合爱者也。礼乐之情同,故明王以相沿也。故事与时并,名与功偕。

  

  故钟鼓管磬,羽钥干戚,乐之器也;屈伸俯仰,缀兆舒疾,乐之文也;簠簋俎豆,制度文章,礼之器也;升降上下,周还裼袭,礼之文也。故知礼乐之情者能作,识礼乐之文者能述。作者之谓圣,述者之谓明。明圣者,述作之谓也。

  

  乐者,天地之和也;礼者,天地之序也。和故百物皆化,序故群物皆别。乐由天作,礼以地制。过制则乱,过作则暴。明于天地,然后能兴礼乐也。论伦无患,乐之情也;欣喜欢爱,乐之官也;中正无邪,礼之质也;庄敬恭顺,礼之制也。若夫礼乐之施于金石,越于声音,用于宗庙社稷,事乎山川鬼神,则此所与民同也。

  

  王者功成作乐,治定制礼。其功大者其乐备,其治辩者其礼具。干戚之舞,非备乐也;孰亨而祀,非达礼也。五帝殊时,不相颂乐;三王异世,不相袭礼。乐极则忧,礼粗则偏矣!及夫敦乐而无忧、礼备而不偏者,其唯大圣乎!

  

  天高地下,万物散殊,而礼制行矣。流而不息,合同而化,而乐兴焉。春作夏长,仁也;秋敛冬藏,义也。仁近于乐,义近于礼。乐者敦和,率神而从天;礼者别宜,居鬼而从地。故圣人作乐以应天,制礼以配地。礼乐明备,天地官矣。天尊地卑,君臣定矣。卑高已陈,贵贱位矣。动静有常,小大殊矣。方以类聚,物以群分,则性命不同矣。在天成象,在地成形。如此,则礼者天地之别也。地气上齐,天气下降,阴阳相摩,天地相荡,鼓之以雷霆,奋之以风雨,动之以四时,暖之以日月,而百化兴焉。如此,则乐者天地之和也。化不时则不生,男女无辨则乱升,天地之情也。及夫礼乐之极乎天而蟠乎地,行乎阴阳而通乎鬼神,穷高极远而测深厚。乐著大始而礼居成物。著不息者,天也;著不动者,地也。一动一静者,天地之间也。故圣人曰礼乐云。

  

  昔者舜作五弦之琴以歌南风,夔始制乐,以赏诸侯。

  

  故天子之为乐也,以赏诸侯之有德者也。德盛而教尊,五谷时熟,然后赏之以乐。故其治民劳者,其舞行缀远;其治民逸者,其舞行缀短。故观其舞,知其德;闻其谥,知其行也。

  

  大章,章之也。咸池,备矣。韶,继也。夏,大也。殷周之乐尽矣!天地之道,寒暑不时则疾,风雨不节则饥。教者,民之寒暑也,教不时则伤世;事者,民之风雨也,事不节则无功。然则先王之为乐也,以法治也,善则行象德矣。

  

  夫豢豕为酒,非以为祸也,而狱讼益繁,则酒之流生祸也。是故先王因为酒礼。壹献之礼,宾主百拜,终日饮酒而不得醉焉,此先王之所以备酒祸也。故酒食者,所以合欢也;乐者,所以象德也;礼者,所以缀淫也。是故先王有大事,必有礼以哀之;有大福,必有礼以乐之。哀乐之分,皆以礼终。乐也者,圣人之所乐也,而可以善民心。其感人深,其移风易俗,故先王著其教焉。

  

  夫民有血气心知之性,而无哀乐喜怒之常,应感起物而动,然后心术形焉。是故志微噍杀之音作而民思忧,啴谐慢易繁文简节之音作而民康乐,粗厉猛起奋末广贲之音作而民刚毅,廉直劲正庄诚之音作而民肃敬,宽裕肉好顺成和动之音作而民慈爱,流辟邪散狄成涤滥之音作而民淫乱。

  

  是故先王本之情性,稽之度数,制之礼义。合生气之和,道五常之行,使之阳而不散,阴而不密,刚气不怒,柔气不慑。四畅交于中,而发作于外,皆安其位而不相夺也。然后立之学等,广其节奏,省其文采,以绳德厚。律小大之称,比终始之序,以象事行。使亲疏、贵贱、长幼、男女之理皆形见于乐。故曰:“乐观其深矣!”土敝则草木不长,水烦则鱼鳖不大,气衰则生物不遂,世乱则礼慝而乐淫。是故其声哀而不庄,乐而不安,慢易以犯节,流湎以忘本。广则容奸,狭则思欲,感条畅之气,而灭平和之德。是以君子贱之也。

  

  凡奸声感人,而逆气应之。逆气成象,而淫乐兴焉。正声感人,而顺气应之。顺气成象,而和乐兴焉。倡和有应,回邪曲直,各归其分,而万物之理,各以类相动也。是故君子反情以和其志,比类以成其行。奸声乱色,不留聪明;淫乐慝礼,不接心术;惰慢邪辟之气,不设于身体。使耳目、鼻口、心知、百体皆由顺正,以行其义,然后发以声音,而文以琴瑟,动以干戚,饰以羽旄,从以箫管,奋至德之光,动四气之和,以着万物之理。是故清明象天,广大象地,终始象四时,周还象风雨,五色成文而不乱,八风从律而不奸,百度得数而有常。大小相成,终始相生,倡和清浊,迭相为经。故乐行而伦清,耳目聪明,血气和平,移风易俗,天下皆宁。

  

  故曰:“乐者乐也。君子乐得其道,小人乐得其欲。”以道制欲,则乐而不乱;以欲忘道,则惑而不乐。

  

  是故君子反情以和其志,广乐以成其教。乐行而民乡方,可以观德矣。德者,性之端也;乐者,德之华也;金石丝竹,乐之器也。诗,言其志也;歌,咏其声也;舞,动其容也。三者本于心,然后乐器从之。是故情深而文明,气盛而化神,和顺积中而英华发外,唯乐不可以为伪。

  

  乐者,心之动也;声者,乐之象也;文采节奏,声之饰也。君子动其本,乐其象,然后治其饰。是故先鼓以警戒,三步以见方,再始以著往,复乱以饬归。奋疾而不拔,极幽而不隐。独乐其志,不厌其道,备举其道,不私其欲。是故情见而义立,乐终而德尊。君子以好善,小人以听过。故曰:“生民之道,乐为大焉。”

  

  乐也者,施也;礼也者,报也;乐,乐其所自生,而礼反其所自始。乐章德,礼报情,反始也。

  

  所谓大辂者,天子之车也。龙旗九旒,天子之旌也;青黑缘者,天子之宝龟也;从之以牛羊之群,则所以赠诸侯也。

  

  乐也者,情之不可变者也。礼也者,理之不可易者也。乐统同,礼辨异。礼乐之说管乎人情矣!

  

  穷本知变,乐之情也;著诚去伪,礼之经也。礼乐偩天地之情,达神明之德,降兴上下之神,而凝是精粗之体,领父子君臣之节。

  

  是故大人举礼乐,则天地将为昭焉。天地欣合,阴阳相得,煦妪覆育万物,然后草木茂,区萌达,羽翼奋,角觡生,蛰虫昭苏,羽者妪伏,毛者孕鬻,胎生者不殰,而卵生者不殈,则乐之道归焉耳。

  

  乐者,非谓黄钟大吕弦歌干扬也,乐之末节也,故童者舞之。铺筵席,陈尊俎,列笾豆,以升降为礼者,礼之末节也,故有司掌之。乐师辨乎声诗,故北面而弦。宗祝辨乎宗庙之礼,故后尸。商祝辨乎丧礼,故后主人。是故德成而上,艺成而下,行成而先,事成而后。是故先王有上有下,有先有后,然后可以有制于天下也。

  

  魏文侯问于子夏曰:“吾端冕而听古乐,则唯恐卧。听郑卫之音,则不知倦。敢问古乐之如彼,何也?新乐之如此,何也?”子夏对曰:“今夫古乐,进旅退旅,和正以广,弦匏笙簧,会守拊鼓。始奏以文,复乱以武,治乱以相,讯疾以雅。君子于是语,于是道古,修身及家,平均天下,此古乐之发也。今夫新乐,进俯退俯,奸声以滥,溺而不止。及优侏儒獶杂子女,不知父子。乐终不可以语,不可以道古。此新乐之发也。今君之所问者乐也,所好者音也。夫乐者,与音相近而不同。”文侯曰:“敢问何如?”子夏对曰:“夫古者天地顺而四时当,民有德而五谷昌,疾疢不作而无妖祥,此之谓大当。然后圣人作,为父子君臣以为纪纲。纪纲既正,天下大定。天下大定,然后正六律、和五声,弦歌诗颂,此之谓德音。德音之谓乐。诗云:‘莫其德音,其德克明。克明克类,克长克君。王此大邦,克顺克俾。俾于文王,其德靡悔。既受帝祉,施于孙子。’此之谓也。今君之所好者,其溺音乎?”文侯曰:“敢问溺音何从出也?”子夏对曰:“郑音好滥淫志,宋音燕女溺志,卫音趋数烦志,齐音敖辟乔志。此四者皆淫于色而害于德,是以祭祀弗用也。《诗》云:‘肃雍和鸣,先祖是听。’夫肃肃,敬也,雍雍,和也。夫敬以和,何事不行?为人君者,谨其所好恶而已矣!君好之,则臣为之;上行之,则民从之。《诗》云:‘诱民孔易’,此之谓也。然后圣人作为鼗、鼓、椌、楬、埙、箎,此六者,德音之音也。然后钟磬竽瑟以和之,干戚旄狄以舞之,此所以祭先王之庙也,所以献酬酳酢也,所以官序贵贱各得其宜也,所以示后世有尊卑长幼之序也。钟声铿,铿以立号,号以立横,横以立武。君子听钟声则思武臣。石声磬,磬以立辨,辨以致死。君子听磬声则思死封疆之臣。丝声哀,哀以立廉,廉以立志。君子听琴瑟之声则思志义之臣。竹声滥,滥以立会,会以聚。众君子听竽笙箫管之声则思畜聚之臣。鼓鼙之声讙,讙以立动,动以进众。君子听鼓鼙之声则思将帅之臣。君子之听音,非听其铿鎗而已也,彼亦有所合之也。”

  

  宾牟贾侍坐于孔子,孔子与之言及乐,曰:“夫武之备戒之已久,何也?”对曰:“病不得其众也。”“咏叹之,淫液之,何也?”对曰:“恐不逮事也。”“发扬蹈厉之已蚤,何也?”对曰:“及时事也。”“武坐致右宪左,何也?”对曰:“非武坐也。”“声淫及商,何也?”对曰:“非武音也。”子曰:“若非武音,则何音也?”对曰:“有司失其传也。若非有司失其传,则武王之志荒矣。”子曰:“唯。丘之闻诸苌弘,亦若吾子之言是也。”宾牟贾起,免席而请曰:“夫武之备戒之已久,则既闻命矣,敢问迟之迟而又久,何也?”子曰:“居,吾语汝。夫乐者,象成者也。摠明堂,而民知孝。朝觐,然后诸侯知所以臣。耕借,然后诸侯知所以敬。五者,天下之大教也。食三老五更于大学,天子袒而割牲,执酱而馈,执爵而酳,冕而摠干,所以教诸侯之弟也。若此,则周道四达,礼乐交通,则夫武之迟久,不亦宜乎?”

  

  君子曰:“礼乐不可斯须去身。”致乐以治心,则易直子谅之心油然生矣。易直子谅之心生则乐,乐则安,安则久,久则天,天则神。天则不言而信,神则不怒而威。致乐以治心者也。致礼以治躬则庄敬,庄敬则严威。心中斯须不和不乐,而鄙诈之心入之矣;外貌斯须不庄不敬,而易慢之心入之矣。故乐也者,动于内者也;礼也者,动于外者也。乐极和,礼极顺。内和而外顺,则民瞻其颜色而弗与争也,望其容貌而民不生易僈焉。故德辉动于内,而民莫不承听;理发诸外,而民莫不承顺。故曰:“致礼乐之道,举而错之天下无难矣!”乐也者,动于内者也;礼也者,动于外者也。故礼主其减,乐主其盈。礼减而进,以进为文;乐盈而反,以反为文。礼减而不进则销,乐盈而不反则放。故礼有报而乐有反。礼得其报则乐,乐得其反则安。礼之报,乐之反,其义一也。

  

  夫乐者,乐也,人情之所不能免也。乐必发于声音,形于动静。人之道也,声音动静,性术之变,尽于此矣!故人不耐无乐,乐不耐无形,形而不为道,不耐无乱。先王耻其乱,故制雅颂之声以道之,使其声足乐而不流,使其文足论而不息,使其曲直繁瘠廉肉节奏足以感动人之善心而已矣!不使放心邪气得接焉,是先王立乐之方也。

  

  是故,乐在宗庙之中,君臣上下同听之,则莫不和敬。在族长乡里之中,长幼同听之,则莫不和顺。在闺门之内,父子兄弟同听之,则莫不和亲。故乐者,审一以定和,比物以饰节,节奏合以成文。所以合和父子君臣,附亲万民也。是先王立乐之方也。故听其雅颂之声,志意得广焉。执其干戚,习其俯仰诎伸,容貌得庄焉。行其缀兆,要其节奏,行列得正焉,进退得齐焉。故乐者,天地之命,中和之纪,人情之所不能免也。

  

  夫乐者.先王之所以饰喜也。军旅鈇钺者,先王之所以饰怒也。故先王之喜怒皆得其侪焉。喜则天下和之,怒则暴乱者畏之,先王之道,礼乐可谓盛矣!

  

  子赣见师乙而问焉,曰:“赐闻声歌各有宜也,如赐者宜何歌也?”师乙曰:“乙贱工也,何足以问所宜?请诵其所闻而吾子自执焉。爱者,宜歌商。温良而能断者,宜歌齐。夫歌者,直己而陈德也,动己而天地应焉,四时和焉,星辰理焉,万物育焉。故商者,五帝之遗声也。宽而静,柔而正者,宜歌颂。广大而静,疏达而信者,宜歌大雅。恭俭而好礼者,宜歌小雅。正直而静,廉而谦者,宜歌风。肆直而慈爱,商之遗声也,商人识之,故谓之商。齐者,三代之遗声也,齐人识之,故谓之齐。明乎商之音者,临事而屡断。明乎齐之音者,见利而让。临事而屡断,勇也;见利而让,义也。有勇有义,非歌孰能保此?故歌者上如抗,下如队,曲如折,止如槁木,倨中矩,句中钩,累累乎端如贯珠。故歌之为言也,长言之也。说之故言之,言之不足,故长言之。长言之不足,故嗟叹之,嗟叹之不足,故不知手之舞之、足之蹈之也。”子贡问乐。

礼记

  

  [[曲礼]]

  [[檀弓]]

  [[王制]]

  [[月令]]

  [[曾子问]]

  [[文王世子]]

  

  [[礼运]]

  [[礼器]]

  [[郊特牲]]

  [[内则]]

  [[玉藻]]

  [[明堂位]]

  [[丧服小记]]

  

  [[大传]]

  [[少仪]]

  [[学记]]

  [[乐记]]

  [[杂记]]

  [[丧大记]]

  [[丧服大记]]

  

  

  [[祭法]]

  [[祭义]]

  [[祭统]]

  [[经解]]

  [[哀公问]]

  [[仲尼燕居]]

  [[孔子闲居]]

  [[坊记]]

  [[礼记中庸]]

  [[表记]]

  [[缁衣]]

  [[奔丧]]

  [[问丧]]

  [[服问]]

  [[间传]]

  [[三年问]]

  [[深衣]]

  [[投壶]]

  [[儒行]]

  [[礼记大学]]

  [[冠义]]

  [[昏义]]

  [[乡饮酒义]]

  [[射义]]

  [[燕义]]

  [[聘义]]

  [[丧服四制]]



 
  

  《礼记大学》

  

  大学之道,在明明德,在亲民,在止于至善。知止而后有定,定而后能静,静而后能安,安而后能虑,虑而后能得。物有本末,事有终始,知所先后,则近道矣。

  

  古之欲明明德于天下者,先治其国;欲治其国者,先齐其家;欲齐其家者,先修其身;欲修其身者,先正其心;欲正其心者,先诚其意;欲诚其意者,先致其知;致知在格物。物格而后知至,知至而后意诚,意诚而后心正,心正而后身修,身修而后家齐,家齐而后国治,国治而后天下平。

  

  自天子以至于庶人,壹是皆以修身为本。其本乱而末治者,否矣!其所厚者薄而其所薄者厚,未之有也。此谓知本,此谓知之至也。

  

  所谓诚其意者,毋自欺也。如恶恶臭,如好好色,此之谓自谦。故君子必慎其独也。小人闲居为不善,无所不至,见君子而后厌然,揜其不善而著其善。人之视己,如见其肺肝然,则何益矣?此谓诚于中,形于外,故君子必慎其独也。曾子曰:“十目所视,十手所指,其严乎?”富润屋,德润身,心广体胖,故君子必诚其意。

  

  诗云:“瞻彼淇澳,菉竹猗猗。有斐君子,如切如磋,如琢如磨。瑟兮僩兮,赫兮喧兮,有斐君子,终不可諠兮。”如切如磋者,道学也;如琢如磨者,自修也;瑟兮僩兮者,恂栗也;赫兮喧兮者,威仪也;有斐君子终不可諠兮者,道盛德至善,民之不能忘也。诗云:“于戏前王不忘!君子贤其贤而亲其亲,小人乐其乐而利其利。”此以没世不忘也。康诰曰:“克明德。”大甲曰:“顾諟天之明命。”帝典曰:“克明峻德。”皆自明也。汤之盘铭曰:“苟日新,日日新,又日新。”康诰曰:“作新民。”诗曰:“周虽旧邦,其命惟新。”是故君子无所不用其极。

  

  诗云:“邦畿千里,惟民所止。”诗云:“缗蛮黄鸟,止于丘隅。”子曰:“于止,知其所止,可以人而不如鸟乎?”诗云:“穆穆文王,于缉熙敬止。”为人君止于仁,为人臣止于敬,为人子止于孝,为人父止于慈,与国人交止于信。

  

  子曰:“听讼吾犹人也,必也使无讼乎!无情者不得尽其辞,大畏民志。”此谓知本。

  

  所谓修身在正其心者,身有所忿懥则不得其正,有所恐惧则不得其正,有所好乐则不得其正,有所忧患则不得其正。心不在焉,视而不见,听而不闻,食而不知其味。此谓修身在正其心。

  

  所谓齐其家在修其身者,人之其所亲爱而辟焉,之其所贱恶而辟焉,之其所畏敬而辟焉,之其所哀矜而辟焉,之其所敖惰而辟焉。故好而知其恶,恶而知其美者,天下鲜矣。故谚有之曰:“人莫知其子之恶,莫知其苗之硕。”此谓身不修,不可以齐其家。

  

  所谓治国必先齐其家者,其家不可教,而能教人者无之。故君子不出家而成教于国。孝者所以事君也,弟者所以事长也,慈者所以使众也。康诰曰:“如保赤子,心诚求之。”虽不中不远矣。未有学养子而后嫁者也,一家仁,一国兴仁;一家让,一国兴让;一人贪戾,一国作乱。其机如此。此谓一言偾事,一人定国。尧舜率天下以仁,而民从之;桀纣率天下以暴,而民从之。其所令反其所好,而民不从。是故君子有诸己而后求诸人,无诸己而后非诸人。所藏乎身不恕而能喻诸人者,未之有也。故治国在齐其家。诗云:“桃之夭夭,其叶蓁蓁。之子于归,宜其家人。”宜其家人,而后可以教国人。诗云:“宜兄宜弟。”宜兄宜弟,而后可以教国人。诗云:“其仪不忒,正是四国。”其为父子兄弟足法,而后民法之也。此谓治国在齐其家.

  

  所谓平天下在治其国者,上老老而民兴孝,上长长而民兴弟,上恤孤而民不倍。是以君子有絜矩之道也。所恶于上,毋以使下;所恶于下,毋以事上;所恶于前,毋以先后;所恶于后,毋以从前;所恶于右,毋以交于左;所恶于左,毋以交于右。此之谓絜矩之道。诗云:“乐只君子,民之父母。”民之所好好之,民之所恶恶之,此之谓民之父母。诗云:“节彼南山,维石岩岩。赫赫师尹,民具尔瞻。”有国者不可以不慎,辟则为天下僇矣!诗云:“殷之未丧师,克配上帝。仪监于殷,峻命不易。”道得众则得国,失众则失国,是故君子先慎乎德。有德此有人,有人此有土,有土此有财,有财此有用。德者本也,财者末也。外本内末,争民施夺,是故财聚则民散,财散则民聚。是故言悖而出者,亦悖而入,货悖而入者,亦悖而出。康诰曰:“惟命不于常。”道善则得之,不善则失之矣。楚书曰:“楚国无以为宝,惟善以为宝。”舅犯曰:“亡人无以为宝,仁亲以为宝。”秦誓曰:“若有一个臣,断断兮无他技,其心休休焉,其如有容焉。人之有技,若己有之,人之彦圣,其心好之。不啻若自其出口,寔能容之,以能保我子孙黎民,尚亦有利哉。人之有技,媢嫉以恶之,人之彦圣而违之,俾不通,寔不能容,以不能保我子孙黎民。亦曰殆哉!唯仁人放流之,迸诸四夷,不与同中国。”此谓唯仁人为能爱人、能恶人。见贤而不能举,举而不能先,命也。见不善而不能退,退而不能远,过也。好人之所恶,恶人之所好,是谓拂人之性,菑必逮夫身。是故君子有大道,必忠信以得之,骄泰以失之。生财有大道,生之者众,食之者寡,为之者疾,用之者舒,则财恒足矣。仁者以财发身,不仁者以身发财。未有上好仁而下不好义者也,未有好义其事不终者也,未有府库财非其财者也。孟献子曰:“畜马乘,不察于鸡豚。伐冰之家,不畜牛羊。百乘之家,不畜聚敛之臣。与其有聚敛之臣,宁有盗臣。”此谓国不以利为利,以义为利也。长国家而务财用者,必自小人矣。彼为善之,小人之使为国家,菑害并至,虽有善者亦无如之何矣!此谓国不以利为利,以义为利也。

  

  
  《礼记中庸》
可参看[[中庸]]
  

  天命之谓性,率性之谓道,修道之谓教。道也者,不可须臾离也,可离非道也。是故君子戒慎乎其所不睹,恐惧乎其所不闻。莫见乎隐,莫显乎微,故君子慎其独也。喜怒哀乐之未发谓之中,发而皆中节谓之和。中也者,天下之大本也;和也者,天下之达道也。致中和,天地位焉,万物育焉。

  

  仲尼曰:“君子中庸,小人反中庸。君子之中庸也,君子而时中;小人之中庸也,小人而无忌惮也。”

  

  子曰:“中庸其至矣乎?民鲜能久矣!”

  

  子曰:“道之不行也,我知之矣!知者过之,愚者不及也。道之不明也,我知之矣!贤者过之,不肖者不及也。人莫不饮食也,鲜能知味也。”

  

  子曰:“道其不行矣夫!”

  

  子曰:“舜其大知也与!舜好问而好察迩言,隐恶而扬善,执其两端用其中于民。其斯以为舜乎!”

  

  子曰:“人皆曰予知,驱而纳诸罟擭陷阱之中而莫之知辟也。人皆曰予知,择乎中庸而不能期月守也。”

  

  子曰:“回之为人也,择乎中庸,得一善则拳拳服膺而弗失之矣。”

  

  子曰:“天下国家可均也,爵禄可辞也,白刃可蹈也,中庸不可能也。”

  

  子路问强,子曰:“南方之强与?北方之强与?抑而强与?宽柔以教,不报无道,南方之强也。君子居之,衽金革死而不厌,北方之强也,而强者居之。故君子和而不流,强哉矫!中立而不倚,强哉矫!国有道,不变塞焉,强哉矫!国无道,至死不变,强哉矫!”

  

  子曰:“素隐行怪,后世有述焉,吾弗为之矣。君子遵道而行,半涂而废,吾弗能已矣。君子依乎中庸,遯世不见知而不悔,唯圣者能之。”

  

  君子之道费而隐,夫妇之愚可以与知焉,及其至也,虽圣人亦有所不知焉。夫妇之不肖可以能行焉,及其至也,虽圣人亦有所不能焉。天地之大也,人犹有所憾。故君子语大,天下莫能载焉,语小,天下莫能破焉。诗云:“鸢飞戾天,鱼跃于渊。”言其上下察也。君子之道造端乎夫妇,及其至也,察乎天地。

  

  子曰:“道不远人,人之为道而远人,不可以为道。诗云:‘伐柯伐柯,其则不远。’执柯以伐柯,睨而视之,犹以为远。故君子以人治人,改而止。忠恕违道不远,施诸己而不愿,亦勿施于人。君子之道四,丘未能一焉:所求乎子以事父,未能也;所求乎臣以事君,未能也;所求乎弟以事兄,未能也;所求乎朋友先施之,未能也。庸德之行,庸言之谨,有所不足,不敢不勉。有余,不敢尽,言顾行,行顾言,君子胡不慥慥尔。”

  

  君子素其位而行,不愿乎其外:素富贵行乎富贵,素贫贱行乎贫贱,素夷狄行乎夷狄,素患难行乎患难,君子无入而不自得焉。在上位不陵下,在下位不援上,正己而不求于人,则无怨。上不怨天,下不尤人,故君子居易以俟命,小人行险以徼幸。子曰:“射有似乎君子:失诸正鹄,反求诸其身。”

  

  君子之道,辟如行远必自迩,辟如登高必自卑。诗曰:“妻子好合,如鼓瑟琴。兄弟既翕,和乐且耽。宜尔室家,乐尔妻帑。”子曰:“父母其顺矣乎!”

  

  子曰:“鬼神之为德其盛矣乎:视之而弗见,听之而弗闻,体物而不可遗,使天下之人齐明盛服以承祭祀,洋洋乎如在其上,如在其左右。诗曰:‘神之格思,不可度思,矧可射思’。夫微之显,诚之不可揜如此夫。”

  

  子曰:“舜其大孝也与!德为圣人,尊为天子,富有四海之内,宗庙飨之,子孙保之。故大德必得其位,必得其禄,必得其名,必得其寿。故天之生物,必因其材而笃焉。故栽者培之,倾者覆之。诗曰:‘嘉乐君子,宪宪令德。宜民宜人,受禄于天。保佑命之,自天申之。’故大德者必受命。”

  

  子曰:“无忧者其惟文王乎!以王季为父,以武王为子,父作之,子述之。武王缵大王、王季、文王之绪,壹戎衣而有天下,身不失天下之显名,尊为天子,富有四海之内,宗庙飨之,子孙保之。武王末受命,周公成文武之德,追王大王、王季,上祀先公以天子之礼。斯礼也,达乎诸侯大夫及士庶人。父为大夫,子为士,葬以大夫,祭以士。父为士,子为大夫,葬以士,祭以大夫。期之丧,达乎大夫。三年之丧,达乎天子。父母之丧无贵贱,一也。”

  

  子曰:“武王、周公其达孝矣乎!夫孝者,善继人之志,善述人之事者也。春秋修其祖庙,陈其宗器,设其裳衣,荐其时食。宗庙之礼,所以序昭穆也。序爵,所以辨贵贱也。序事,所以辨贤也。旅酬下为上,所以逮贱也。燕毛,所以序齿也。践其位,行其礼,奏其乐,敬其所尊,爱其所亲,事死如事生,事亡如事存,孝之至也。郊社之礼所以事上帝也,宗庙之礼所以祀乎其先也。明乎郊社之礼,禘尝之义,治国其如示诸掌乎?”

  

  哀公问政,子曰:“文武之政,布在方策。其人存,则其政举;其人亡,则其政息。人道敏政,地道敏树。夫政也者,蒲卢也。故为政在人,取人以身,修身以道,修道以仁。仁者人也,亲亲为大。义者宜也,尊贤为大。亲亲之杀,尊贤之等,礼所生也。在下位不获乎上,民不可得而治矣。故君子不可以不修身,思修身,不可以不事亲;思事亲,不可以不知人;思知人,不可以不知天。”天下之达道五,所以行之者三。曰君臣也、父子也、夫妇也、昆弟也、朋友之交也,五者天下之达道也。知、仁、勇三者,天下之达德也。所以行之者一也。或生而知之,或学而知之,或困而知之,及其知之一也。或安而行之,或利而行之,或勉强而行之,及其成功一也。子曰:“好学近乎知,力行近乎仁,知耻近乎勇。知斯三者则知所以修身,知所以修身则知所以治人,知所以治人则知所以治天下国家矣。”凡为天下国家有九经,曰修身也,尊贤也,亲亲也,敬大臣也,体群臣也,子庶民也,来百工也,柔远人也,怀诸侯也。修身则道立,尊贤则不惑,亲亲则诸父昆弟不怨,敬大臣则不眩,体群臣则士之报礼重,子庶民则百姓劝,来百工则财用足,柔远人则四方归之,怀诸侯则天下畏之。齐明盛服,非礼不动,所以修身也。去谗远色,贱货而贵德,所以劝贤也。尊其位,重其禄,同其好恶,所以劝亲亲也。官盛任使,所以劝大臣也。忠信重禄,所以劝士也。时使薄敛,所以劝百姓也。日省月试,既廪称事,所以劝百工也。送往迎来,嘉善而矜不能,所以柔远人也。继绝世,举废国,治乱持危,朝聘以时,厚往而薄来,所以怀诸侯也。凡为天下国家有九经,所以行之者一也。凡事豫则立,不豫则废。言前定则不跲,事前定则不困,行前定则不疚,道前定则不穷。在下位不获乎上,民不可得而治矣。获乎上有道,不信乎朋友,不获乎上矣。信乎朋友有道,不顺乎亲,不信乎朋友矣。顺乎亲有道,反诸身不诚,不顺乎亲矣。诚身有道,不明乎善,不诚乎身矣。诚者,天之道也;诚之者,人之道也。诚者不勉而中,不思而得,从容中道,圣人也。诚之者,择善而固执之者也。博学之,审问之,慎思之,明辨之,笃行之。有弗学,学之弗能弗措也;有弗问,问之弗知,弗措也;有弗思,思之弗得弗措也;有弗辨,辨之弗明弗措也;有弗行,行之弗笃弗措也。人一能之,己百之,人十能之,己千之。果能此道矣,虽愚必明,虽柔必强。

  

  自诚明谓之性,自明诚谓之教。诚则明矣,明则诚矣。

  

  唯天下至诚,为能尽其性;能尽其性,则能尽人之性;能尽人之性,则能尽物之性;能尽物之性,则可以赞天地之化育;可以赞天地之化育,则可以与天地参矣。

  

  其次致曲,曲能有诚。诚则形,形则著,著则明,明则动,动则变,变则化。唯天下至诚为能化。

  

  至诚之道可以前知。国家将兴,必有祯祥;国家将亡,必有妖孽。见乎蓍龟,动乎四体。祸福将至,善必先知之,不善必先知之。故至诚如神。

  

  诚者自成也,而道自道也。诚者物之终始,不诚无物。是故君子诚之为贵。诚者,非自成己而已也,所以成物也。成己,仁也;成物,知也。性之德也,合外内之道也。故时措之宜也。

  

  故至诚无息,不息则久,久则征,征则悠远,悠远则博厚,博厚则高明。博厚所以载物也,高明所以覆物也,悠久所以成物也。博厚配地,高明配天,悠久无疆。如此者不见而章,不动而变,无为而成。天地之道,可壹言而尽也:其为物不贰,则其生物不测。天地之道,博也,厚也,高也,明也,悠也,久也。今夫天,斯昭昭之多,及其无穷也,日月星辰系焉,万物覆焉。今夫地,一撮土之多,及其广厚,载华岳而不重,振河海而不泄,万物载焉。今夫山,一卷石之多,及其广大,草木生之,禽兽居之,宝藏兴焉。今夫水,一勺之多,及其不测,鼋鼍鲛龙鱼鳖生焉,货财殖焉。诗曰:“惟天之命,于穆不已。”盖曰天之所以为天也。“于乎不显,文王之德之纯”,盖曰文王之所以为文也,纯亦不已。

  

  大哉圣人之道!洋洋乎发育万物,峻极于天。优优大哉,礼仪三百,威仪三千,待其人然后行。故曰:“苟不至德,至道不凝焉。”故君子尊德性而道问学,致广大而尽精微,极高明而道中庸,温故而知新,敦厚以崇礼。是故居上不骄,为下不倍。国有道,其言足以兴,国无道,其默足以容。诗曰:“既明且哲,以保其身。”其此之谓与。

  

  子曰:“愚而好自用,贱而好自专,生乎今之世,反古之道,如此者灾及其身者也。”非天子不议礼,不制度,不考文,今天下车同轨,书同文,行同伦,虽有其位,苟无其德,不敢作礼乐焉。虽有其德,苟无其位,亦不敢作礼乐焉。子曰:“吾说夏礼,杞不足征也。吾学殷礼,有宋存焉。吾学周礼,今用之,吾从周。”

  

  王天下有三重焉,其寡过矣乎。上焉者,虽善无征,无征不信,不信民弗从。下焉者,虽善不尊,不尊不信,不信民弗从。故君子之道,本诸身,征诸庶民,考诸三王而不缪,建诸天地而不悖,质诸鬼神而无疑,百世以俟圣人而不惑。质诸鬼神而无疑,知天也;百世以俟圣人而不惑,知人也。是故君子动而世为天下道,行而世为天下法,言而世为天下则。远之则有望,近之则不厌。诗曰:“在彼无恶,在此无射。庶几夙夜,以永终誉。”君子未有不如此而蚤有誉于天下者也。

  

  仲尼祖述尧舜,宪章文武,上律天时,下袭水土。辟如天地之无不持载,无不覆帱,辟如四时之错行,如日月之代明。万物并育而不相害,道并行而不相悖。小德川流,大德敦化,此天地之所以为大也。唯天下至圣为能聪明睿知,足以有临也;宽裕温柔,足以有容也;发强刚毅,足以有执也;齐庄中正,足以有敬也;文理密察,足以有别也。溥博渊泉而时出之。溥博如天,渊泉如渊,见而民莫不敬,言而民莫不信,行而民莫不说。是以声名洋溢乎中国,施及蛮貊。舟车所至,人力所通,天之所覆,地之所载,日月所照,霜露所队,凡有血气者,莫不尊亲。故曰配天。

  

  唯天下至诚为能经纶天下之大经,立天下之大本,知天地之化育。夫焉有所倚?肫肫其仁,渊渊其渊,浩浩其天,苟不固聪明圣知达天德者,其孰能知之?

  

  诗曰:“衣锦尚絅。”恶其文之着也。故君子之道,闇然而日章;小人之道,的然而日亡。君子之道淡而不厌,简而文,温而理,知远之近,知风之自,知微之显,可与入德矣。诗云:“潜虽伏矣,亦孔之昭。”故君子内省不疚,无恶于志,君子所不可及者,其唯人之所不见乎?诗云:“相在尔室,尚不愧于屋漏。”故君子不动而敬,不言而信。诗曰:“奏假无言,时靡有争。”是故君子不赏而民劝,不怒而民威于鈇钺。诗曰:“不显惟德,百辟其刑之。”是故君子笃恭而天下平。诗曰:“予怀明德,不大声以色。”子曰:“声色之于以化民未也。”诗曰:“德輶如毛。”毛犹有伦,“上天之载,无声无臭”,至矣!

  
  
 
  《礼记礼器》

  礼器是故大备,大备,盛德也。礼释回,增美质,措则正,施则行。其在人也,如竹箭之有筠也,如松柏之有心也。二者居天下之大端矣,故贯四时而不改柯易叶。故君子有礼,则外谐而内无怨。故物无不怀仁,鬼神飨德。

  

  先王之立礼也,有本有文。忠信.礼之本也;义理,礼之文也。无本不立,无文不行。

  

  礼也者,合于天时,设于地财,顺于鬼神,合于人心,理万物者也。是故天时有生也,地理有宜也,人官有能也,物曲有利也。故天不生,地不养,君子不以为礼,鬼神弗飨也。居山以鱼鳖为礼,居泽以鹿豕为礼,君子谓之不知礼。故必举其定国之数,以为礼之大经、礼之大伦。以地广狭,礼之薄厚,与年之上下。是故年虽大杀,众不匡惧,则上之制礼也节矣。

  

  礼,时为大,顺次之,体次之,宜次之,称次之。尧授舜,舜授禹,汤放桀,武王伐纣,时也。诗云:“匪革其犹,聿追来孝。”

  

  天地之祭,宗庙之事,父子之道,君臣之义,伦也。

  

  社稷山川之事,鬼神之祭,体也。

  

  丧祭之用,宾客之交,义也。

  

  羔豚而祭,百官皆足,大牢而祭,不必有余,此之谓称也。诸侯以龟为宝,以圭为瑞。家不宝龟,不藏圭,不台门,言有称也。

  

  礼有以多为贵者。天子七庙,诸侯五,大夫三,士一。天子之豆二十有六,诸公十有六,诸侯十有二,上大夫八,下大夫六。诸侯七介七牢,大夫五介五牢。天子之席五重,诸侯之席三重,大夫再重。天子崩,七月而葬,五重八翣;诸侯五月而葬,三重六翣;大夫三月而葬,再重四翣。此以多为贵也。

  

  有以少为贵者。天子无介,祭天特牲。天子适诸侯,诸侯膳以犊。诸侯相朝,灌用郁鬯,无笾豆之荐。大夫聘礼以脯醢。天子一食,诸侯再,大夫士三。食力无数,大路繁缨一就,次路繁缨七就。圭璋特,琥璜爵,鬼神之祭单席。诸侯视朝,大夫持,士旅之。此以少为贵也。

  

  有以大为贵者。宫室之量,器皿之度,棺椁之厚,丘封之大。此以大为贵也。

  

  有以小为贵者。宗庙之祭,贵者献以爵,贱者献以散。尊者举觯,卑者举角。五献之尊,门外缶,门内壶,君尊瓦甒。此以小为贵也。

  

  有以高为贵者。天子之堂九尺,诸侯七尺,大夫五尺,士三尺。天子诸侯台门。此以高为贵也。

  

  有以下为贵者。至敬不坛,埽地而祭。天子诸侯之尊废禁,大夫士棜禁。此以下为贵也。

  

  礼有以文为贵者。天子龙衮,诸侯黼,大夫黻,士玄衣纁裳。天子之冕,朱绿藻,十有二旒,诸侯九,上大夫七,下大夫五,士三。此以文为贵也。

  

  有以素为贵者。至敬无文,父党无容,大圭不琢,大羹不和,大路素而越席,牺尊疏布鼏,樿杓。此以素为贵也。

  

  孔子曰:“礼不可不省也。礼不同,不丰,不杀。”此之谓也,盖言称也。

  

  礼之以多为贵者,以其外心者也。德发扬,诩万物,大理物博,如此则得不以多为贵乎?故君子乐其发也。礼之以少为贵者,以其内心者也。德产之致也精微,观天下之物,无可以称其德者,如此则得不以少为贵乎?是故君子慎其独也。

  

  古之圣人,内之为尊,外之为乐,少之为贵,多之为美。是故先王之制礼也,不可多也,不可寡也,唯其称也。

  

  是故君子大牢而祭,谓之礼。匹士大牢而祭,谓之攘。管仲镂簋,朱纮,山节,藻梲,君子以为滥矣。晏平仲祀其先人,豚肩不揜豆,澣衣濯冠以朝,君子以为隘矣。

  

  是故君子之行礼也,不可不慎也,众之纪也,纪散而众乱。孔子曰:“我战则克,祭则受福。”盖得其道矣。

  

  君子曰:“祭祀不祈,不麾蚤,不乐葆大,不善嘉事,牲不及肥大,荐不美多品。”

  

  孔子曰:“臧文仲安知礼?夏父弗綦,逆祀而弗止也,燔柴于奥。”夫奥者,老妇之祭也,盛于盆,尊于瓶。

  

  礼也者,犹体也,体不备,君子谓之不成人。设之不当,犹不备也。礼有大、有小、有显、有微,大者不可损,小者不可益,显者不可揜,微者不可大也。故经礼三百,曲礼三千,其致一也。未有入室而不由户者。君子之于礼也,有所竭情尽慎,致其敬而诚若,有美而文而诚若。君子之于礼也,有直而行也,有曲而杀也,有经而等也,有顺而讨也,有摲而播也,有推而进也,有放而文也,有放而不致也,有顺而摭也。

  

  三代之礼一也,民共由之,或素或青,夏造殷因。

  

  周坐尸,诏侑武力,其礼亦然,其道一也。夏立尸而卒祭,殷坐尸,周旅酬六尸。曾子曰:“周礼其犹醵与?”

  

  君子曰:“礼之近人情者,非其至者也。”郊血,大飨腥,三献爓,一献孰。是故君子之于礼也,非作而致其情也,此有由始也。是故七介以相见也,不然则已悫。三辞三让而至,不然则已蹙。故鲁人将有事于上帝,必先有事于頖宫。晋人将有事于河,必先有事于恶池。齐人将有事于泰山,必先有事于配林。三月系,七日戒,三日宿,慎之至也。

  

  故礼有摈诏,乐有相步,温之至也。

  

  礼也者,反本修古,不忘其初者也。故凶事不诏,朝事以乐。醴酒之用,玄酒之尚,割刀之用,鸾刀之贵,莞簟之安,而槁鞂之设。是故先王之制礼也,必有主也,故可述而多学也。

  

  君子曰:“无节于内者,观物弗之察矣。欲察物而不由礼,弗之得矣。”故作事不以礼,弗之敬矣!出言不以礼,弗之信矣!故曰:礼也者,物之致也。

  

  是故昔先王之制礼也,因其财物而致其义焉尔。故作大事必顺天时,为朝夕放于日月,为高必因丘陵,为下必因川泽。是故天时雨泽,君子达亹亹焉。

  

  是故昔先王尚有德,尊有道,任有能,举贤而置之,聚众而誓之。是故因天事天,因地事地,因名山升中于天,因吉土以飨帝于郊。升中于天而凤凰降,龟龙假,飨帝于郊而风雨节,寒暑时。是故圣人南面而立,而天下大治。

  

  天道至教,圣人至德。庙堂之上,罍尊在阼,牺尊在西;庙堂之下,县鼓在西,应鼓在东,君在阼,夫人在房。大明生于东,月生于西,此阴阳之分,夫妇之位也。

  

  君西酌牺象,夫人东酌罍尊,礼交动乎上,乐交应乎下,和之至也。

  

  礼也者,反其所自生。乐也者,乐其所自成。是故先王之制礼也以节事,修乐以道志。故观其礼乐而治乱可知也。

  

  蘧伯玉曰:“君子之人达。”故观其器而知其工之巧,观其发而知其人之知。故曰:君子慎其所以与人者。

  

  太庙之内敬矣。君亲牵牲,大夫赞币而从,君亲制祭,夫人荐盎,君亲割牲,夫人荐酒,卿大夫从君,命妇从夫人,洞洞乎其敬也,属属乎其忠也,勿勿乎其欲其飨之也。纳牲诏于庭,血毛诏于室,羹定诏于堂,三诏皆不同位,盖道求而未之得也。设祭于堂,为祊乎外。故曰:于彼乎!于此乎!

  

  一献质,三献文,五献察,七献神。

  

  大飨其王事与?三牲鱼腊,四海九州之美味也;笾豆之荐,四时之和气也;内金,示和也;束帛加璧,尊德也;龟为前列,先知也;金次之,见情也;丹、漆、丝、纩、竹、箭,与众共财也。其余无常货,各以其国之所有,则致远物也。其出也,肆夏而送之,盖重礼也。

  

  祀帝于郊,敬之至也。宗庙之祭,仁之至也。丧礼,忠之至也。备服器,仁之至也。宾客之用币,义之至也。故君子欲观仁义之道,礼其本也。

  

  君子曰:“甘受和,白受采,忠信之人可以学礼。苟无忠信之人,则礼不虚道。是以得其人之为贵也。”

  

  孔子曰:“诵诗三百,不足以一献。一献之礼,不足以大飨。大飨之礼,不足以大旅。大旅具矣,不足以飨帝。毋轻议礼。”

  

  子路为季氏宰,季氏祭,逮闇而祭,日不足,继之以烛,虽有强力之容、肃敬之心,皆倦怠矣!有司跛倚以临祭,其为不敬大矣!他日祭,子路与,室事交乎户,堂事交乎阶,质明而始行事,晏朝而退。孔子闻之,曰:“谁谓由也而不知礼乎?”

  
  《礼记礼运》

  昔者仲尼与于蜡宾,事毕,出游于观之上,喟然而叹。仲尼之叹,盖叹鲁也。言偃在侧,曰:“君子何叹?”孔子曰:“大道之行也,与三代之英,丘未之逮也,而有志焉。大道之行也,天下为公,选贤与能,讲信修睦。故人不独亲其亲,不独子其子,使老有所终,壮有所用,幼有所长,矜寡孤独废疾者皆有所养,男有分,女有归。货恶其弃于地也,不必藏于已;力恶其不出于身也,不必为已。是故谋闭而不兴,盗窃乱贼而不作,故外户而不闭。是谓大同。今大道既隐,天下为家,各亲其亲,各子其子,货力为已,大人世及以为礼,域郭沟池以为固,礼义以为纪,以正君臣,以笃父子,以睦兄弟,以和夫妇,以设制度,以立田里,以贤勇知,以功为已。故谋用是作,而兵由此起。禹、汤、文、武、成王、周公由此其选也。此六君子者,未有不谨于礼者也。以着其义,以考其信,着有过,刑仁讲让,示民有常,如有不由此者,在埶者去,众以为殃。是谓小康。”

  

  言偃复问曰:“如此乎礼之急也?”孔子曰:“夫礼,先王以承天之道,以治人之情,故失之者死,得之者生。诗曰:‘相鼠有体,人而无礼。人而无礼,胡不遄死?’是故夫礼,必本于天,殽于地,列于鬼神,达于丧祭射御、冠昏朝聘。故圣人以礼示之,故天下国家可得而正也。”

  

  言偃复问曰:“夫子之极言礼也,可得而闻与?”孔子曰:“我欲观夏道,是故之杞,而不足征也,吾得夏时焉。我欲观殷道,是故之宋,而不足征也,吾得坤干焉。坤干之义,夏时之等,吾以是观之。”

  

  夫礼之初,始诸饮食。其燔黍捭豚,污尊而抔饮,蒉桴而土鼓,犹若可以致其敬于鬼神。及其死也,升屋而号,告曰:“皋某复。”然后饭腥而苴孰,故天望而地藏也。体魄则降,知气在上,故死者北首,生者南乡,皆从其初。

  

  昔者先王未有宫室,冬则居营窟,夏则居橧巢。未有火化,食草木之实、鸟兽之肉,饮其血,茹其毛。未有麻丝,衣其羽皮。

  

  后圣有作,然后修火之利,范金合土以为台榭宫室牖户,以炮,以燔,以亨,以炙,以为醴酪,治其麻丝,以为布帛,以养生送死,以事鬼神上帝,皆从其朔。

  

  故玄酒在室,醴醆在户,粢醍在堂,澄酒在下。陈其牺牲,备其鼎俎,列其琴瑟管磬钟鼓,修其祝嘏,以降上神与其先祖,以正君臣,以笃父子,以睦兄弟,以齐上下,夫妇有所,是谓承天之祜。

  

  作其祝号,玄酒以祭,荐其血毛,腥其俎,孰其殽,与其越席,疏布以幂,衣其澣帛,醴醆以献,荐其燔炙。君与夫人交献,以嘉魂魄,是谓合莫。

  

  然后退而合亨,体其犬豕牛羊,实其簠簋笾豆铏羹,祝以孝告,嘏以慈告,是谓大祥。此礼之大成也。

  

  孔子曰:“于呼哀哉!我观周道,幽厉伤之,吾舍鲁何适矣!鲁之郊禘,非礼也,周公其衰矣!杞之郊也,禹也;宋之郊也,契也。是天子之事守也。故天子祭天地,诸侯祭社稷。”

  

  祝嘏莫敢易其常古,是谓大假。

  

  祝嘏辞说,藏于宗祝巫史,非礼也,是谓幽国。醆斝及尸君,非礼也,是谓僭君。

  

  冕弁兵革,藏于私家,非礼也,是谓胁君。

  

  大夫具官,祭器不假,声乐皆具,非礼也,是谓乱国。

  

  故仕于公曰臣,仕于家曰仆。三年之丧,与新有昏者,期不使。以衰裳入朝,与家仆杂居齐齿,非礼也,是谓君与臣同国。故天子有田以处其子孙,诸侯有国以处其子孙,大夫有采以处其子孙,是谓制度。故天子适诸侯,必舍其祖庙,而不以礼籍入,是谓天子坏法乱纪,诸侯非问疾吊丧,而入诸臣之家,是谓君臣为谑。

  

  是故礼者君之大柄也,所以别嫌明微,傧鬼神,考制度,别仁义,所以治政安君也。故政不正则君位危,君位危则大臣倍、小臣窃。刑肃而俗敝,则法无常,法无常而礼无列,无礼列则士不事也。刑肃而俗敝,则民弗归也,是谓疵国。

  

  故政者,君之所以藏身也。是故夫政必本于天,殽以降命。命降于社之谓殽地,降于祖庙之谓仁义,降于山川之谓兴作,降于五祀之谓制度,此圣人所以藏身之固也。故圣人参于天地、并于鬼神以治政也。处其所存,礼之序也;玩其所乐,民之治也。故天生时而地生财,人其父生而师教之。四者君以正用之,故君者立于无过之地也。

  

  故君者所明也,非明人者也;君者所养也,非养人者也;君者所事也,非事人者也。故君明人则有过,养人则不足,事人则失位。故百姓则君以自治也,养君以自安也,事君以自显也。故礼达而分定,故人皆爱其死而患其生。

  

  故用人之知去其诈,用人之勇去其怒,用人之仁去其贪。

  

  故国有患,君死社稷,谓之义,大夫死宗庙,谓之变。

  

  故圣人耐以天下为一家,以中国为一人者,非意之也,必知其情,辟于其义,明于其利,达于其患,然后能为之。

  

  何谓人情?喜、怒、哀、惧、爱、恶、欲,七者弗学而能。何谓人义?父慈、子孝、兄良、弟弟、夫义、妇听、长惠、幼顺、君仁、臣忠,十者谓之人义。讲信修睦,谓之人利,争夺相杀,谓之人患。故圣人之所以治人七情,修十义,讲信修睦,尚辞让,去争夺,舍礼何以治之?饮食男女,人之大欲存焉;死亡贫苦,人之大恶存焉。故欲恶者,心之大端也。人藏其心,不可测度也。美恶皆在其心,不见其色也,欲一以穷之,舍礼何以哉?

  

  故人者,其天地之德、阴阳之交、鬼神之会、五行之秀气也。

  

  故天秉阳,垂日星,地秉阴,窍于山川,播五行于四时,和而后月生也。是以三五而盈,三五而阙,五行之动,迭相竭也。五行、四时、十二月,还相为本也。五声、六律、十二管,还相为宫也。五味、六和、十二食,还相为质也。五色、六章、十二衣,还相为质也。

  

  故人者,天地之心也,五行之端也。食味、别声、被色而生者也。故圣人作则,必以天地为本,以阴阳为端,以四时为柄,以日星为纪,月以为量,鬼神以为徒,五行以为质,礼义以为器,人情以为田,四灵以为畜。以天地为本,故物可举也。以阴阳为端,故情可睹也。以四时为柄,故事可劝也。以日星为纪,故事可列也。月以为量,故功有艺也。鬼神以为徒,故事有守也。五行以为质,故事可复也。礼义以为器,故事行有考也。人情以为田,故人以为奥也。四灵以为畜,故饮食有由也。何谓四灵?麟凤龟龙谓之四灵。故龙以为畜,故鱼鲔不淰。凤以为畜,故鸟不獝。麟以为畜,故兽不狘。龟以为畜,故人情不失。

  

  故先王秉蓍龟,列祭祀,瘗缯,宣祝嘏辞说,设制度,故国有礼,官有御,事有职,礼有序。

  

  故先王患礼之不达于下也。

  

  故祭帝于郊,所以定天位也;祀社于国,所以列地利也;祖庙,所以本仁也;山川,所以傧鬼神也;五祀,所以本事也。故宗祝在庙,三公在朝,三老在学,王前巫而后史,卜巫瞽侑,皆在左右。王中,心无为也,以守至正。

  

  故礼行于郊,而百神受职焉;礼行于社,而百货可极焉;礼行于祖庙,而孝慈服焉;礼行于五祀,而正法则焉。故自郊社、祖庙、山川、五祀,义之修而礼之藏也。

  

  是故夫礼,必本于大一,分而为天地,转而为阴阳,变而为四时,列而为鬼神,其降曰命,其官于天也。

  

  夫礼必本于天,动而之地,列而之事,变而从时,协于分艺。其居人也曰养,其行之以货力、辞让、饮食、冠昏、丧祭、射御、朝聘。

  

  故礼义也者,人之大端也,所以讲信修睦,而固人之肌肤之会、筋骸之朿也。所以养生、送死、事鬼神之大端也,所以达天道,顺人情之大窦也。

  

  故唯圣人为知礼之不可以已也。故坏国、丧家、亡人,必先去其礼。故礼之于人也,犹酒之有櫱也,君子以厚,小人以薄。

  

  故圣王修义之柄、礼之序以治人情。故人情者,圣王之田也。修礼以耕之,陈义以种之,讲学以耨之,本仁以聚之,播乐以安之。故礼也者,义之实也,协诸义而协,则礼虽先王未之有,可以义起也。义者,艺之分、仁之节也。协于艺,讲于仁,得之者强。仁者义之本也,顺之体也,得之者尊。故治国不以礼,犹无耜而耕也;为礼不本于义,犹耕而弗种也;为义而不讲之以学,犹种而弗耨也;讲之于学而不合之以仁,犹耨而弗获也;合之以仁而不安之以乐,犹获而弗食也;安之以乐而不达于顺,犹食而弗肥也。四体既正,肤革充盈,人之肥也。父子笃,兄弟睦,夫妇和,家之肥也。大臣法,小臣廉,官职相序,君臣相正,国之肥也。天子以德为车,以乐为御,诸侯以礼相与,大夫以法相序,士以信相考,百姓以睦相守,天下之肥也。是谓大顺。大顺者,所以养生、送死、事鬼神之常也。故事大积焉而不苑,并行而不缪,细行而不失,深而通,茂而有间,连而不相及也,动而不相害也。此顺之至也。故明于顺,然后能守危也。

  

  故礼之不同也,不丰也,不杀也,所以持情而合危也。故圣王所以顺,山者不使居川,不使渚者居中原,而弗敝也。用水、火、金、木,饮食必时,合男女、颁爵位必当年德,用民必顺,故无水旱昆虫之灾,民无凶饥妖孽之疾。故天不爱其道,地不爱其宝,人不爱其情。天降膏露,地出醴泉,山出器车,河出马图,凤皇麒麟,皆在郊棷。龟龙在宫沼,其余鸟兽之卵胎,皆可俯而窥也。则是无故,先王能修礼以达义,体信以达顺,故此顺之实也。

  
  里仁第四

  

  子曰:“里仁为美。择不处仁,焉得知?”子曰:“不仁者不可以久处约,不可以长处乐。仁者安仁,知者利仁。”

  子曰:“唯仁者能好人,能恶人。”

  子曰:“苟志于仁矣,无恶也。”

  子曰:“富与贵,是人之所欲也;不以其道得之,不处也。贫与贱,是人之所恶也;不以其道得之,不去也。君子去仁,恶乎成名?君子无终食之间违仁,造次必于是,颠沛必于是。”

  子曰:“我未见好仁者,恶不仁者。好仁者,无以尚之;恶不仁者,其为仁矣,不使不仁者加乎其身。有能一日用其力于仁矣乎?我未见力不足者。盖有之矣,我未之见也。”

  子曰:“人之过也,各于其党。观过,斯知仁矣。”

  子曰:“朝闻道,夕死可矣。”

  子曰:“士志于道,而耻恶衣恶食者,未足与议也。”

  子曰:“君子之于天下也,无适也,无莫也,义之与比。”

  子曰:“君子怀德,小人怀土;君子怀刑,小人怀惠。”

  子曰:“放于利而行,多怨。”

  子曰:“能以礼让为国乎?何有!不能以礼让为国,如礼何?”子曰:“不患无位,患所以立;不患莫己知,求为可知也。”

  子曰:“参乎!吾道一以贯之。”曾子曰:“唯。”子出,门人问曰:“何谓也?”曾子曰:“夫子之道,忠恕而已矣!”子曰:“君子喻于义,小人喻于利。”

  子曰:“见贤思齐焉,见不贤而内自省也。”

  子曰:“事父母几谏,见志不从,又敬不违,劳而不怨。”

  子曰:“父母在,不远游,游必有方。”

  子曰:“三年无改于父之道,可谓孝矣。”

  子曰:“父母之年,不可不知也。一则以喜,一则以惧。”

  子曰:“古者言之不出,耻躬之不逮也。”

  子曰:“以约失之者鲜矣!”子曰:“君子欲讷于言而敏于行。”

  子曰:“德不孤,必有邻。”

  子游曰:“事君数,斯辱矣;朋友数,斯疏矣。”

  
!!鲁颂 駉之什 有駜

有駜有駜,駜彼乘黄。夙夜在公,在公明明。振振鹭,鹭于下。鼓咽咽,醉言舞。于胥乐兮!

有駜有駜,駜彼乘牡。夙夜在公,在公饮酒。振振鹭,鹭于飞。鼓咽咽,醉言归。于胥乐兮!

有駜有駜,駜彼乘駽。夙夜在公,在公载燕。自今以始,岁其有。

君子有穀,诒孙子。于胥乐兮!

!!鲁颂 駉之什 泮水

思乐泮水,薄采其芹。鲁侯戾止,言观其旂。其旂茷々,鸾声哕哕。无小无大,从公于迈。

思乐泮水,薄采其藻。鲁侯戾止,其马蹻々。其马蹻々,其音昭昭。载色载笑,匪怒伊教。

思乐泮水,薄采其茆。鲁侯戾止,在泮饮酒。既饮旨酒,永锡难老。顺彼长道,屈此群丑。

穆穆鲁侯,敬明其德。敬慎威仪,维民之则。允文允武,昭假烈祖。靡有不孝,自求伊祜。

明明鲁侯,克明其德。既作泮宫,淮夷攸服。矫矫虎臣,在泮献馘。淑问如皋陶,在泮献囚。

济济多士,克广德心。桓桓于征,狄彼东南。烝烝皇皇,不吴不扬。不告于訩,在泮献功。

角弓其觩。束矢其搜。戎车孔博。徒御无斁。既克淮夷,孔淑不逆。式固尔犹,淮夷卒获。

翩彼飞鸮,集于泮林。食我桑黮,怀我好音。憬彼淮夷,来献其琛。元龟象齿,大赂南金。

!!鲁颂 駉之什 閟宫

閟宫有侐,实实枚枚。赫赫姜嫄,其德不回。上帝是依,无灾无害。弥月不迟,是生后稷。降之百福。黍稷重穋,稙稚菽麦。奄有下国,俾民稼穑。有稷有黍,有稻有秬。奄有下土,缵禹之绪。

后稷之孙,实维大王。居岐之阳,实始翦商。至于文武,缵大王之绪,致天之届,于牧之野。无贰无虞,上帝临女。敦商之旅,克咸厥功。王曰叔父,建尔元子,俾侯于鲁。大启尔宇,为周室辅。

乃命鲁公,俾侯于东。锡之山川,土田附庸。周公之孙,庄公之子。龙旂承祀。六辔耳耳。春秋匪解,享祀不忒。皇皇后帝!皇祖后稷!享以骍犠,是飨是宜。降福既多,周公皇祖,亦其福女。

秋而载尝,夏而楅衡,白牡骍刚。犠尊将将,毛炰胾羹。笾豆大房,万舞洋洋。孝孙有庆。俾尔炽而昌,俾尔寿而臧。保彼东方,鲁邦是尝。不亏不崩,不震不腾。三寿作朋,如冈如陵。

公车千乘,朱英绿縢。二矛重弓。公徒三万,贝胄朱綅。烝徒增增,戎狄是膺,荆舒是惩,则莫我敢承!俾尔昌而炽,俾尔寿而富。黄发台背,寿胥与试。俾尔昌而大,俾尔耆而艾。万有千岁,眉寿无有害。

泰山岩岩,鲁邦所詹。奄有龟蒙,遂荒大东。至于海邦,淮夷来同。莫不率从,鲁侯之功。

保有凫绎,遂荒徐宅。至于海邦,淮夷蛮貊。及彼南夷,莫不率从。莫敢不诺,鲁侯是若。

天锡公纯嘏,眉寿保鲁。居常与许,复周公之宇。鲁侯燕喜,令妻寿母。宜大夫庶士,邦国是有。既多受祉,黄发儿齿。

徂徕之松,新甫之柏。是断是度,是寻是尺。松桷有舄,路寝孔硕,新庙奕奕。奚斯所作,孔曼且硕,万民是若。
  [[学而第一]]

  [[为政第二]]

  [[八佾第三]]

  [[里仁第四]]

  [[公冶长第五]]

  [[雍也第六]]

  [[述而第七]]

  [[泰伯第八]]

  [[子罕第九]]

  [[乡党第十]]

  [[先进第十一]]

  [[颜渊第十二]]

  [[子路第十三]]

  [[宪问第十四]]

  [[卫灵公第十五]]

  [[季氏第十六]]

  [[阳货第十七]]

  [[微子第十八]]

  [[子张第十九]]

  [[尧曰第二十]]

  
!!孟子

  [[卷一 梁惠王上]]

  [[卷二 梁惠王下]]

  [[卷三 公孙丑上]]

  [[卷四 公孙丑下]]

  [[卷五 滕文公上]]

  [[卷六 滕文公下]]

  [[卷七 离娄上]]

  [[卷八 离娄下]]

  [[卷九 万章上]]

  [[卷十 万章下]]

  [[卷十一 告子上]]

  [[卷十二 告子下]]

  [[卷十三 尽心上]]

  [[卷十四 尽心下]]

  



  闵公(元年~二年)

  

  !闵公元年

  【经】元年春王正月。齐人救邢。夏六月辛酉,葬我君庄公。秋八月,公及齐侯盟于落姑。季子来归。冬,齐仲孙来。

  

  【传】元年春,不书即位,乱故也。

  狄人伐邢。管敬仲言于齐侯曰:“戎狄豺狼,不可厌也。诸夏亲暱,不可弃也。宴安鸩毒,不可怀也。《诗》云:‘岂不怀归,畏此简书。’简书,同恶相恤之谓也。请救邢以从简书。”齐人救邢。

  夏六月,葬庄公,乱故,是以缓。

  秋八月,公及齐侯盟于落姑,请复季友也。齐侯许之,使召诸陈,公次于郎以待之。“季子来归”,嘉之也。

  冬,齐仲孙湫来省难。书曰“仲孙”,亦嘉之也。

  仲孙归曰:“不去庆父,鲁难未已。”公曰:“若之何而去之?”对曰:“难不已,将自毙,君其待之。”公曰:“鲁可取乎?”对曰:“不可,犹秉周礼。周礼,所以本也。臣闻之,国将亡,本必先颠,而后枝叶从之。鲁不弃周礼,未可动也。君其务宁鲁难而亲之。亲有礼,因重固,间携贰,覆昏乱,霸王之器也。”

  晋侯作二军,公将上军,大子申生将下军。赵夙御戎,毕万为右,以灭耿、灭霍、灭魏。还,为大子城曲沃。赐赵夙耿,赐毕万魏,以为大夫。

  士蒍曰:“大子不得立矣,分之都城而位以卿,先为之极,又焉得立。不如逃之,无使罪至。为吴大伯,不亦可乎?犹有令名,与其及也。且谚曰:‘心苟无瑕,何恤乎无家。’天若祚大子,其无晋乎。”

  卜偃曰:“毕万之后必大。万,盈数也;魏,大名也;以是始赏,天启之矣。

  天子曰兆民,诸侯曰万民。今名之大,以从盈数,其必有众。”

  初,毕万筮仕于晋,遇《屯》ⅴⅲ之《比》ⅴⅰ。辛廖占之,曰:“吉。

  《屯》固《比》入,吉孰大焉?其必蕃昌。《震》为土,车从马,足居之,兄长之,母覆之,众归之,六体不易,合而能固,安而能杀。公侯之卦也。公侯之子孙,必复其始。”

  

  

  !闵公二年

  【经】二年春王正月,齐人迁阳。夏五月乙酉,吉禘于庄公。秋八月辛丑,公薨。九月,夫人姜氏孙于邾。公子庆父出奔莒。冬,齐高子来盟。十有二月,狄入卫。郑弃其师。

  

  【传】二年春,虢公败犬戎于渭汭。舟之侨曰:“无德而禄,殃也。殃将至矣。”遂奔晋。

  夏,吉禘于庄公,速也。

  初,公傅夺卜齮田,公不禁。

  秋八月辛丑,共仲使卜齮贼公于武闱。成季以僖公适邾。共仲奔莒,乃入,立之。以赂求共仲于莒,莒人归之。及密,使公子鱼请,不许。哭而往,共仲曰:“奚斯之声也。”乃缢。

  闵公,哀姜之娣叔姜之子也,故齐人立之。共仲通于哀姜,哀姜欲立之。闵公之死也,哀姜与知之,故孙于邾。齐人取而杀之于夷,以其尸归,僖公请而葬之。

  成季之将生也,桓公使卜楚丘之父卜之。曰:“男也。其名曰友,在公之右。

  间于两社,为公室辅。季氏亡,则鲁不昌。”又筮之,遇《大有》ⅵⅰ之《乾》ⅰⅰ,曰:“同复于父,敬如君所。”及生,有文在其手曰“友”,遂以命之。

  冬十二月,狄人伐卫。卫懿公好鹤,鹤有乘轩者。将战,国人受甲者皆曰:“使鹤,鹤实有禄位,余焉能战!”公与石祁子玦,与宁庄子矢,使守,曰:“以此赞国,择利而为之。”与夫人绣衣,曰:“听于二子。”渠孔御戎,子伯为右,黄夷前驱,孔婴齐殿。及狄人战于荧泽,卫师败绩,遂灭卫。卫侯不去其旗,是以甚败。狄人囚史华龙滑与礼孔以逐卫人。二人曰:“我,大史也,实掌其祭。不先,国不可得也。”乃先之。至则告守曰:“不可待也。”夜与国人出。

  狄入卫,遂从之,又败诸河。

  初,惠公之即位也少,齐人使昭伯烝于宣姜,不可,强之。生齐子、戴公、文公、宋桓夫人、许穆夫人。文公为卫之多患也,先适齐。及败,宋桓公逆诸河,宵济。卫之遗民男女七百有三十人,益之以共、滕之民为五千人,立戴公以庐于曹。许穆夫人赋《载驰》。齐侯使公子无亏帅车三百乘、甲士三千人以戍曹。归公乘马,祭服五称,牛羊豕鸡狗皆三百,与门材。归夫人鱼轩,重锦三十两。

  郑人恶高克,使帅师次于河上,久而弗召。师溃而归,高克奔陈。郑人为之赋《清人》。

  晋侯使大子申生伐东山皋落氏。里克谏曰:“大子奉冢祀,社稷之粢盛,以朝夕视君膳者也,故曰冢子。君行则守,有守则从。从曰抚军,守曰监国,古之制也。夫帅师,专行谋,誓车旅,君与国政之所图也,非大子之事也。师在制命而已。禀命则不威,专命则不孝。故君之嗣适不可以帅师。君失其官,帅师不威,将焉用之。且臣闻皋落氏将战,君其舍之。”公曰:“寡人有子,未知其谁立焉。”

  不对而退。

  见大子,大子曰:“吾其废乎?”对曰:“告之以临民,教之以军旅,不共是惧,何故废乎?且子惧不孝,无惧弗得立,修己而不责人,则免于难。”

  大子帅师,公衣之偏衣,佩之金玦。狐突御戎,先友为右,梁余子养御罕夷,先丹木为右。羊舌大夫为尉。光友曰:“衣身之偏,握兵之要,在此行也,子其勉之。偏躬无慝,兵要远灾,亲以无灾,又何患焉!”狐突叹曰:“时,事之征也;衣,身之章也;佩,衷之旗也。故敬其事则命以始,服其身则衣之纯,用期衷则佩之度。今命以时卒,閟其事也;衣之尨服,远其躬也;佩以金玦,弃其衷也。服以远之,时以閟之,尨凉冬杀,金寒玦离,胡可恃也?虽欲勉之,狄可尽乎?”梁余子养曰:帅师者受命于庙,受脤于社,有常服矣。不获而龙,命可知也。死而不孝,不如逃之。”罕夷曰:“尨奇无常,金玦不复,虽复何为,君有心矣。”先丹木曰:“是服也。狂夫阻之。曰‘尽敌而反’,敌可尽乎!虽尽敌,犹有内谗,不如违之。”狐突欲行。羊舌大夫曰:“不可。违命不孝,弃事不忠。

  虽知其寒,恶不可取,子其死之。”

  大子将战,狐突谏曰:“不可,昔辛伯谂周桓公云:‘内宠并后,外宠二政,嬖子配適,大都耦国,乱之本也。’周公弗从,故及于难。今乱本成矣,立可必乎?孝而安民,子其图之,与其危身以速罪也。”

  成风闻成季之繇,乃事之,而属僖公焉,故成季立之。

  僖之元年,齐桓公迁邢于夷仪。二年,封卫于楚丘。邢迁如归,卫国忘亡。

  卫文公大布之衣,大帛之冠,务材训农,通商惠工,敬教劝学,授方任能。

  元年革车三十乘,季年乃三百乘。
  《礼记明堂位》

  昔者周公朝诸侯于明堂之位,天子负斧依南乡而立。三公,中阶之前北面东上,诸侯之位,阼阶之东西面北上,诸伯之国,西阶之西东面北上,诸子之国,门东北面东上,诸男之国,门西北面东上,九夷之国,东门之外西面北上,八蛮之国,南门之外北面东上,六戎之国,西门之外东面南上,五狄之国,北门之外南面东上,九采之国,应门之外北面东上。四塞世告至,此周公明堂之位也。明堂也者,明诸侯之尊卑也。

  

  昔殷纣乱天下,脯鬼侯以飨诸侯,是以周公相武王以伐纣。武王崩,成王幼弱,周公践天子之位以治天下。六年,朝诸侯于明堂,制礼作乐,颁度量,而天下大服。七年,致政于成王。

  

  成王以周公为有勋劳于天下,是以封周公于曲阜。地方七百里,革车千乘,命鲁公世世祀周公以天子之礼乐。是以鲁君孟春乘大路,载弧韣,旗十有二旒,日月之章,祀帝于郊,配以后稷,天子之礼也。

  

  季夏六月,以禘礼祀周公于大庙。牲用白牡,尊用牺象山罍,郁尊用黄目,灌用玉瓒大圭,荐用玉豆雕篹,爵用玉琖仍雕,加以璧散璧角,俎用梡嶡。升歌清庙,下管象,朱干玉戚,冕而舞大武,皮弁素积,裼而舞大夏。昧,东夷之乐也。任,南蛮之乐也。纳夷蛮之乐于大庙,言广鲁于天下也。

  

  君卷冕立于阼,夫人副袆立于房中。君肉袒迎牲于门,夫人荐豆笾,卿大夫赞君,命妇赞夫人,各扬其职。百官废职服大刑,而天下大服。

  

  是故,夏礿,秋尝,冬烝,春社,秋省,而遂大蜡,天子之祭也。

  

  大庙,天子明堂。库门,天子皋门。雉门,天子应门。

  

  振木铎于朝,天子之政也。

  

  山节藻梲、复庙重檐、刮楹达乡、反坫出尊、崇坫康圭疏屏,天子之庙饰也。

  

  鸾车,有虞氏之路也。钩车,夏后氏之路也。大路,殷路也。乘路,周路也。

  

  有虞氏之旗,夏后氏之绥,殷之大白,周之大赤。

  

  夏后氏骆马黑鬣,殷人白马黑首,周人黄马蕃鬣。

  

  夏后氏牲尚黑,殷白牝,周骍刚。

  

  泰,有虞氏之尊也。山罍,夏后氏之尊也。着,殷尊也。牺象,周尊也。

  

  爵,夏后氏以琖,殷以斝,周以爵。

  

  灌尊,夏后氏以鸡夷,殷以斝,周以黄目。

  

  其勺,夏后氏以龙勺,殷以疏勺,周以蒲勺。

  

  士鼓,蒉桴,苇钥,伊耆氏之乐也。拊搏,玉磬,揩击,大琴,大瑟,中琴,小瑟,四代之乐器也。

  

  鲁公之庙,文世室也。武公之庙,武世室也。

  

  米廪,有虞氏之庠也。序,夏后氏之序也。瞽宗,殷学也。頖宫,周学也。

  

  祟鼎,贯鼎,大璜,封父龟,天子之器也。越棘大弓,天子之戎器也。

  

  夏后氏之鼓足,殷楹鼓,周县鼓。

  

  垂之和钟,叔之离磬,女娲之笙璜。

  

  夏后氏之龙簨虡,殷之崇牙,周之璧翣,有虞氏之两敦,夏后氏之四连,殷之六瑚,周之八簋。

  

  俎有虞氏以梡,夏后氏以嶡,殷以棋,周以房俎。

  

  夏后氏以揭豆,殷玉豆,周献豆。

  

  有虞氏服韨,夏后氏山,殷火,周龙章。

  

  有虞氏祭首,夏后氏祭心,殷祭肝,周祭肺。

  

  夏后氏尚明水,殷尚醴,周尚酒。

  

  有虞氏官五十,夏后氏官百,殷二百,周三百。

  

  有虞氏之绥,夏后氏之绸练,殷之崇牙,周之璧翣。凡四代之服器官,鲁兼用之,是故鲁王礼也,天下传之久矣。君臣未尝相弒也,礼乐刑法政俗未尝相变也,天下以为有道之国,是故天下资礼乐焉。

  
<div class="tc-table-of-contents">

<<toc-selective-expandable '目录'>>

</div>
!关于内容分享声明

我们基于“''内容希望被共享''”的理念,创建了伯乐手册,从而鼓励内容被更多的分享传播。

在鼓励分享内容的同时,我们也希望内容创作者的权利得到保护。


因此,我们参考[[CC知识共享协议|http://creativecommons.net.cn/]]提出内容共享声明,并提倡内容分享者在发布内容时,选择三种声明中的任意一种,从而保护自己的权利。



!第一种声明:

署名-相同方式分享-维权代理

!第二种声明:

禁止商用-署名-相同方式分享-维权代理

!第三种声明

禁止商用-禁止演绎-署名-相同方式分享-维权代理


!关于上述声明中五项条件的说明:

!!署名
*其他任何人在使用用户所分享的内容时,必须提到原作者

!!禁止商用

*不得用于盈利性目的

!!禁止演绎

*不得修改原作品, 不得再创作

!!相同方式分享

*在分享内容时,必须使用和原作相同的内容分享声明,且该声明的内容必须在作品中显著位置展示。

!!维权代理

*如果在使用包含了[[内容分享声明|http://www.bolebook.com/#ContentShareStatements]]的内容时,违反了内容分享声明,则内容创作者将委托律师或其他维权组织作为维权代理。


!对内容分享声明的解释:

内容分享声明,是内容创作者(包含原创者、再创作者)在发布内容时同步发布的声明。

声明的目的在于鼓励内容更多的被分享,同时要求内容使用者尊重内容创作者的权利。

!!补充条款(仅适用于伯乐手册上分享的内容):


*一、''如果内容创作者没有主动声明'',则__''默认采用第一种声明。''__

*二、如果内容创作者没有事先指定,即默认[[伯乐手册|http://www.bolebook.com]]作为维权代理。当然,内容创作者可以根据自己的要求更换维权代理

以上协议的正式法律文本未来将会补充完整。







  《礼记内则》

  后王命冢宰降德于众兆民。

  

  子事父母,鸡初鸣,咸盥漱,栉縰笄总,拂髦,冠緌缨,端縪绅,搢笏。左右佩用:左佩纷、帨、刀砺、小觿、金燧,右佩玦、捍、管、遰、大觿、木燧。偪,屦着綦。

  

  妇事舅姑,如事父母。鸡初鸣,咸盥漱,栉縰笄总,衣绅,左佩纷、帨、刀砺、小觿、金燧,右佩箴、管、线、纩,施縏袠,大觿,木燧,衿缨綦屦,以适父母舅姑之所。及所,下气怡声,问衣燠寒。疾痛苛痒,而敬抑搔之。出入,则或先或后,而敬扶持之。进盥,少者奉盘,长者奉水,请沃盥。盥卒,授巾。问所欲而敬进之,柔色以温之。饘、酏、酒、醴、芼、羹、菽、麦、蕡、稻、黍、梁、秫唯所欲,枣、栗、饴、蜜以甘之,堇、荁、枌、榆、免、薧、滫、瀡以滑之,脂膏以膏之。父母舅姑必尝之而后退。

  

  男女未冠笄者,鸡初鸣,咸盥漱,栉縰,拂髦,总角,衿缨,皆佩容臭,昧爽而朝,问何食饮矣?若已食则退,若未食,则佐长者视具。

  

  凡内外,鸡初鸣,咸盥漱,衣服,敛枕簟,洒扫室堂及庭,布席,各从其事。

  

  孺子蚤寝晏起,唯所欲,食无时。

  

  由命士以上,父子皆异宫,昧爽而朝,慈以旨甘,日出而退,各从其事,日入而夕,慈以旨甘。

  

  父母舅姑将坐,奉席请何乡。将衽,长者奉席请何趾,少者执床与坐,御者举几,敛席与簟,县衾,箧枕,敛簟而襡之。

  

  父母舅姑之衣、衾、簟、席、枕、几,不传。杖、屦,祗敬之,勿敢近。敦牟卮匜,非馂莫敢用。与恒食饮,非馂莫之敢饮食。

  

  父母在,朝夕恒食,子妇佐馂,既食恒馂。父没母存,冢子御食,群子妇佐馂如初。旨甘柔滑,孺子馂。

  

  在父母舅姑之所,有命之,应唯,敬对,进退周旋慎齐,升降出入揖游,不敢哕噫、嚏咳、欠伸、跛倚、睇视,不敢唾洟,寒不敢袭,痒不敢搔,不有敬事,不敢袒裼,不涉不撅,亵衣衾不见。

  

  父母唾洟不见。冠带垢,和灰请漱。衣裳垢,和灰请澣。衣裳绽裂,纫箴请补缀。五日则燂汤请浴,三日具沐。其间而垢,燂潘请靧。足垢,燂汤请洗。少事长,贱事贵,共帅时。

  

  男不言内,女不言外。非祭非丧,不相授器,其相授,则女受以篚。其无篚,则皆坐,奠之而后取之。外内不共井,不共湢浴,不通寝席,不通乞假,男女不通衣裳。内言不出,外言不入。男子入内,不啸不指。夜行以烛,无烛则止。女子出门,必拥蔽其面,夜行以烛,无烛则止。道路,男子由右,女子由左。

  

  子妇孝者敬者,父母舅姑之命,勿逆勿怠。若饮食之,虽不耆,必尝而待。加之衣服,虽不欲,必服而待。加之事,人代之,己虽弗欲,姑与之而姑使之,而后复之。子妇有勤劳之事,虽甚爱之,姑纵之,而宁数休之。子妇未孝未敬,勿庸疾怨,姑教之,若不可教,而后怒之,不可怒,子放妇出,而不表礼焉。

  

  父母有过,下气怡色,柔声以谏。谏若不入,起敬起孝。说则复谏,不说,与其得罪于乡党州闾,宁孰谏。父母怒,不说,而挞之流血,不敢疾怨,起敬起孝。

  

  父母有婢子,若庶子庶孙,甚爱之,虽父母没,没身敬之不衰。子有二妾,父母爱一人焉,子爱一人焉,由衣服饮食,由执事,毋敢视父母所爱,虽父母没不衰。子甚宜其妻,父母不说,出。子不宜其妻,父母曰:“是善事我,子行夫妇之礼焉。”没身不衰。

  

  父母虽没,将为善,思贻父母令名,必果。将为不善,思贻父母羞辱,必不果。

  

  舅没则姑老,冢妇所祭祀宾客,每事必请于姑。介妇请于冢妇,舅姑使冢妇,毋怠。不友无礼于介妇,舅姑若使介妇,毋敢敌耦于冢妇,不敢并行,不敢并命,不敢并坐。

  

  凡妇不命适私室,不敢退。妇将有事,大小必请于舅姑。子妇无私货,无私畜,无私器,不敢私假,不敢私与。妇或赐之饮食、衣服、布帛、佩帨、茞兰,则受而献诸舅姑,舅姑受之则喜,如新受赐。若反赐之,则辞。不得命,如更受赐,藏以待乏。妇若有私亲兄弟,将与之,则必复请其故赐而后与之。

  

  适子庶子,只事宗子宗妇。

  

  虽贵富,不敢以贵富入宗子之家。虽众车徒,舍于外,以寡约人。子弟犹归器、衣服、裘衾、车马,则必献其上,而后敢服用其次也。若非所献,则不敢以入于宗子之门,不敢以贵富加于父兄宗族。若富,则具二牲,献其贤者于宗子,夫妇皆齐而宗敬焉,终事而后敢私祭。

  

  饭:稷,稻,粱,白黍,黄粱,稰穛。膳:膷,臐,膮,醢,牛炙。醢,牛胾,醢,牛脍。羊炙,羊胾,醢,豕炙。醢,豕胾,芥酱,鱼脍。雉,兔,鹑,鷃。

  

  饮重醴,稻醴清糟,黍醴清糟,粱醴清糟。或以酏为醴,黍酏,浆水,醷,滥。

  

  酒,清,白。

  

  羞,糗饵,粉酏。

  

  食,蜗醢而苽食雉羹,麦食脯羹,羹,析稌犬羹,兔羹,和糁不蓼。濡豚,包苦实蓼,濡鸡,醢酱实蓼,濡鱼,卵酱实蓼,濡鳖,醢酱实蓼。腶修蚳醢,脯羹兔醢,麋肤鱼醢,鱼脍芥酱,麋腥醢酱,桃诸梅诸卵盐。

  

  凡食齐视春时,羹齐视夏时,酱齐视秋时,饮齐视冬时。

  

  凡和,春多酸,夏多苦,秋多辛,冬多咸,调以滑甘。

  

  牛宜稌,羊宜黍,豕宜稷,犬宜粱,鴈宜麦,鱼宜苽。

  

  春宜羔豚,膳膏芗。夏宜腒鱐,膳膏臊。秋宜犊麛,膳膏腥。冬宜鲜羽,膳膏膻。

  

  牛修鹿脯,田豕脯,麋脯,麇脯,麋鹿田豕麇皆有轩,雉兔皆有芼。爵,鷃,蜩,范,芝,栭,菱,椇,枣,栗,榛,柿,瓜,桃,李,梅,杏,楂,梨,姜,桂。

  

  大夫燕食,有脍无脯,有脯无脍。士不贰羹胾,庶人耆老不徒食。

  

  脍,春用葱,秋用芥。豚,春用韭,秋用蓼。脂用葱,膏用薤,三牲用藙,和用醯,兽用梅。

  

  鹑羹,鸡羹,鴽,酿之蓼。鲂,鱮,烝,雏,烧,雉,芗,无蓼。

  

  不食:雏鳖,狼去肠,狗去肾,狸去正脊,兔去尻,狐去首,豚去脑,鱼去乙,鳖去丑。

  

  肉曰脱之,鱼曰作之,枣曰新之,栗曰撰之,桃曰胆之,柤梨曰攒之。

  

  牛夜鸣则庮,羊泠毛而毳,膻。狗赤股而躁,臊。鸟皫色而沙鸣,郁。豕望视而交睫,腥。马黑脊而般臂,漏。

  

  雏尾不盈握弗食。舒鴈翠,鹄鸮胖,舒凫翠,鸡肝,鴈肾,鸨奥,鹿胃。

  

  肉腥细者为脍,大者为轩。或曰:麋鹿鱼为菹,麇为辟,鸡、野豕为轩,兔为宛脾,切葱若薤,实诸醯以柔之。

  

  羹食,自诸侯以下至于庶人,无等。大夫无秩膳。大夫七十而有阁。天子之阁,左达五,右达五。公侯伯于房中五,大夫于阁三,士于坫一。

  

  凡养老,有虞氏以燕礼,夏后氏以飨礼,殷人以食礼,周人修而兼用之。凡五十养于乡,六十养于国,七十养于学,达于诸侯,八十拜君命,一坐再至,瞽亦如之,九十者使人受。五十异粻,六十宿肉,七十二膳,八十常珍,九十饮食不违寝,膳饮从于游可也。六十岁制,七十时制,八十月制,九十日修,唯绞紟衾冒,死而后制。五十始衰,六十非肉不饱,七十非帛不暖,八十非人不暖,九十虽得人不暖矣。五十杖于家,六十杖于乡,七十杖于国,八十杖于朝,九十者,天子欲有问焉,则就其室,以珍从。七十不俟朝,八十月告存,九十日有秩。五十不从力政,六十不与服戎,七十不与宾客之事,八十齐丧之事弗及也。五十而爵,六十不亲学,七十致政。凡自七十以上,唯衰麻为丧。凡三王养老,皆引年。八十者,一子不从政,九十者,其家不从政,瞽亦如之。凡父母在,子虽老不坐,有虞氏养国老于上庠,养庶老于下庠。夏后氏养国老于东序,养庶老于西序。殷人养国老于右学,养庶老于左学。周人养国老于东胶,养庶老于虞庠,虞庠在国之西郊。有虞氏皇而祭,深衣而养老。夏后氏收而祭,燕衣而养老。殷人冔而祭,缟衣而养老。周人冕而祭,玄衣而养老。

  

  曾子曰:“孝子之养老也,乐其心,不违其志。乐其耳目,安其寝处,以其饮食忠养之。孝子之身终,终身也者,非终父母之身,终其身也。是故父母之所爱亦爱之,父母之所敬亦敬之。至于犬马尽然,而况于人乎?”

  

  凡养老,五帝宪,三王有乞言。五帝宪,养气体而不乞言,有善则记之为惇史。三王亦宪,既养老而后乞言,亦微其礼,皆有惇史。

  

  淳熬,煎醢加于陆稻上,沃之以膏,曰淳熬。淳母,煎醢加于黍食上,沃之以膏,曰淳母。炮,取豚若将,刲之刳之,实枣于其腹中,编萑以苴之,涂之以谨涂。炮之,涂皆干,擘之,濯手以摩之,去其皽,为稻粉,糔溲之以为驰,以付豚。煎诸膏,膏必灭之。钜镬汤,以小鼎,芗脯于其中,使其汤毋灭鼎,三日三夜毋绝火,而后调之以醯醢。

  

  捣珍,取牛羊麋鹿麇之肉,必脄,每物与牛若一,捶反侧之,去其饵,孰出之,去其皽,柔其肉。

  

  渍取牛肉,必新杀者,薄切之,必绝其理,湛诸美酒,期朝而食之,以醢若醯醷。

  

  为熬,捶之,去其皽,编萑,布牛肉焉,屑桂与姜,以洒诸上而盐之,干而食之。施羊亦如之。施麋,施鹿,施麇,皆如牛羊。欲濡肉,则释而煎之以醢。欲干肉,则捶而食之。

  

  糁取牛羊豕之肉,三如一,小切之,与稻米,稻米二,肉一,合以为饵煎之。

  

  肝膋,取狗肝一,幪之以其膋,濡炙之,举燋其膋,不蓼,取稻米,举糔溲之,小切狼臅膏,以与稻米为酏。

  

  礼始于谨夫妇,为宫室,辨外内。男子居外,女子居内。深宫固门,阍寺守之,男不入,女不出。男女不同椸枷,不敢县于夫之楎椸,不敢藏于夫之箧笥,不敢其楅浴。夫不在,敛枕箧簟席,襡器而藏之。少事长,贱事贵,咸如之。

  

  夫妇之礼,唯及七十,同藏无间。故妾虽老,年未满五十,必与五日之御。将御者,齐,漱,澣,慎衣服,栉縰,笄,总角,拂髦,衿缨,綦屦。虽婢妾,衣服饮食,必后长者。妻不在,妾御莫敢当夕。

  

  妻将生子,及月辰,居侧室,夫使人日再问之,作而自问之,妻不敢见,使姆衣服而对。至于子生,夫复使人日再问之,夫齐,则不入侧室之门。子生,男子设弧于门左,女子设帨于门右。三日始负子,男射女否。

  

  国君世子生,告于君,接以大牢,宰掌具。三日,卜士负之,吉者宿齐,朝服寝门外,诗负之,射人以桑弧蓬矢六,射天地四方,保受乃负之。宰醴负子,赐之束帛,卜士之妻,大夫之妾,使食子。

  

  凡接子择日,冢子则大牢,庶人特豚,士特豕,大夫少牢,国君世子大牢。其非冢子,则皆降一等。

  

  异为孺子,室于宫中,择于诸母与可者,必求其宽裕、慈惠、温良、恭敬、慎而寡言者使为子师,其次为慈母,其次为保母。皆居子室,他人无事不往。三月之末,择日,翦发为鬌,男角女羁,否则男左女右。是日也,妻以子见于父,贵人则为衣服,由命士以下皆漱澣,男女夙兴,沐浴衣服,具视朔食。夫人门,升自阼阶,立于阼,西乡,妻抱子出自房,当楣立,东面,姆先相,曰:“母某敢用时日,祗见孺子。”夫对曰:“钦有帅。”父执子之右手,咳而名之,妻对曰:“记有成。”遂左还授师,子师辩告诸妇诸母名,妻遂适寝,夫告宰名,宰辩告诸男名,书曰“某年某月某日某生”而藏之。宰告闾史,闾史书为二,其一藏诸闾府,其一献诸州史。州史献诸州伯,州伯命藏诸州府。夫入,食如养礼。

  

  世子生,则君沐浴朝服,夫人亦如之,皆立于阼阶,西乡,世妇抱子,升自西阶,君名之,乃降。适子庶子见于外寝,抚其首,咳而名之,礼帅初,无辞。

  

  凡名子,不以日月,不以国,不以隐疾。大夫士之子,不敢与世子同名。

  

  妾将生子,及月辰,夫使人日一问之。子生三月之末漱澣夙齐,见于内寝,礼之如始入室。君已食,彻焉,使之特馂,遂入御。

  

  公庶子生,就侧室,三月之末,其母沐浴朝服见于君,摈者以其子见,君所有赐,君名之,众子则使有司名之。

  

  庶人无侧室者,及月辰,夫出居群室,其问之也,与子见父之礼无以异也。

  

  凡父在,孙见于祖,祖亦名之,礼如子见父,无辞。

  

  食子者三年而出,见于公宫则劬。大夫之子有食母,士之妻自养其子。

  

  由命士以上及大夫之子,旬而见。冢子未食而见,必执其右手。适子、庶子已食而见,必循其首。

  

  子能食食,教以右手。能言,男唯女俞,男鞶革,女鞶丝。六年,教之数与方名。七年,男女不同席,不共食。八年,出入门户及即席饮食,必后长者,始教之让。九年,教之数日。十年,出就外傅,居宿于外,学书记,衣不帛襦裤,礼帅初,朝夕学幼仪,请肄简谅。十有三年,学乐诵诗,舞勺,成童,舞象,学射御。二十而冠,始学礼,可以衣裘帛,舞大夏,惇行孝弟,博学不教,内而不出。三十而有室,始理男事,博学无方,孙友视志。四十始仕,方物出谋发虑,道合则服从,不可则去。五十命为大夫,服官政。七十致事。凡男拜,尚左手。

  

  女子十年不出,姆教婉娩听从,执麻枲,治丝茧,织纴组紃,学女事,以共衣服。观于祭祀,纳酒浆笾豆菹醢,礼相助奠。十有五年而笄,二十而嫁。有故,二十三年而嫁。聘则为妻,奔则为妾。凡女拜,尚右手。
请点击控制台,然后在信息 那一栏下面修改文件名、作者名等信息。

我们不建议修改其他内容

当然了,如果你希望修改也可以,毕竟下载到你的桌面的文件都属于你。

  《礼记聘义》

  

  聘礼,上公七介,侯伯五介,子男三介,所以明贵贱也。介绍而传命,君子于其所尊弗敢质,敬之至也。

  

  三让而后传命,三让而后入庙门,三揖而后至阶,三让而后升,所以致尊让也。

  

  君使士迎于竟,大夫郊劳,君亲拜迎于大门之内,而庙受,北面拜贶,拜君命之辱,所以致敬也。

  

  敬让也者,君子之所以相接也。故诸侯相接以敬让,则不相侵陵。

  

  卿为上摈,大夫为承摈,士为绍摈。君亲礼宾,宾私面私觌,致饔饩,还圭璋,贿赠飨食燕,所以明宾客君臣之义也。

  

  故天子制诸侯,比年小聘,三年大聘,相厉以礼。使者聘而误,主君弗亲飨食也,所以愧厉之也。诸侯相厉以礼,则外不相侵,内不相陵。此天子之所以养诸侯,兵不用而诸侯自为正之具也。

  

  以圭璋聘,重礼也。已聘而还圭璋,此轻财而重礼之义也。诸侯相厉以轻财重礼,则民作让矣。

  

  主国待客,出入三积,饩客于舍。五牢之具陈于内,米三十车,禾三十车,刍薪倍禾,皆陈于外。乘禽日五双,群介皆有饩牢,壹食再飨,燕与时赐无数,所以厚重礼也。

  

  古之用财者,不能均如此,然而用财如此其厚者,言尽之于礼也。尽之于礼,则内君臣不相陵,而外不相侵。故天子制之,而诸侯务焉尔。

  

  聘射之礼,至大礼也。质明而始行事,日几中而后礼成,非强有力者弗能行也。故强有力者将以行礼也。酒清,人渴而不敢饮也;肉干,人饥而不敢食也。日莫人倦,齐庄正齐而不敢解惰,以成礼节,以正君臣,以亲父子,以和长幼,此众人之所难而君子行之,故谓之有行。有行之谓有义,有义之谓勇敢。故所贵于勇敢者,贵其能以立义也。所贵于立义者,贵其有行也。所贵于有行者,贵其行礼也。故所贵于勇敢者,贵其敢行礼义也。故勇敢强有力者,天下无事则用之于礼义,天下有事则用之于战胜。用之于战胜则无敌,用之于礼义则顺治。外无敌,内顺治,此之谓盛德。故圣王之贵勇敢强有力如此也。勇敢强有力,而不用之于礼义战胜,而用之于争斗,则谓之乱人。刑罚行于国,所诛者乱人也。如此则民顺治而国安也。

  

  子贡问于孔子曰:“敢问君子贵玉而贱碈者,何也?为玉之寡而碈之多与?”孔子曰:“非为碈之多故贱之也,玉之寡故贵之也。夫昔者君子比德于玉焉:温润而泽,仁也;缜密以栗,知也;廉而不刿,义也;垂之如队,礼也;叩之,其声清越以长,其终诎然,乐也;瑕不揜瑜,瑜不揜瑕,忠也;孚尹旁达,信也;气如白虹,天也;精神见于山川,地也;圭璋特达,德也;天下莫不贵者,道也。诗云:‘言念君子,温其如玉。’故君子贵之也。”

  
  《礼记曲礼》

  

  曲礼曰:毋不敬,俨若思,安定辞,安民哉!

  

  敖不可长,欲不可从,志不可满,乐不可极。

  

  贤者狎而敬之,畏而爱之,爱而知其恶,憎而知其善,积而能散,安安而能迁,临财毋苟得,临难毋苟免,很毋求胜,分毋求多,疑事毋质,直而勿有。

  

  若夫坐如尸,立如齐,礼从宜,使从俗。

  

  夫礼者,所以定亲疏、决嫌疑、别同异、明是非也。

  

  礼不妄说人,不辞费。礼不踰节,不侵侮,不好狎。

  

  修身践言,谓之善行;行修言道.礼之质也。

  

  礼闻取于人,不闻取人。礼闻来学,不闻往教。

  

  道德仁义,非礼不成;教训正俗,非礼不备;分争辨讼,非礼不决;君臣、上下、父

  

  子、兄弟,非礼不定;宦学事师,非礼不亲;班朝治军,莅官行法,非礼威严不行;祷

  

  祠、祭祀、供给鬼神,非礼不诚不庄。是以君子恭敬撙节,退让以明礼。鹦鹉能言,不离飞鸟,猩猩能言,不离禽兽,今人而无礼,虽能言,不亦禽兽之心乎?夫唯禽兽无礼,故父子聚麀,是故圣人作,为礼以教人,使人以有礼,知自别于禽兽。

  

  太上贵德,其次务施报。礼尚往来,往而不来,非礼也,来而不往,亦非礼也。

  

  人有礼则安,无礼则危,故曰:礼者不可不学也。

  

  夫礼者,自卑而尊人,虽负贩者必有尊也,而况富贵乎?

  

  富贵而知好礼,则不骄不淫;贫贱而知好礼,则志不慑。

  

  人生十年曰幼,学。二十曰弱冠。三十曰壮,有室。四十曰强,而仕。五十曰艾,服官政。六十曰耆,指使。七十曰老,而传。八十九十曰耄,七年曰悼,悼与耄,虽有罪,不加刑焉。百年曰期颐。大夫七十而致事,若不得谢,则必赐之几杖,行役以妇人,适四方,乘安车,自称曰老夫,于其国则称名,越国而问焉,必告之以其制。

  

  谋于长者,必操几杖以从之。长者问,不辞让而对,非礼也。

  

  凡为人子之礼,冬温而夏凊,昏定而晨省,在丑夷不争。

  

  夫为人子者,三赐不及车马,故州闾乡党称其孝也,兄弟亲戚称其慈也,僚友称其弟也,执友称其仁也,交游称其信也。见父之执,不谓之进,不敢进,不谓之退,不敢退,不问不敢对,此孝子之行也。

  

  夫为人子者,出必告,反必面,所游必有常,所习必有业,恒言不称老。年长以倍则父事之,十年以长则兄事之,五年以长则肩随之。群居五人,则长者必异席。

  

  为人子者,居不主奥,坐不中席,行不中道,立不中门,食飨不为概,祭祀不为尸,听于无声,视于无形,不登高,不临深,不苟訾,不苟笑。

  

  孝子不服闇,不登危,惧辱亲也。父母存,不许友以死,不有私财。

  

  为人子者,父母存,冠衣不纯素,孤子当室,冠衣不纯采。

  

  幼子常视毋诳,童子不衣裘裳,立必正方,不倾听。长者与之提携,则两手奉长者之

  

  手,负剑辟咡诏之,则掩口而对。

  

  从于先生,不越路而与人言。遭先生于道,趋而进,正立拱手,先生与之言则对,不与之言则趋而退。从长者而上丘陵,则必乡长者所视,登城不指,城上不呼。将适舍,求毋固。将上堂,声必扬。户外有二屦,言闻则入,言不闻则不入。将入户,视必下,入户奉扃,视瞻毋回,户开亦开,户阖亦阖。有后入者,阖而勿遂。毋践屦,毋踖席,抠衣趋隅,必慎唯诺。

  

  大夫士出入君门,由闑右,不践阈。

  

  凡与客入者,每门让于客,客至于寝门,则主人请入为席,然后出迎客,客固辞,主人肃客而入。主人入门而右,客入门而左,主人就东阶,客就西阶。客若降等,则就主人之阶,主人固辞,然后客复就西阶。主人与客让登,主人先登,客从之,拾级聚足,连步以上。上于东阶,则先右足,上于西阶,则先左足。

  

  帷薄之外不趋,堂上不趋,执玉不趋。堂上接武,堂下布武,室中不翔,并坐不横肱。授立不跪,授坐不立。

  

  凡为长者粪之礼,必加帚于箕上,以袂拘而退,其尘不及长者,以箕自乡而扱之。

  

  奉席如桥衡,请席何乡,请衽何趾。席南乡北乡,以西方为上,东乡西乡,以南方为上。

  

  若非饮食之客,则布席。席间函丈,主人跪正席,客跪抚席而辞,客彻重席,主人固辞,客践席,乃坐。主人不问,客不先举。将即席,容毋怍,两手抠衣,去齐尺,衣毋拨,足毋蹶。

  

  先生书策琴瑟在前,坐而迁之,戒勿越。虚坐尽后,食坐尽前。坐必安,执尔颜,长者不及,毋儳言,正尔容,听必恭,毋剿说,毋雷同,必则古昔,称先王。

  

  侍坐于先生,先生问焉,终则对,请业则起,请益则起。父召无诺,先生召无诺,唯而起。

  

  侍坐于所尊,敬毋余席,见同等不起,烛至起,食至起,上客起,烛不见跋,尊客之前不叱狗,让食不唾。

  

  侍坐于君子,君子欠伸,撰杖屦,视日蚤莫,侍坐者请出矣。

  

  侍坐于君子,君子问更端,则起而对。

  

  侍坐于君子,若有告者曰:少间愿有复也,则左右屏而待。

  

  毋侧听,毋噭应,毋淫视,毋怠荒,游毋倨,立毋跛,坐毋箕,寝毋伏,敛发毋髢,冠毋免,劳毋袒,暑毋褰裳。

  

  侍坐于长者,屦不上于堂,解屦不敢当阶。就屦,跪而举之,屏于侧。乡长者而屦,跪而迁屦,俯而纳屦。

  

  离坐离立,毋往参焉,离立者不出中间。

  

  男女不杂坐,不同椸枷,不同巾栉,不亲授。

  

  嫂叔不通问,诸母不漱裳。

  

  外言不入于捆,内言不出于捆。

  

  女子许嫁,缨,非有大故不入其门。

  

  姑、姊、妹、女子子,已嫁而反,兄弟弗与同席而坐,弗与同器而食。

  

  父子不同席。

  

  男女非有行媒,不相知名,非受币,不交不亲。

  

  故日月以告君,齐戒以告鬼神,为酒食以召乡党僚友,以厚其别也。

  

  取妻不取同姓,故买妾不知其姓则卜之。

  

  寡妇之子,非有见焉,弗与为友。

  

  贺取妻者曰:某子使某,闻子有客,使某羞。

  

  贫者不以货财为礼,老者不以筋力为礼。

  

  名子者,不以国,不以日月,不以隐疾,不以山川。

  

  男女异长,男子二十,冠而字。父前子名,君前臣名。女子许嫁,笄而字。

  

  凡进食之礼,左殽右胾。食居人之左,羹居人之右。脍炙处外,醯酱处内,葱渿处末,酒浆处右。以脯修置者,左朐右末。客若降等,执食兴辞,主人兴辞于客,然后客坐。主人延客祭,祭食,祭所先进,殽之序,遍祭之,三饭,主人延客食胾,然后辩殽,主人未辩,客不虚口。

  

  侍食于长者,主人亲馈,则拜而食,主人不亲馈,则不拜而食。

  

  共食不饱,共饭不泽手。毋抟饭,毋放饭,毋流歠,毋咤食,毋啮骨,毋反鱼肉,毋投与狗骨,毋固获,毋扬饭。饭黍毋以箸,毋嚃羹,毋絮羹,毋刺齿,毋歠醢。客絮羹,主人辞不能亨。客歠醢,主人辞以窭。濡肉齿决,干肉不齿决,毋嘬炙。卒食,客自前跪,彻饭齐,以授相者。主人兴辞于客,然后客坐。

  

  侍饮于长者,酒进则起。拜受于尊所,长者辞,少者反席而饮,长者举未釂,少者不敢饮。长者赐,少者贱者不敢辞。

  

  赐果于君前,其有核者怀其核。御食于君,君赐余,器之溉者不写,其余皆写。

  

  馂余不祭。父不祭子,夫不祭妻。

  

  御同于长者,虽贰不辞。偶坐不辞。

  

  羹之有菜者用梜,其无菜者不用梜。

  

  为天子削瓜者副之,巾以絺。为国君者华之,巾以绤。为大夫累之,士疐之。庶人龁之。

  

  父母有疾,冠者不栉,行不翔,言不惰,琴瑟不御,食肉不至变味,饮酒不至变貌,笑不至矧,怒不至詈。疾止复故。

  

  有忧者侧席而坐,有丧者专席而坐。

  

  水潦降,不献鱼鳖。献鸟者佛其首,畜鸟者则勿佛也。献车马者执策绥,献甲者执

  

  胄,献杖者执末,献民虏者操右袂,献粟者执右契,献米者操量鼓,献孰食者操酱齐,献田宅者操书致。

  

  凡遗人弓者,张弓尚筋,弛弓尚角,右手执箫,左手承弣,尊卑垂帨。若主人拜,则客还辟辟拜,主人自受,由客之左,接下承弣,乡与客并,然后受。

  

  进剑者左首,进戈者前其鐏,后其刃,进矛戟者前其镦,进几杖者拂之。效马效羊者右牵之,效犬者左牵之,执禽者左首,饰羔鴈者以缋,受珠玉者以掬,受弓剑者以袂,饮玉爵者弗挥。凡以弓剑苞苴,箪笥问人者,操以受命,如使之容。

  

  凡为君使者,已受命君,言不宿于家。君言至,则主人出拜君言之辱,使者归,则必拜送于门外。

  

  若使人于君所,则必朝服而命之,使者反,则必下堂而受命。

  

  博闻强识而让,敦善行而不怠,谓之君子。君子不尽人之欢,不竭人之忠,以全交也。

  

  礼曰:“君子抱孙不抱子。”此言孙可以为王父尸,子不可以为父尸。为君尸者,大夫士见之,则下之。君知所以为尸者,则自下之。尸必式,乘必以几。齐者不乐不吊。

  

  居丧之礼,毁瘠不形,视听不衰,升降不由阼阶,出入不当门隧。

  

  居丧之礼,头有创则沐,身有疡则浴,有疾则饮酒食肉,疾止复初。不胜丧,乃比于不慈不孝。

  

  五十不致毁,六十不毁,七十唯衰麻在身,饮酒食肉处于内,生与来日,死与往日。

  

  知生者吊,知死者伤,知生而不知死,吊而不伤,知死而不知生,伤而不吊。

  

  吊丧弗能赙,不问其所费。问疾弗能遗,不问其所欲。见人弗能馆,不问其所舍。赐人者不曰来取,与人者不问其所欲。

  

  适墓不登垄,助葬必执绋,临丧不笑,揖人必违其位。望柩不歌,入临不翔,当食不叹。邻有丧,舂不相,里有殡,不巷歌。适墓不歌,哭日不歌。送丧不由径,送葬不辟涂潦,临丧则必有哀色。执绋不笑,临乐不叹,介胄则有不可犯之色。故君子戒慎,不失色于人。

  

  国君抚式,大夫下之,大夫抚式,士下之。

  

  礼不下庶人,刑不上大夫。刑人不在君侧。

  

  兵车不式,武车绥旌,德车结旌。史载笔,士载言。前有水,则载青旌,前有尘埃,则载鸣鸢,前有车骑,则载飞鸿,前有士师,则载虎皮,前有挚兽,则载貔貅。行,前朱鸟而后玄武,左青龙而右白虎,招摇在上。急缮其怒,进退有度,左右有局,各司其局。

  

  父之雠,弗与共戴天。兄弟之雠,不反兵。交游之雠,不同国。

  

  四郊多垒,此卿大夫之辱也。地广大,荒而不治,此亦士之辱也。

  

  临祭不惰。祭服敝则焚之,祭器敝则埋之,龟荚敝则埋之,牲死则埋之。凡祭于公者,必自彻其俎。

  

  卒哭乃讳。礼不讳嫌名,二名不偏讳。逮事父母,则讳王父母,不逮事父母,则不讳王父母。君所无私讳,大夫之所有公讳,诗书不讳,临文不讳,庙中不讳。夫人之讳,虽质君之前,臣不讳也。妇讳不出门。大功小功不讳。入竟而问禁,入国而问俗,入门而问讳。

  

  外事以刚日,内事以柔日。凡卜筮日,旬之外曰远某日,旬之内曰近某日。丧事先远日,吉事先近日。曰:“为日,假尔泰龟有常,假尔泰筮有常。”卜筮不过三,卜筮不相袭。龟为卜,筴为筮。卜筮者,先圣王之所以使民信时日、敬鬼神、畏法令也,所以使民决嫌疑、定犹与也。故曰:“疑而筮之,则弗非也。”日而行事,则必践之。

  

  君车将驾,则仆执策立于马前。已驾,仆展軨,效驾,奋衣由右上,取贰绥,跪乘,执策分辔,驱之五步而立。君出就车,则仆幷辔授绥,左右攘辟,车驱而驺。至于大门,君抚仆之手,而顾命车右就车。门闾沟渠必步。凡仆人之礼,必授人绥,若仆者降等则受,不然则否。若仆者降等,则抚仆之手,不然则自下拘之。客车不入大门,妇人不立乘,犬马不上于堂。故君子式黄发,下卿位,入国不驰,入里必式。君命召,虽贱人,大夫士必自御之。介者不拜,为其拜而蓌拜,祥车旷左,乘君之乘车,不敢旷左,左必式。仆御妇人,则进左手,后右手。御国君,则进右手,后左手而俯。国君不乘奇车,车上不广欬,不妄指。立视五巂,式视马尾,顾不过毂。国中以策彗恤勿驱,尘不出轨。国君下齐牛,式宗庙,大夫士下公门,式路马。乘路马,必朝服,载鞭策,不敢授绥,左必式。步路马,必中道。以足蹙路马刍,有诛,齿路马,有诛。

  

  凡奉者当心,提者当带。执天子之器则上衡,国君则平衡,大夫则绥之,士则提之。凡执主器,执轻如不克。执主器,操币圭璧,则尚左手,行不举足,车轮曳踵,立则磬折垂佩。主佩倚,则臣佩垂,主佩垂,则臣佩委。执玉,其有借者则裼,无借者则袭。

  

  国君不名卿老世妇,大夫不名世臣侄娣,士不名家相长妾。君大夫之子,不敢自称曰余小子,大夫士之子,不敢自称曰嗣子某,不敢与世子同名。

  

  君使士射,不能,则辞以疾,言曰:“某有负薪之忧。”

  

  侍于君子,不顾望而对,非礼也。

  

  君子行礼,不求变俗。祭祀之礼,居丧之服,哭泣之位,皆如其国之故,谨修其法而审行之。去国三世,爵禄有列于朝,出入有诏于国,若兄弟宗族犹存,则反告于宗后。去国三世,爵禄无列于朝,出入无诏于国,唯兴之日,从新国之法。

  

  君子已孤不更名。已孤暴贵,不为父作谥。

  

  居丧未葬,读丧礼。既葬,读祭礼。丧复常,读乐章。居丧不言乐,祭事不言凶,公庭不言妇女。

  

  振书端书于君前,有诛。倒筴侧龟于君前,有诛。龟筴、几杖、席、盖、重素、袗絺绤不入公门,苞屦、扱衽、厌冠不入公门,书方、衰、凶器,不以告,不入公门。公事不私议。

  

  君子将营宫室,宗庙为先,厩库为次,居室为后。

  

  凡家造,祭器为先,牺赋为次,养器为后。无田禄者不设祭器,有田禄者先为祭服。君子虽贫,不粥祭器,虽寒,不衣祭服。为宫室,不斩于丘木。大夫士去国,祭器不踰竟。大夫寓祭器于大夫,士寓祭器于士。

  

  大夫士去国,踰竟,为坛位,乡国而哭。素衣,素裳,素冠,彻缘,鞮屦,素篾,乘髦马,不蚤鬋,不祭食,不说人以无罪,妇人不当御,三月而复服。

  

  大夫士见于国君,君若劳之,则还辟再拜稽首。君若迎拜,则还辟不敢答拜。大夫士相见,虽贵贱不敌,主人敬客,则先拜客,客敬主人,则先拜主人。凡非吊丧、非见国君,无不答拜者。大夫见于国君,国君拜其辱,士见于大夫,大夫拜其辱,同国始相见,主人拜其辱。君于士,不荅拜也,非其臣,则荅拜之。大夫于其臣,虽贱必答拜之。男女相荅拜也。

  

  国君春田不围泽,大夫不掩群,士不取麛卵。

  

  岁凶,年谷不登,君膳不祭肺,马不食谷,驰道不除,祭事不县,大夫不食粱,士饮酒不乐。

  

  君无故玉不去身,大夫无故不彻县,士无故不彻琴瑟。

  

  士有献于国君,他日君问之曰:“安取彼?”再拜稽首而后对。大夫私行,出疆必请,反必有献。士私行,出疆必请,反必告,君劳之则拜,问其行,拜而后对。

  

  国君去其国,止之曰:“奈何去社稷也?”大夫曰:“奈何去宗庙也?”士曰:“奈何去坟墓也?”国君死社稷,大夫死众,士死制。

  

  君天下曰天子。朝诸侯,分职授政任功,曰予一人。践阼,临祭祀,内事曰孝王某,外事曰嗣王某。临诸侯,畛于鬼神,曰有天王某。甫崩,曰天王崩。复,曰天子复矣。告丧,曰天王登假。措之庙,立之主,曰帝。天子未除丧,曰予小子,生名之,死亦名之。

  

  天子有后,有夫人,有世妇,有嫔,有妻,有妾。天子建天官,先六大:曰大宰、大宗、大史、大祝、大士、大卜,典司六典。天子之五官:曰司徒、司马、司空、司士、司寇,典司五众。天子之六府:曰司土、司木、司水、司草、司器、司货,典司六职。天子之六工:曰土工、金工、石工、木工、兽工、草工,典制六材。

  

  五官致贡曰享,五官之长曰伯,是职方。其摈于天子也,曰天子之吏。天子同姓,谓之伯父,异姓,谓之伯舅。自称于诸侯曰天子之老,于外曰公,于其国曰君。

  

  九州之长,入天子之国曰牧。天子同姓,谓之叔父,异姓,谓之叔舅。于外曰侯,于其国曰君,其在东夷、北狄、西戎、南蛮,虽大曰子,于内自称曰不谷,于外自称曰王老。

  

  庶方小侯,入天子之国曰某人。于外曰子,自称曰孤。

  

  天子当依而立,诸侯北面而见天子,曰觐。天子当宁而公,诸公东面,诸侯西面,曰朝。

  

  诸侯未及期相见,曰遇,相见于却地,曰会。诸侯使大夫问于诸侯,曰聘,约信,曰誓,莅牲,曰盟。

  

  诸侯见天子,曰臣某侯某。其与民言,自称曰寡人。其在凶服,曰适子孤。临祭祀、内事,曰孝子某侯某。外事,曰曾孙某侯某。死曰薨,复,曰某甫复矣。既葬,见天子,曰类见,言谥,曰类。诸侯使人使于诸侯,使者自称曰寡君之老。

  

  天子穆穆,诸侯皇皇,大夫济济,士跄跄,庶人僬僬。

  

  天子之妃曰后,诸侯曰夫人,大夫曰孺人,士曰妇人,庶人曰妻。

  

  公侯有夫人,有世妇,有妻,有妾。

  

  夫人自称于天子,曰老妇,自称于诸侯,曰寡小君,自称于其君,曰小童。自世妇以下,自称曰婢子。

  

  子于父母,则自名也。

  

  列国之大夫,入天子之国,曰某士,自称,曰陪臣某,于外曰子,于其国,曰寡君之老。使者自称曰某。

  

  天子不言出,诸侯不生名,君子不亲恶。诸侯失地,名,灭同姓,名。

  

  为人臣之礼,不显谏,三谏而不听,则逃之。子之事亲也,三谏而不听,则号泣而随之。

  

  君有疾饮药,臣先尝之,亲有疾饮药,子先尝之。医不三世,不服其药。

  

  儗人必于其伦。

  

  问天子之年,对曰:“闻之始服衣若干尺矣。”问国君之年,长,曰:“能从宗庙社稷之事矣。”幼,曰:“未能从宗庙社稷之事也。”问大夫之子,长,曰:“能御矣。”幼,曰:“未能御也。”问士之子,长,曰:“能典谒矣。”幼,曰:“未能典谒也。”问庶人之子,长,曰:“能负薪矣。”幼,曰:“未能负薪也。”

  

  问国君之富,数地以对,山泽之所出。问大夫之富,曰:有宰食力,祭器衣服不假。问士之富,以车数对。问庶人之富,数畜以对。

  

  天子祭天地,祭四方,祭山川,祭五祀,岁遍。诸侯方祀,祭山川,祭五祀,岁遍。大夫祭五祀,岁遍。士祭其先。

  

  凡祭,有其废之,莫敢举也,有其举之,莫敢废也。非其所祭而祭之,名曰淫祀。淫祀无福。

  

  天子以牺牛,诸侯以肥牛,大夫以索牛,士以羊豕。支子不祭,祭必告于宗子。

  

  凡祭宗庙之礼,牛曰一元大武,豕曰刚鬣,豚曰腯肥,羊曰柔毛,鸡曰翰音,犬曰羹献,雉曰疏趾,兔曰明视,脯曰尹祭,槁鱼曰商祭,鲜鱼曰脡祭,水曰清涤,酒曰清酌,黍曰芗合,粱曰芗萁,稷曰明粢,稻曰嘉蔬,韭曰丰本,盐曰咸鹾,玉曰嘉玉,币曰量币。

  

  天子死曰崩,诸侯曰薨,大夫曰卒,士曰不禄,庶人曰死。在床曰尸,在棺曰柩。羽鸟曰降,四足曰渍,死寇曰兵。祭王父曰皇祖考,王母曰皇祖妣,父曰皇考,母曰皇妣,夫曰皇辟。生曰父,曰母,曰妻,死曰考,曰妣,曰嫔。寿考曰卒,短折曰不禄。

  

  天子视不上于袷,不下于带,国君绥视,大夫衡视,士视五步。凡视,上于面则敖,下于带则忧,倾则奸。

  

  君命,大夫与士肄,在官言官,在府言府,在库言库,在朝言朝。朝言不及犬马,辍朝而顾,不有异事,必有异虑。故辍朝而顾,君子谓之固。在朝言礼,问礼对以礼。

  

  大飨不问卜,不饶富。

  

  凡挚,天子鬯,诸侯圭,卿羔大夫鴈,士雉。庶人之挚匹,童子委挚而退。野外军中无挚,以缨、拾、矢可也。妇人之挚,椇、榛、脯、修、枣、栗。

  

  纳女于天子,曰备百姓,于国君,曰备酒浆,于大夫,曰备埽洒。

  

  
  

  

  《礼记儒行》

  

  鲁哀公问于孔子曰:“夫子之服,其儒服与?”

  

  孔子对曰:“丘少居鲁,衣逢掖之衣,长居宋,冠章甫之冠。丘闻之也:君子之学也博,其服也乡。丘不知儒服。”

  

  哀公曰:“敢问儒行?”

  

  孔子对曰:“遽数之不能终其物,悉数之,乃留更仆,未可终也。”

  

  哀公命席,孔子侍曰:“儒有席上之珍以待聘,夙夜强学以待问,怀忠信以待举,力行以待取。其自立有如此者。儒有衣冠中,动作慎。其大让如慢,小让如伪,大则如威,小则如愧,其难进而易退也,粥粥若无能也。其容貌有如此者。

  

  “儒有居处齐难,其坐起恭敬,言必先信,行必中正。道涂不争险易之利,冬夏不争阴阳之和,爱其死以有待也,养其身以有为也。其备豫有如此者。

  

  “儒有不宝金玉,而忠信以为宝;不祈土地,立义以为土地;不祈多积,多文以为富。难得而易禄也,易禄而难畜也。非时不见,不亦难得乎?非义不合,不亦难畜乎?先劳而后禄,不亦易禄乎?其近人有如此者。

  

  “儒有委之以货财,淹之以乐好,见利不亏其义。劫之以众,沮之以兵,见死不更其守。鸷虫攫搏,不程勇者。引重鼎,不程其力,往者不悔,来者不豫,过言不再,流言不极。不断其威,不习其谋。其特立有如此者。

  

  “儒有可亲而不可劫也,可近而不可迫也,可杀而不可辱也。其居处不淫,其饮食不溽,其过失可微辨而不可面数也。其刚毅有如此者。

  

  “儒有忠信以为甲胄,礼义以为干橹。戴仁而行,抱义而处,虽有暴政不更其所。其自立有如此者。

  

  “儒有一亩之宫,环堵之室,筚门圭窬,蓬户瓮牖,易衣而出,幷日而食。上荅之,不敢以疑。上不荅,不敢以谄。其仕有如此者。

  

  “儒有今人与居,古人与稽,今世行之,后世以为楷。适弗逢世,上弗援,下弗推,谗谄之民有比党而危之者,身可危也,而志不可夺也。虽危,起居竟信其志,犹将不忘百姓之病也。其忧思有如此者。

  

  “儒有博学而不穷,笃行而不倦,幽居而不淫,上通而不困。礼之以和为贵,忠信之美,优游之法,慕贤而容众,毁方而瓦合。其宽裕有如此者。

  

  “儒有内称不辟亲,外举不辟怨。程功积事,推贤而进达之,不望其报。君得其志,苟利国家,不求富贵。其举贤援能有如此者。

  

  “儒有闻善以相告也,见善以相示也,爵位相先也,患难相死也,久相待也,远相致也。其任举有如此者。

  

  “儒有澡身而浴德,陈言而伏,静而正之。上弗知也,麤而翘之,又不急为也。不临深而为高,不加少而为多。世治不轻,世乱不沮,同弗与,异弗非也。其特立独行有如此者。

  

  “儒有上不臣天子,下不事诸侯,慎静而尚宽,强毅以与人,博学以知服。近文章,砥厉廉隅。虽分国,如锱铢,不臣不仕。其规为有如此者。

  

  “儒有合志同方,营道同术,并立则乐,相下不厌。久不相见,闻流言不信。其行本方,立义,同而进,不同而退。其交友有如此者。

  

  “温良者,仁之本也;敬慎者,仁之地也;宽裕者,仁之作也;孙接者,仁之能也;礼节者,仁之貌也;言谈者,仁之文也;歌乐者,仁之和也;分散者,仁之施也。儒皆兼此而有之,犹且不敢言仁也。其尊让有如此者。

  

  “儒有不陨获于贫贱,不充诎于富贵,不慁君王,不累长上,不闵有司,故曰儒。今众人之命儒也妄常,以儒相诟病。”

  

  孔子至舍,哀公馆之。闻此言也,言加信,行加义,终没吾世,不敢以儒为戏。

  
  《礼记三年问》

  

  三年之丧,何也?曰:称情而立文,因以饰群,别亲疏贵贱之节,而弗可损益也。故曰:无易之道也。创钜者其日久,痛甚者其愈迟。三年者,称情而立文,所以为至痛极也。斩衰,苴杖,居倚庐,食粥,寝苫,枕块,所以为至痛饰也。三年之丧,二十五月而毕,哀痛未尽,思慕未忘,然而服以是断之者,岂不送死有已、复生有节也哉?

  

  凡生天地之间者,有血气之属必有知,有知之属莫不知爱其类。今是大鸟兽,则失丧其群匹,越月踰时焉,则必反巡。过其故乡,翔回焉,鸣号焉,蹢躅焉,踟蹰焉,然后乃能去之。小者至于燕雀,犹有啁焦之顷焉,然后乃能去之。故有血气之属者莫知于人,故人于其亲也,至死不穷。

  

  将由夫患邪淫之人与?则彼朝死而夕忘之,然而从之,则是曾鸟兽之不若也,夫焉能相与群居而不乱乎?

  

  将由夫修饰之君子与?则三年之丧二十五月而毕,若驷之过隙,然而遂之,则是无穷也。

  

  故先王焉,为之立中制节,壹使足以成文理,则释之矣。

  

  然则何以至期也?曰:至亲以期断。是何也?曰:天地则已易矣,四时则已变矣,其在天地之中者莫不更始焉,以是象之也。

  

  然则何以三年也?曰:加隆焉尔也。焉使倍之,故再期也。

  

  由九月以下,何也?曰:焉使弗及也,故三年以为隆,缌小功以为杀,期九月以为间。上取象于天,下取法于地,中取则于人。人之所以群居和壹之理尽矣!故三年之丧,人道之至文者也,夫是之谓至隆。是百王之所同,古今之所壹也,未有知其所由来者也。孔子曰:“子生三年,然后免于父母之怀。”夫三年之丧,天下之达丧也。

  

  
  《礼记丧大记》

  疾病,外内皆埽。

  

  君大夫彻县,士去琴瑟,寝东首于北牖下,废床,彻亵衣,加新衣,体一人,男女改服,属纩以俟绝气。男子不死于妇人之手,妇人不死于男子之手。

  

  君夫人卒于路寝,大夫世妇卒于滴寝。内子未命,则死于下室,迁尸于寝。士之妻皆死于寝。

  

  复有林麓则虞人设阶,无林麓则狄人设阶。

  

  小臣复,复者朝服,君以卷,夫人以屈狄,大夫以玄赪,世妇以襢衣,士以爵弁,士妻以税衣。皆升自东荣,中屋履危,北面三号,卷衣投于前,司服受之,降自西北荣。其为宾,则公馆复,私馆不复。其在野,则升其乘车之左毂而复。复衣不以衣尸,不以敛。妇人复,不以袡。凡复,男子称名,妇人称字。唯哭先复,复而后行死事。

  

  始卒,主人啼,兄弟哭,妇人哭踊。既正尸,子坐于东方,卿大夫父兄子姓立于东方,有司庶士哭于堂下北面,夫人坐于西方,内命妇姑姊妹子姓立于西方,外命妇率外宗哭于堂上北面。

  

  大夫之丧,主人坐于东方,主妇坐于西方。其有命夫命妇则坐,无则皆立。士之丧,主人父兄子姓皆坐于东方,主妇姑姊妹子姓皆坐于西方。凡哭尸于室者,主人二手承衾而

  

  哭。

  

  君子丧未小敛,为寄公国宾出。大夫之丧未小敛,为君命出。士之丧,于大夫,不当敛则出。

  

  凡主人之出也,徒跣,扱衽,拊心,降自西阶。君拜寄公国宾于位,大夫于君命,迎于寝门外。使者升堂致命,主人拜于下。士于大夫亲吊,则与之哭,不逆于门外。

  

  夫人为寄公夫人出,命妇为夫人之命出。士妻不当敛,则为命妇出。

  

  小敛,主人即位于户内。主妇东面,乃敛。卒敛,主人冯之踊,主妇亦如之。主人袒,说髦,括发以麻,妇人髽,带麻于房中。

  

  彻帷,男女奉尸夷于堂,降拜。

  

  君拜寄公国宾,大夫士拜卿大夫于位,于士旁三拜。大夫亦拜寄公夫人于堂上,大夫内子士妻,特拜命妇,泛拜众宾于堂上。主人即位,袭带绖踊。母之丧,即位而免,乃奠。吊者袭裘,加武,带绖,与主人拾踊。

  

  君丧虞人出木角,狄人出壶,雍人出鼎,司马县之,乃官代哭。大夫官代哭,不县壶,士代哭,不以官。君堂上二烛,下二烛,大夫堂上一烛,下二烛,士堂上一烛,下一烛。

  

  宾出彻帷。

  

  哭尸于堂上,主人在东方,由外来者在西方,诸妇南乡。

  

  妇人迎客送客,不下堂。下堂不哭,男子出寝门见人不哭。其无女主,则男主拜女宾于寝门内。其无男主,则女主拜男宾于阼阶下。子幼,则以衰抱之。人为之拜,为后者不在,则有爵者辞,无爵者人为之拜。在竟内则俟之,在竟外则殡葬可也。丧有无后,无无主。

  

  君之丧,三日,子夫人杖,五日既殡,授大夫世妇杖,子大夫,寝门之外杖,寝门之内辑之。夫人世妇,在其次则杖,即位则使人执之。子有王命则去杖,国君之命则辑杖,听卜有事于尸则去杖。大夫于君所则辑杖,于大夫所则杖。

  

  大夫之丧,三日之朝,既殡,主人主妇室老皆杖。大夫有君命则去杖,大夫之命则辑杖,内子为夫人之命去杖,为世妇之命授人杖。

  

  士之丧,二日而殡,三日之朝,主人杖,妇人皆杖。于君命,夫人之命,如大夫,于大夫世妇之命,如大夫,子皆杖。不以即位。大夫士哭殡则杖,哭柩则辑杖。弃杖者,断而弃之于隐者。

  

  君设大盘,造冰焉。大夫设夷盘,造冰焉。士并瓦盘,无冰。设床襢笫,有枕,含一床,袭一床,迁尸于堂又一床。皆有枕席,君大夫士一也。

  

  始死,迁尸于床,幠用敛衾,去死衣。小臣楔齿用角柶,缀足用燕几,君大夫士一也。

  

  管人汲,不说繘,屈之,尽阶不升堂。授御者,御者入浴。小臣四人抗衾,御者二人浴。浴水用盆,沃水用枓,浴用絺巾,挋用浴衣。如它日,小臣爪足,浴余水床于坎。其母之丧,则内御者抗衾而浴。

  

  管人汲,授御者,御者差沐于堂上。君沐粱,大夫沐稷,士沐粱。甸人为垼于西墙下,陶人出重鬲,管人受沐,乃煮之。甸人取所彻庙之西北厞,薪用爨之。管人授御者沐,乃沐。沐用瓦盘,挋用巾。如它日,小臣爪手翦须,濡濯弃于坎。

  

  君之丧,子、大夫、公子、众士皆三日不食。子大夫公子食粥,纳财,朝一溢米,莫一溢米。食之无筭士,疏食水饮,食之无筭。夫人、世妇、诸妻皆疏食水饮,食之无筭。

  

  大夫之丧,主人、室老、子姓皆食粥。众士疏食水饮,妻妾疏食水饮。士亦如之。

  

  既葬,主人疏食水饮,不食菜果。妇人亦如之。君大夫士一也。练而食菜果,祥而食肉。

  

  食粥于盛不盥,食于篹者盥。食菜以醯酱。始食肉者,先食干肉。始饮酒者,先饮醴酒。

  

  期之丧,三不食食,疏食水饮,不食菜果。三月既葬,食肉饮酒。期,终丧不食肉,不饮酒。父在,为母,为妻,九月之丧,食饮犹期之丧也。食肉饮酒,不与人乐之。

  

  五月三月之丧,壹不食,再不食,可也。比葬,食肉饮酒,不与人乐之。叔母,世母故主,宗子食肉饮酒,不能食粥,羹之以菜可也。有疾,食肉饮酒可也。五十不成丧,七十唯衰麻在身。

  

  既葬,若君食之,则食之。大夫父之友食之,则食之矣。不辟粱肉,若有酒醴则辞。

  

  小敛于户内,大敛于阼。君以簟席,大夫以蒲席,士以苇席。

  

  小敛布绞,缩者一,横者三。君锦衾,大夫缟衾,士缁衾皆一。衣十有九称,君陈衣于序东,大夫士陈衣于房中,皆西领北上,绞紟不在列。

  
  


  《礼记丧服大记》

  大敛布绞,缩者三,横者五,布紟二衾,君大夫士一也。君陈衣于庭,百称,北领西上。大夫陈衣于序东,五十称,西领南上。士陈衣于序东,三十称,西领南上。绞紟如朝服,绞一幅为三,不辟紟五幅,无紞。

  

  小敛之衣,祭服不倒,君无襚,大夫士毕主人之祭服,亲戚之衣受之,不以即陈。小敛,君大夫士皆用复衣复衾。大敛,君大夫士祭服无筭,君褶衣褶衾,大夫士犹小敛也。

  

  袍必有表,不禅。衣必有裳,谓之一称。

  

  凡陈衣者实之箧,取衣者亦以箧,升降者自西阶。凡陈衣不诎,非列采不入,絺绤纻不入。

  

  凡敛者袒,迁尸者袭。君之丧,大胥是敛,众胥佐之。大夫之丧,大胥侍之,众胥是敛。士之丧,胥为侍,士是敛。

  

  小敛大敛,祭服不倒,皆左衽,结绞不纽。

  

  敛者,既敛必哭,士与其执事则敛,敛焉则为之壹不食。凡敛者六人。

  

  君锦冒黼杀,缀旁七。大夫玄冒黼杀,缀旁五。士缁冒赪杀,缀旁三。凡冒,质长与手齐,杀三尺。自小敛以往用夷衾,夷衾质杀之,裁犹冒也。

  

  君将大敛,子弁绖即位于序端,卿大夫即位于堂廉楹西,北面东上,父兄堂下北面,夫人命妇尸西东面,外宗房中南面,小臣铺席,商祝铺绞紟衾衣,士盥于盘上,士举迁尸于敛上。卒敛,宰告,子冯之踊,夫人东面亦如之。

  

  大夫之丧,将大敛,既铺绞紟衾衣,君至,主人迎先入门右,巫止于门外。君释菜,祝先入升堂。君即位于序端,卿大夫即位于堂廉楹西,北面东上,主人房外南面,主妇尸西东面。迁尸卒敛,宰告,主人降,北面于堂下,君抚之,主人拜稽颡。君降,升主人冯之,命主妇冯之。

  

  士之丧,将大敛,君不在,其余礼犹大夫也。

  

  铺绞紟踊,铺衾踊,铺衣踊,迁尸踊,敛衣踊,敛衾踊,敛绞紟踊。

  

  君抚大夫,抚内命妇,大夫抚室老,抚侄娣,君大夫冯父母妻长子,不冯庶子,士冯父母妻长子庶子。庶子有子,则父母不冯其尸。凡冯尸者,父母先,妻子后。君于臣抚之,父母于子执之,子于父母冯之,妇于舅姑奉之,舅姑于妇抚之,妻于夫拘之,夫于妻于昆弟执之。冯尸不当君所。凡冯尸,兴必踊。

  

  父母之丧,居倚庐,不涂,寝苫枕。由,非丧事不言。君为庐宫之,大夫士襢之。

  

  既葬,柱楣涂庐,不于显者,君大夫士皆宫之。

  

  凡非适子者,自未葬,以于隐者为庐。

  

  既葬,与人立,君言王事,不言国事。大夫士言公事,不言家事。

  

  君既葬,王政入于国,既卒哭,而服王事。大夫士既葬,公政入于家,既卒哭,弁绖带,金革之事无辟也。

  

  既练,居垩室,不与人居。君谋国政,大大士谋家事。既祥,黝垩。祥而外无哭者。禫而内无哭者,乐作矣故也。

  

  禫而从御,吉祭而复寝。期,居庐,终丧不御于内者。父在,为母为妻齐衰期者,大功布衰九月者,皆三月不御于内。妇人不居庐,不寝苫。丧父母,既练而归。期九月者,既葬而归。

  

  公之丧,大夫俟练,士卒哭而归。

  

  大夫士,父母之丧,既练而归。朔月忌日,则归哭于宗室。诸父兄弟之丧,既卒哭而归。

  

  父不次于子,兄不次于弟。

  

  君于大夫世妇,大敛焉。为之赐,则小敛焉。

  

  于外命妇既加盖而君至,于士既殡而往,为之赐,大敛焉。夫人于世妇,大敛焉。为之赐,小敛焉。于诸妻,为之赐,大敛焉。于大夫外命妇,既殡而往。大夫士既殡,而君往焉,使人戒之,主人具殷奠之礼,俟于门外。见马首,先入门右,巫止于门外,祝代之先。君释菜于门内,祝先升自阼阶,负墉南面。君即位于阼,小臣二人执戈立于前,二人立于后。摈者进,主人拜稽颡。君称言,视祝而踊,主人踊。

  

  大夫则奠可也,士则出俟于门外,命之反奠,乃反奠。卒奠,主人先俟于门外,君退,主人送于门外,拜稽颡。君于大夫疾,三问之。在殡,三往焉。士疾,壹问之。在殡,壹往焉。

  

  君吊则复殡服。

  

  夫人吊于大夫士,主人出迎于门外。见马首,先入门右。夫人入升堂即位,主妇降自西阶,拜稽颡于下。夫人视世子而踊,奠如君至之礼。夫人退,主妇送于门内,拜稽颡。主人送于大门之外,不拜。

  

  大夫君,不迎于门外。入即位于堂下,主人北面,众主人南面,妇人即位于房中。若有君命,命夫命妇之命,四邻宾客,其君后主人而拜。

  

  君吊,见尸柩而后踊。

  

  大夫士,若君不戒而往,不具殷奠。君退必奠。

  

  君大棺八寸,属六寸,椑四寸。上大夫大棺八寸,属六寸。下大夫大棺六寸,属四寸。士棺六寸。

  

  君里棺用朱绿,用杂金鐕。大夫里棺用玄绿,用牛骨鐕。士不绿。

  

  君盖用漆,三衽三束。大夫盖用漆,二衽二束。士盖不用漆,二衽二束。

  

  君大夫鬊爪,实于绿中。士埋之。

  

  君殡用輴,攒至于上,毕涂屋。大夫殡以帱,攒置于西序,涂不暨于棺。士殡见衽,涂上帷之。

  

  熬君四种八筐,大夫三种六筐,士二种四筐,加鱼腊焉。

  

  饰棺,君龙帷,三池,振容,黼荒。火三列,黼三列。素锦褚,加伪荒,纁纽六。齐,五采,五贝,黼翣二,黻翣二,画翣二,皆戴圭。鱼跃拂池,君纁戴六,纁披六。大夫画帷,二池,不振容。画荒,火三列,黻三列。素锦褚,纁纽二,玄纽二。齐,三采,三贝,黻翣二,画翣二,皆戴绥,鱼跃拂池,大夫戴,前纁后玄,披亦如之。士布帷布荒,一池。揄绞,纁纽二,缁纽二。齐,三采,一贝。画翣二,皆戴绥,士戴,前纁后缁,二披用纁。

  

  君葬用輴,四綍二碑,御棺用羽葆。大夫葬用輴,二綍二碑,御棺用茅。士葬用国车,二綍无碑。比出宫,御棺用功布。

  

  凡封,用綍去碑负引。君封以衡,大夫士以咸。君命毋哗,以鼓封。大夫命毋哭,士哭者相止也。

  

  君松椁,大夫柏椁,士杂木椁。

  

  棺椁之间,君容柷,大夫容壶,士容甒。

  

  君里椁虞筐,大夫不里椁,士不虞筐。

  
  

  《礼记丧服四制》

  

  凡礼之大体,体天地,法四时,则阴阳,顺人情,故谓之礼。訾之者是不知礼之所由生也。

  

  夫礼,吉凶异道,不得相干,取之阴阳也。丧有四制,变而从宜,取之四时也。有恩,有理,有节,有权,取之人情也。恩者仁也,理者义也,节者礼也,权者知也。仁义礼知,人道具矣。

  

  其恩厚者其服重,故为父斩衰三年,以恩制者也。

  

  门内之治恩揜义,门外之治义断恩。资于事父以事君,而敬同。贵贵尊尊,义之大者也。故为君亦斩衰三年,以义制者也。

  

  三日而食,三月而沐,期而练,毁不灭性,不以死伤生也。丧不过三年,苴衰不补,坟墓不培,祥之日,鼓素琴,告民有终也,以节制者也。资于事父以事母,而爱同。天无二日,土无二主,国无二君,家无二尊,以一治之也。故父在为母齐衰期者,见无二尊也。

  

  杖者何也?爵也。三日授子杖,五日授大夫杖,七日授士杖。或曰担主,或曰辅病。妇人童子不杖,不能病也。百官备,百物具。不言而事行者扶而起,言而后事行者杖而起。身自执事而后行者面垢而已,秃者不髽,伛者不袒,跛者不踊,老病不止酒肉。凡此八者,以权制者也。

  

  始死,三日不怠,三月不解,期悲哀,三年忧,恩之杀也。圣人因杀以制节,此丧之所以三年。贤者不得过,不肖者不得不及,此丧之中庸也,王者之所常行也。

  

  《书》曰:“高宗谅闇,三年不言”,善之也。王者莫不行此礼,何以独善之也?曰:高宗者武丁,武丁者,殷之贤王也,继世即位而慈良于丧。当此之时,殷衰而复兴,礼废而复起,故善之。善之,故载之书中而高之,故谓之高宗。三年之丧,君不言。《书》云:“高宗谅闇,三年不言”,此之谓也。然而曰言不文者,谓臣下也。

  

  礼:斩衰之丧,唯而不对;齐衰之丧,对而不言;大功之丧,言而不议;缌小功之丧,议而不及乐。

  

  父母之丧,衰冠,绳缨,菅屦,三日而食粥,三月而沐,期十三月而练冠,三年而祥。

  

  比终兹三节者,仁者可以观其爱焉,知者可以观其理焉,强者可以观其志焉。礼以治之,义以正之。孝子、弟弟、贞妇皆可得而察焉。

  
  《礼记丧服小记》

  斩衰括发以麻,为母括发以麻,免而以布,齐衰恶笄以终丧。男子冠而妇人笄,男子免而妇人髽。其义:为男子则免,为妇人则髽。

  

  苴杖,竹也;削杖,桐也。

  

  祖父卒,而后为祖母后者三年。

  

  为父母长子稽颡,大夫吊之,虽缌必稽颡。妇人为夫与长子稽颡,其余则否。

  

  男主必使同姓,妇主必使异姓。

  

  为父后者,为出母无服。

  

  亲亲以三为五,以五为九,上杀,下杀,旁杀而亲毕矣。

  

  王者禘其祖之所自出,以其祖配之而立四庙。庶子王亦如之。

  

  别子为祖,继别为宗。继祢者为小宗。有五世而迁之宗,其继高祖者也,是故祖迁于上,宗易于下。尊祖故敬宗,敬宗所以尊祖祢也。庶子不祭祖者,明其宗也。

  

  庶子不为长子斩,不继祖与祢故也。

  

  庶子不祭殇与无后者,殇与无从者,从祖祔食。

  

  庶子不祭祢者,明其宗也。

  

  亲亲、尊尊、长长、男女之有别,人道之大者也。

  

  从服者,所从亡则已。属从者,所从虽没也服。妾从女君而出,则不为女君之子服。

  

  礼不王不禘。

  

  世子不降妻之父母,其为妻也,与大夫之适子同。

  

  父为士,子为天子诸侯,则祭以天子诸侯,其尸服以士服。父为天子诸侯,子为士,祭以士,其尸服以士服。

  

  妇当丧而出,则除之。为父母丧,未练而出,则三年。既练而出则已,未练而反则期,既练而反则遂之。

  

  再期之丧,三年也。期之丧,二年也。九月七月之丧,三时也。五月之丧,二时也。三月之丧,一时也。故期而祭,礼也。期而除丧,道也。祭不为除丧也。

  

  三年而后葬者必再祭,其祭之间不同时,而除丧。

  

  大功者,主人之丧。有三年者,则必为之再祭。朋友虞祔而已。

  

  士妾有子而为之缌,无子则已。

  

  生不及祖父母诸父昆弟,而父税丧,已则否。

  

  为君之父母妻长子,君已除丧,而后闻丧,则不税。降而在缌小功者,则税之。近臣,君服斯服矣。其余从而服,不从而税。君虽未知丧,臣服已。

  

  虞杖不入于室,祔杖不升于堂。

  

  为君母后者,君母卒,则不为君母之党服。

  

  绖杀五分而去一,杖大如绖。

  

  妾为君之长子,与女君同。

  

  除丧者,先重者。易服者,易轻者。

  

  无事不辟庙门,哭皆于其次。

  

  复与书铭,自天子达于士,其辞一也。男子称名,妇人书姓与伯仲,如不知姓则书氏。

  

  斩衰之葛,与齐衰之麻同。齐衰之葛,与大功之麻同。麻同皆兼服之。

  

  报葬者报虞,三月而后卒哭。

  

  父母之丧偕,先葬者不虞祔,待后事,其葬服斩衰。

  

  大夫降其庶子,其孙不降其父。

  

  大夫不主士之丧。

  

  为慈母之父母无服。

  

  夫为人后者,其妻为舅姑大功。

  

  士祔于大夫,则易牲。

  

  继父不同居也者,必尝同居,皆无主后。同财而祭其祖祢为同居,有主后者为异居。

  

  哭朋友者,于门外之右,南面。

  

  祔葬者不筮宅。

  

  士大夫不得祔于诸侯。祔于诸祖父之为士大夫者,其妻祔于诸祖姑,妾祔于妾祖姑,亡则中一以上而祔。祔必以其昭穆,诸侯不得祔于天子,天子诸侯大夫可以祔于士。

  

  为母之君母,母卒则不服。

  

  宗子,母在为妻禫。

  

  为慈母后者,为庶母可也,为祖庶母可也。

  

  为父母妻长子禫。

  

  慈母与妾母,不世祭也。

  

  丈夫冠而不为殇,妇人笄而不为殇。

  

  为殇后者,以其服服之。

  

  久而不葬者,唯主丧者不除,其余以麻终,月数者除丧则已。

  

  箭笄终丧三年。

  

  齐衰三月,与大功同者绳屦。

  

  练筮日,筮尸,视濯皆要绖杖绳屦,有司告具而后去。杖筮日,筮尸,有司告事毕而后杖。拜送宾,大祥吉服而筮尸。

  

  庶子在父之室,则为其母不禫。庶子不以杖即位。父不主庶子之丧,则孙以杖即位可也。父在,庶子为妻以杖,即位可也。

  

  诸侯吊于异国之臣.则其君为主。

  

  诸侯吊,必皮弁锡衰。所吊虽已葬,主人必免。主人未丧服,则君亦不锡衰。

  

  养有疾者不丧服,遂以主其丧。非养者入主人之丧,则不易己之丧服。养尊者必易服,养卑者否。

  

  妾无妾祖姑者,易牲而祔于女君可也。

  

  妇之丧,虞,卒哭。其夫若子主之,祔则舅主之。

  

  士不摄大夫。士摄大夫,唯宗子。

  

  主人未除丧,有兄弟自他国至,则主人不免而为主。

  

  陈器之道,多陈之而省纳之可也,省陈之而尽纳之可也。

  

  奔兄弟之丧,先之墓而后之家,为位而哭。所知之丧,则哭于宫而后之墓。

  

  父不为众子次于外。

  

  与诸侯为兄弟者服斩。

  

  下殇小功带澡麻不绝,本诎而反以报之。

  

  妇祔于祖姑,祖姑有三人,则祔于亲者。

  

  其妻为大夫而卒,而后其夫不为大夫,而祔于其妻,则不易牲。妻卒而后夫为大夫,而祔于其妻,则以大夫牲。

  

  为父后者为出母无服。无服也者,丧者不祭故也。

  

  妇人不为主而杖者,姑在,为夫杖,母为长子削杖。女子子在室,为父母,其主丧者不杖,则子一人杖。

  

  缌小功,虞,卒哭,则免。既葬而不报虞,则虽主人皆冠,及虞则皆免。为兄弟既除丧已,及其葬也,反服其服,报虞卒哭则免,如不报虞则除之。远葬者,比反哭者皆冠,及郊而后免,反哭。

  

  君吊,虽不当免时也,主人必免。不散麻,虽异国之君免也。亲者皆免。

  

  除殇之丧者,其祭也必玄。

  

  除成丧者,其祭也朝服缟冠。

  

  奔父之丧,括发于堂上,袒,降踊,袭绖于东方。奔母之丧,不括发,袒于堂上,降踊,袭免于东方,绖即位成踊,出门,哭止。三日而五哭三袒。

  

  适妇不为舅后者,则姑为之小功。

  
  !!商书 汤誓第一

  伊尹相汤伐桀,升自陑,遂与桀战于鸣条之野,作《汤誓》。

  王曰:“格尔众庶,悉听朕言,非台小子,敢行称乱!有夏多罪,天命殛之。

  今尔有众,汝曰:‘我后不恤我众,舍我穑事而割正夏?’予惟闻汝众言,夏氏有罪,予畏上帝,不敢不正。今汝其曰:‘夏罪其如台?’夏王率遏众力,率割夏邑。有众率怠弗协,曰:‘时日曷丧?予及汝皆亡。’夏德若兹,今朕必往。”

  “尔尚辅予一人,致天之罚,予其大赉汝!尔无不信,朕不食言。尔不从誓言,予则孥戮汝,罔有攸赦。”

  〖夏社 疑至 臣扈〗汤既胜夏,欲迁其社,不可。作《夏社》、《疑至》、《臣扈》。

  〖典宝〗夏师败绩,汤遂从之,遂伐三朡,俘厥宝玉。谊伯、仲伯作《典宝》。

  !!商书 仲虺之诰第二

  汤归自夏,至于大坰,仲虺作诰。

  成汤放桀于南巢,惟有惭德。曰:“予恐来世以台为口实。”

  仲虺乃作诰,曰:“呜呼!惟天生民有欲,无主乃乱,惟天生聪明时乂,有夏昏德,民坠涂炭,天乃锡王勇智,表正万邦,缵禹旧服。兹率厥典,奉若天命。

  夏王有罪,矫诬上天,以布命于下。帝用不臧,式商受命,用爽厥师。简贤附势,实繁有徒。肇我邦于有夏,若苗之有莠,若粟之有秕。小大战战,罔不惧于非辜。

  矧予之德,言足听闻。惟王不迩声色,不殖货利。德懋懋官,功懋懋赏。用人惟己,改过不吝。克宽克仁,彰信兆民。乃葛伯仇饷,初征自葛,东征,西夷怨;南征,北狄怨,曰:‘奚独后予?’攸徂之民,室家相庆,曰:‘徯予后,后来其苏。’民之戴商,厥惟旧哉!佑贤辅德,显忠遂良,兼弱攻昧,取乱侮亡,推亡固存,邦乃其昌。德日新,万邦惟怀;志自满,九族乃离。王懋昭大德,建中于民,以义制事,以礼制心,垂裕后昆。予闻曰:‘能自得师者王,谓人莫已若者亡。好问则裕,自用则小’。呜呼!慎厥终,惟其始。殖有礼,覆昏暴。钦崇天道,永保天命。”

  !!商书 汤诰第三

  汤既黜夏命,复归于亳,作《汤诰》。

  王归自克夏,至于亳,诞告万方。王曰:“嗟!尔万方有众,明听予一人诰。

  惟皇上帝,降衷于下民。若有恒性,克绥厥猷惟后。夏王灭德作威,以敷虐于尔万方百姓。尔万方百姓,罹其凶害,弗忍荼毒,并告无辜于上下神祗。天道福善祸淫,降灾于夏,以彰厥罪。肆台小子,将天命明威,不敢赦。敢用玄牡,敢昭告于上天神后,请罪有夏。聿求元圣,与之戮力,以与尔有众请命。上天孚佑下民,罪人黜伏,天命弗僣,贲若草木,兆民允殖。俾予一人辑宁尔邦家,兹朕未知获戾于上下,栗栗危惧,若将陨于深渊。凡我造邦,无从匪彝,无即慆淫,各守尔典,以承天休。尔有善,朕弗敢蔽;罪当朕躬,弗敢自赦,惟简在上帝之心。其尔万方有罪,在予一人;予一人有罪,无以尔万方。呜呼!尚克时忱,乃亦有终。”

  〖明居〗咎单作《明居》。

  !!商书 伊训第四

  成汤既没,太甲元年,伊尹作《伊训》、《肆命》、《徂后》。

  惟元祀十有二月乙丑,伊尹祠于先王。奉嗣王祗见厥祖,侯、甸群后咸在,百官緫己以听冢宰。伊尹乃明言烈祖之成德,以训于王。曰:“呜呼!古有夏先后,方懋厥德,罔有天灾。山川鬼神,亦莫不宁,暨鸟兽鱼鳖咸若。于其子孙弗率,皇天降灾,假手于我有命,造攻自鸣条,朕哉自亳。惟我商王,布昭圣武,代虐以宽,兆民允怀。今王嗣厥德,罔不在初,立爱惟亲,立敬惟长,始于家邦,终于四海。呜呼!先王肇修人纪,从谏弗咈,先民时若。居上克明,为下克忠,与人不求备,检身若不及,以至于有万邦,兹惟艰哉!敷求哲人,俾辅于尔后嗣,制官刑,儆于有位。曰:‘敢有恒舞于宫,酣歌于室,时谓巫风,敢有殉于货色,恒于游畋,时谓淫风。敢有侮圣言,逆忠直,远耆德,比顽童,时谓乱风。惟兹三风十愆,卿士有一于身,家必丧;邦君有一于身,国必亡。臣下不匡,其刑墨,具训于蒙士。’呜呼!嗣王祗厥身,念哉!圣谟洋洋,嘉言孔彰。惟上帝不常,作善降之百祥,作不善降之百殃。尔惟德罔小,万邦惟庆;尔惟不德罔大,坠厥宗。”

  !!商书 太甲上第五

  太甲既立,不明,伊尹放诸桐。三年复归于亳,思庸,伊尹作《太甲》三篇。

  惟嗣王不惠于阿衡,伊尹作书曰:“先王顾諟天之明命,以承上下神祗。

  社稷宗庙,罔不祗肃。天监厥德,用集大命,抚绥万方。惟尹躬克左右厥辟,宅师,肆嗣王丕承基绪。惟尹躬先见于西邑夏,自周有终。相亦惟终;其后嗣王罔克有终,相亦罔终,嗣王戒哉!祗尔厥辟,辟不辟,忝厥祖。”

  王惟庸罔念闻。伊尹乃言曰:“先王昧爽丕显,坐以待旦。旁求俊彦,启迪后人,无越厥命以自覆。慎乃俭德,惟怀永图。若虞机张,往省括于度则释。钦厥止,率乃祖攸行,惟朕以怿,万世有辞。”

  王未克变。伊尹曰:“兹乃不义,习与性成。予弗狎于弗顺,营于桐宫,密迩先王其训,无俾世迷。王徂桐宫居忧,克终允德。”

  !!商书 太甲中第六

  惟三祀十有二月朔,伊尹以冕服奉嗣王归于亳,作书曰:“民非后,罔克胥匡以生;后非民,罔以辟四方。皇天眷佑有商,俾嗣王克终厥德,实万世无疆之休。”

  王拜手稽首曰:“予小子不明于德,自厎不类。欲败度,纵败礼,以速戾于厥躬。天作孽,犹可违;自作孽,不可逭。既往背师保之训,弗克于厥初,尚赖匡救之德,图惟厥终。”

  伊尹拜手稽首曰:“修厥身,允德协于下,惟明后。先王子惠困穷,民服厥命,罔有不悦。并其有邦厥邻,乃曰:‘徯我后,后来无罚。’王懋乃德,视乃厥祖,无时豫怠。奉先思孝,接下思恭。视远惟明;听德惟聪。朕承王之休无斁。”

  !!商书 太甲下第七

  伊尹申诰于王曰:“呜呼!惟天无亲,克敬惟亲。民罔常怀,怀于有仁。鬼神无常享,享于克诚。天位艰哉!德惟治,否德乱。与治同道,罔不兴;与乱同事,罔不亡。终始慎厥与,惟明明后。先王惟时懋敬厥德,克配上帝。今王嗣有令绪,尚监兹哉。若升高,必自下,若陟遐,必自迩。无轻民事,惟难;无安厥位,惟危。慎终于始。有言逆于汝心,必求诸道;有言逊于汝志,必求诸非道。

  呜呼!弗虑胡获?弗为胡成?一人元良,万邦以贞。君罔以辩言乱旧政,臣罔以宠利居成功,邦其永孚于休。”

  !!商书 咸有一德第八

  伊尹作《咸有一德》。

  伊尹既复政厥辟,将告归,乃陈戒于德。曰:“呜呼!天难谌,命靡常。常厥德,保厥位。厥德匪常,九有以亡。夏王弗克庸德,慢神虐民。皇天弗保,监于万方,启迪有命,眷求一德,俾作神主。惟尹躬暨汤,咸有一德,克享天心,受天明命,以有九有之师,爰革夏正。非天私我有商,惟天佑于一德;非商求于下民,惟民归于一德。德惟一,动罔不吉;德二三,动罔不凶。惟吉凶不僣在人,惟天降灾祥在德。今嗣王新服厥命,惟新厥德。终始惟一,时乃日新。任官惟贤材,左右惟其人。臣为上为德,为下为民。其难其慎,惟和惟一。德无常师,主善为师。善无常主,协于克一。俾万姓咸曰:‘大哉王言。’又曰:‘一哉王心’。

  克绥先王之禄,永厎烝民之生。呜呼!七世之庙,可以观德。万夫之长,可以观政。后非民罔使;民非后罔事。无自广以狭人,匹夫匹妇,不获自尽,民主罔与成厥功。”

  〖沃丁〗沃丁既葬伊尹于亳,咎单遂训伊尹事,作《沃丁》。

  〖咸乂〗伊陟相大戊,亳有祥桑谷共生于朝。伊陟赞于巫咸,作《咸乂》四篇。

  〖伊陟 原命〗太戊赞于伊陟,作《伊陟》、《原命》。

  〖仲丁〗仲丁迁于嚣,作《仲丁》。

  〖河亶甲〗河亶甲居相,作《河亶甲》。

  〖祖乙〗祖乙圯于耿,作《祖乙》。

  !!商书 盘庚上第九

  盘庚五迁,将治亳殷,民咨胥怨。作《盘庚》三篇。

  盘庚迁于殷,民不适有居,率吁众慼出,矢言曰:“我王来,既爰宅于兹,重我民,无尽刘。不能胥匡以生,卜稽,曰其如台?先王有服,恪谨天命,兹犹不常宁;不常厥邑,于今五邦。今不承于古,罔知天之断命,矧曰其克从先王之烈?若颠木之有由蘖,天其永我命于兹新邑,绍复先王之大业,厎绥四方。”

  盘庚斅于民,由乃在位以常旧服,正法度。曰:“无或敢伏小人之攸箴!”王命众,悉至于庭。

  王若曰:“格汝众,予告汝训汝,猷黜乃心,无傲从康。

  古我先王,亦惟图任旧人共政。王播告之,修不匿厥指。王用丕钦;罔有逸言,民用丕变。今汝聒聒,起信险肤,予弗知乃所讼。非予自荒兹德,惟汝含德,不惕予一人。予若观火,予亦拙谋作,乃逸。

  若网在纲,有条而不紊;若农服田,力穑乃亦有秋。汝克黜乃心,施实德于民,至于婚友,丕乃敢大言汝有积德。乃不畏戎毒于远迩,惰农自安,不昏作劳,不服田亩,越其罔有黍稷。

  汝不和吉言于百姓,惟汝自生毒,乃败祸奸宄,以自灾于厥身。乃既先恶于民,乃奉其恫,汝悔身何及!相时憸民,犹胥顾于箴言,其发有逸口,矧予制乃短长之命!汝曷弗告朕,而胥动以浮言,恐沈于众?若火之燎于原,不可向迩,其犹可扑灭。则惟汝众自作弗靖,非予有咎。

  迟任有言曰:‘人惟求旧,器非求旧,惟新。’古我先王暨乃祖乃父胥及逸勤,予敢动用非罚?世选尔劳,予不掩尔善。兹予大享于先王,尔祖其从与享之。

  作福作灾,予亦不敢动用非德。

  予告汝于难,若射之有志。汝无侮老成人,无弱孤有幼。各长于厥居。勉出乃力,听予一人之作猷。

  无有远迩,用罪伐厥死,用德彰厥善。邦之臧,惟汝众;邦之不臧,惟予一人有佚罚。凡尔众,其惟致告:自今至于后日,各恭尔事,齐乃位,度乃口。罚及尔身,弗可悔。”

  !!商书 盘庚中第十

  盘庚作,惟涉河以民迁。乃话民之弗率,诞告用亶。其有众咸造,勿亵在王庭,盘庚乃登进厥民。曰:“明听朕言,无荒失朕命!呜呼!古我前后,罔不惟民之承保。后胥慼鲜,以不浮于天时。殷降大虐,先王不怀厥攸作,视民利用迁。

  汝曷弗念我古后之闻?承汝俾汝惟喜康共,非汝有咎比于罚。予若吁怀兹新邑,亦惟汝故,以丕从厥志。

  今予将试以汝迁,安定厥邦。汝不忧朕心之攸困,乃咸大不宣乃心,钦念以忱动予一人。尔惟自鞠自苦,若乘舟,汝弗济,臭厥载。尔忱不属,惟胥以沈。

  不其或稽,自怒曷瘳?汝不谋长以思乃灾,汝诞劝忧。今其有今罔后,汝何生在上?今予命汝,一无起秽以自臭,恐人倚乃身,迂乃心。予迓续乃命于天,予岂汝威,用奉畜汝众。

  予念我先神后之劳尔先,予丕克羞尔,用怀尔,然。失于政,陈于兹,高后丕乃崇降罪疾,曰‘曷虐朕民?’汝万民乃不生生,暨予一人猷同心,先后丕降与汝罪疾,曰:‘曷不暨朕幼孙有比?’故有爽德,自上其罚汝,汝罔能迪。古我先后既劳乃祖乃父,汝共作我畜民,汝有戕则在乃心!我先后绥乃祖乃父,乃祖乃父乃断弃汝,不救乃死。

  兹予有乱政同位,具乃贝玉。乃祖乃父丕乃告我高后曰:‘作丕刑于朕孙!’迪高后丕乃崇降弗祥。

  呜呼!今予告汝:不易!永敬大恤,无胥绝远!汝分猷念以相从,各设中于乃心。乃有不吉不迪,颠越不恭,暂遇奸宄,我乃劓殄灭之,无遗育,无俾易种于兹新邑。

  往哉!生生!今予将试以汝迁,永建乃家。”

  !!商书 盘庚下第十一

  盘庚既迁,奠厥攸居,乃正厥位,绥爰有众。曰:“无戏怠,懋建大命!今予其敷心腹肾肠,历告尔百姓于朕志。罔罪尔众,尔无共怒,协比谗言予一人。

  古我先王将多于前功,适于山。用降我凶,德嘉绩于朕邦。今我民用荡析离居,罔有定极,尔谓朕曷震动万民以迁?肆上帝将复我高祖之德,乱越我家。朕及笃敬,恭承民命,用永地于新邑。肆予冲人,非废厥谋,吊由灵各;非敢违卜,用宏兹贲。

  呜呼!邦伯师长百执事之人,尚皆隐哉!予其懋简相尔念敬我众。朕不肩好货,敢恭生生。鞠人谋人之保居,叙钦。今我既羞告尔于朕志若否,罔有弗钦!无总于货宝,生生自庸。式敷民德,永肩一心。”

  !!商书 说命上第十二

  高宗梦得说,使百工营求诸野,得诸傅岩,作《说命》三篇。

  王宅忧,亮阴三祀。既免丧,其惟弗言,群臣咸谏于王曰:“呜呼!知之曰明哲,明哲实作则。天子惟君万邦,百官承式,王言惟作命,不言臣下罔攸禀令。”

  王庸作书以诰曰:“以台正于四方,惟恐德弗类,兹故弗言。恭默思道,梦帝赉予良弼,其代予言。”乃审厥象,俾以形旁求于天下。说筑傅岩之野,惟肖。

  爰立作相。王置诸其左右。

  命之曰:“朝夕纳诲,以辅台德。若金,用汝作砺;若济巨川,用汝作舟楫;若岁大旱,用汝作霖雨。启乃心,沃朕心,若药弗瞑眩,厥疾弗瘳;若跣弗视地,厥足用伤。惟暨乃僚,罔不同心,以匡乃辟。俾率先王,迪我高后,以康兆民。

  呜呼!钦予时命,其惟有终。”

  说复于王曰:“惟木从绳则正,后从谏则圣。后克圣,臣不命其承,畴敢不祗若王之休命?”

  !!商书 说命中第十三

  惟说命总百官,乃进于王曰:“呜呼!明王奉若天道,建邦设都,树后王君公,承以大夫师长,不惟逸豫,惟以乱民。惟天聪明,惟圣时宪,惟臣钦若,惟民从乂。惟口起羞,惟甲胄起戎,惟衣裳在笥,惟干戈省厥躬。王惟戒兹,允兹克明,乃罔不休。惟治乱在庶官。官不及私昵,惟其能;爵罔及恶德,惟其贤。

  虑善以动,动惟厥时。有其善,丧厥善;矜其能,丧厥功。惟事事,乃其有备,有备无患。无启宠纳侮,无耻过作非。惟厥攸居,政事惟醇。黩予祭祀,时谓弗钦。礼烦则乱,事神则难。”

  王曰:“旨哉!说。乃言惟服。乃不良于言,予罔闻于行。”说拜稽首曰:“非知之艰,行之惟艰。王忱不艰,允协于先王成德,惟说不言有厥咎。”

  !!商书 说命下第十四

  王曰:“来!汝说。台小子旧学于甘盘,既乃遯于荒野,入宅于河。自河徂亳,暨厥终罔显。尔惟训于朕志,若作酒醴,尔惟麹糵;若作和羹,尔惟盐梅。

  尔交修予,罔予弃,予惟克迈乃训。”

  说曰:“王,人求多闻,时惟建事,学于古训乃有获。事不师古,以克永世,匪说攸闻。惟学,逊志务时敏,厥修乃来。允怀于兹,道积于厥躬。惟斅学半,念终始典于学,厥德修罔觉。监于先王成宪,其永无愆。惟说式克钦承,旁招俊乂,列于庶位。”

  王曰:“呜呼!说,四海之内,咸仰朕德,时乃风。股肱惟人,良臣惟圣。

  昔先正保衡作我先王,乃曰:‘予弗克俾厥后惟尧舜,其心愧耻,若挞于市。’一夫不获,则曰时予之辜。佑我烈祖,格于皇天。尔尚明保予,罔俾阿衡专美有商。惟后非贤不乂,惟贤非后不食。其尔克绍乃辟于先王,永绥民。”

  说拜稽首曰:“敢对扬天子之休命。”

  !!商书 高宗肜日第十五

  高宗祭成汤,有飞雉升鼎耳而雊,祖己训诸王,作《高宗肜日》、《高宗之训》。

  高宗肜日,越有雊雉。祖己曰:“惟先格王,正厥事。”乃训于王。曰:“惟天监下民,典厥义。降年有永有不永,非天夭民,民中绝命。民有不若德,不听罪。天既孚命正厥德,乃曰:‘其如台?’呜呼!王司敬民,罔非天胤,典祀无丰于昵。”

  !!商书 西伯戡黎第十六

  殷始咎周,周人乘黎。祖伊恐,奔告于受,作《西伯戡黎》。

  西伯既戡黎,祖伊恐,奔告于王。曰:“天子!天既讫我殷命。格人元龟,罔敢知吉。非先王不相我后人,惟王淫戏用自绝。故天弃我,不有康食。不虞天性,不迪率典。今我民罔弗欲丧,曰:‘天曷不降威?’大命不挚,今王其如台?”王曰:“呜呼!我生不有命在天?”祖伊反曰:“呜呼!乃罪多,参在上,乃能责命于天?殷之即丧,指乃功,不无戮于尔邦!”

  !!商书 微子第十七

  殷既错天命,微子作诰父师、小师。

  微子若曰:“父师、少师!殷其弗或乱正四方。我祖厎遂陈于上,我用沈酗于酒,用乱败厥德于下。殷罔不小大好草窃奸宄。卿士师师非度。凡有辜罪,乃罔恒获,小民方兴,相为敌仇。今殷其沦丧,若涉大水,其无津涯。殷遂丧,越至于今!”曰:“父师、少师,我其发出狂?吾家耄逊于荒?今尔无指告,予颠隮,若之何其?”父师若曰:“王子!天毒降灾荒殷邦,方兴沈酗于酒,乃罔畏畏,咈其耇长旧有位人。

  今殷民乃攘窃神祗之犠牷牲用以容,将食无灾。

  降监殷民,用又雠敛,召敌雠不怠。罪合于一,多瘠罔诏。

  商今其有灾,我兴受其败;商其沦丧,我罔为臣仆。诏王子出,迪我旧云刻子。王子弗出,我乃颠隮。自靖,人自献于先王,我不顾行遁。”
!!商颂 那

猗与那与!置我鞉鼓。奏鼓简简,衎我烈祖。汤孙奏假,绥我思成。鞉鼓渊渊,嘒嘒管声。既和且平,依我磬声。于赫汤孙!穆穆厥声。庸鼓有斁,万舞有奕。我有嘉客,亦不夷怿。自古在昔,先民有作。温恭朝夕,执事有恪,顾予烝尝,汤孙之将。

!!商颂 烈祖

嗟嗟烈祖!有秩斯祜。申锡无疆,及尔斯所。既载清酤,赉我思成。亦有和羹,既戒既平。鬷假无言,时靡有争。绥我眉寿,黄耇无疆。约軧错衡,八鸾鸧鸧。以假以享,我受命溥将。

自天降康,丰年穰穰。来假来飨,降福无疆。顾予烝尝,汤孙之将。

!!商颂 玄鸟

天命玄鸟,降而生商,宅殷土芒芒。古帝命武汤,正域彼四方。

方命厥后,奄有九有。商之先后,受命不殆,在武丁孙子。武丁孙子,武王靡不胜。

龙旂十乘,大糦是承。邦畿千里,维民所止,肇域彼四海。

四海来假,来假祁祁。景员维河。殷受命咸宜,百禄是何。

!!商颂 长发

浚哲维商,长发其祥。洪水芒芒,禹敷下土方。外大国是疆,幅陨既长。有娀方将,帝立子生商。

玄王桓拨,受小国是达,受大国是达。率履不越,遂视既发。相土烈烈,海外有截。

帝命不违,至于汤齐。汤降不迟,圣敬日跻。昭假迟迟,上帝是祗,帝命式于九围。

受小球大球,为下国缀旒,何天之休。不竞不絿,不刚不柔。敷政优优。百禄是遒。

受小共大共,为下国骏厖。何天之龙,敷奏其勇。不震不动,不戁不竦,百禄是纟忽。

武王载旆,有虔秉钺。如火烈烈,则莫我敢曷。苞有三蘖,莫遂莫达。九有有截,韦顾既伐,昆吾夏桀。

昔在中叶,有震且业。允也天子,降予卿士。实维阿衡,实左右商王。

!!商颂 殷武

挞彼殷武,奋伐荆楚。罙入其阻,裒荆之旅。有截其所,汤孙之绪。

维女荆楚,居国南乡。昔有成汤,自彼氐羌,莫敢不来享,莫敢不来王。曰商是常。

天命多辟,设都于禹之绩。岁事来辟,勿予祸适,稼穑匪解。

天命降监,下民有严。不僣不滥,不敢怠遑。命于下国,封建厥福。

商邑翼翼,四方之极。赫赫厥声,濯濯厥灵。寿考且宁,以保我后生。

陟彼景山,松伯丸丸。是断是迁,方斫是虔。松桷有梴,旅楹有闲,寝成孔安。
上经

  

!!乾(卦一)

(乾下乾上)

  

```

   《乾》:元,亨,利,贞。

     初九:潜龙,勿用。

     九二:见龙在田,利见大人。

     九三:君子终日乾乾,夕惕若厉,无咎。

     九四:或跃在渊,无咎。

     九五:飞龙在天,利见大人。

     上九:亢龙,有悔。

     用九:见群龙无首,吉。

     《彖》曰:大哉乾元,万物资始,乃统天。云行雨施,品物流形。大明终始,六位时成。时乘六龙以御天。乾道变化,各正性命。保合大和,乃利贞。首出庶物,万国威宁。

     《象》曰:天行健,君子以自强不息。“潜龙勿用”,阳在下也。“见龙在田”,德施普也。“终日乾乾”,反复道也。“或跃在渊”,进无咎也。“飞龙在天”,大人造也。“亢龙有悔”,盈不可久也。“用九”,天德不可为首也。

     《文言》曰:“元”者,善之长也;“亨”者,嘉之会也;“利”者,义之和也;“贞”者,事之干也。君子体仁,足以长人;嘉会,足以合礼;利物,足以和义;贞固,足以干事。君子行此四德者,故曰“乾:元、亨、利、贞。”

     初九曰“潜龙勿用”,何谓也?子曰:“龙,德而隐者也。不易乎世,不成乎名,遯世无闷,不见是而无闷。乐则行之,忧则违之,确乎其不可拔,潜龙也。”

     九二曰“见龙在田,利见大人”,何谓也?子曰:“龙德而正中者也。庸言之信,庸行之谨,闲邪存其诚,善世而不伐,德博而化。《易》曰:‘见龙在田,利见大人’,君德也。”

     九三曰“君子终日乾乾,夕惕若厉,无咎”,何谓也?子曰:“君子进德修业。忠信所以进德也。修辞立其诚,所以居业也。知至至之,可与几也。知终终之,可与存义也。是故居上位而不骄,在下位而不忧,故乾乾因其时而惕,虽危无咎矣。”

     九四曰“或跃在渊,无咎”,何谓也?子曰:“上下无常,非为邪也。进退无恒,非离群也。君子进德修业,欲及时也,故无咎。”

     九五曰“飞龙在天,利见大人”,何谓也?子曰:“同声相应,同气相求。

     水流湿,火就燥,云从龙,风从虎,圣人作而万物睹。本乎天者亲上,本乎地者亲下,则各从其类也。”

     上九曰“亢龙有悔”,何谓也?子曰:“贵而无位,高而无民,贤人在下位而无辅,是以动而有悔也。”

     “潜龙勿用”,下也。“见龙在田”,时舍也。“终日乾乾”,行事也。“或跃在渊”,自试也。“飞龙在天”,上治也。“亢龙有悔”,穷之灾也。乾元“用九”,天下治也。

     “潜龙勿用”,阳气潜藏。“见龙在田”,天下文明。“终日乾乾”,与时偕行。“或跃在渊”,乾道乃革。“飞龙在天”,乃位乎天德。“亢龙有悔”,与时偕极。乾元“用九”,乃见天则。

     《乾》“元”者,始而亨者也。“利贞”者,性情也。乾始能以美利利天下,不言所利,大矣哉!大哉乾乎!刚健中正,纯粹精也。六爻发挥,旁通情也。

     “时乘六龙”,以“御天”也。“云行雨施”,天下平也。君子以成德为行,日可见之行也。“潜”之为言也,隐而未见,行而未成,是以君子“弗用”也。

     君子学以聚之,问以辩之,宽以居之,仁以行之。《易》曰:“见龙在田,利见大人”,君德也。

     九三重刚而不中,上不在天,下不在田,故乾乾因其时而惕,虽危无咎矣。

     九四重刚而不中,上不在天,下不在田,中不在人,故“或”之。“或”之者,疑之也,故“无咎”。

     夫“大人”者,与天地合其德,与日月合其明,与四时合其序,与鬼神合其吉凶,先天而天弗违,后天而奉天时。天且弗违,而况于人乎?况于鬼神乎?

     “亢”之为言也,知进而不知退,知存而不知亡,知得而不知丧。其唯圣人乎!知进退存亡而不失其正者,其唯圣人乎!


```


!!坤(卦二)

(坤下坤上)



```

     《坤》:元亨。利牝马之贞。君子有攸往,先迷,后得主,利。西南得朋,东北丧朋。安贞吉。

     《彖》曰:至哉坤元,万物资生,乃顺承天。坤厚载物,德合无疆。含弘光大,品物咸亨。牝马地类,行地无疆,柔顺利贞。君子。君子攸行,先迷失道,

     后顺得常。西南得朋,乃与类行。东北丧朋,乃终有庆。安贞之吉,应地无疆。

     《象》曰:地势坤。君子以厚德载物。

     初六:履霜,坚冰至。

     《象》曰:“履霜坚冰”,阴始凝也,驯致其道,至坚冰也。

     六二,直、方、大,不习,无不利。

     《象》曰:六二之动,直以方也。“不习无不利”,地道光也。

     六三,含章,可贞,或从王事,无成有终。

     《象》曰“含章可贞”,以时发也。“或从王事”,知光大也。

     六四,括囊,无咎无誉。

     《象》曰:“括囊无咎”,慎不害也。

     六五,黄裳,元吉。

     《象》曰:“黄裳元吉”,文在中也。

     上六,龙战于野,其血玄黄。

     《象》曰:“龙战于野”,其道穷也。

     用六,利永贞。

     《象》曰:用六“永贞”,以大终也。

     《文言》曰:坤至柔而动也刚,至静而德方,后得主而有常,含万物而化光。坤道其顺乎,承天而时行。积善之家必有馀庆,积不善之家必有馀殃。臣弑其君,

     子弑其父,非一朝一夕之故,其所由来者渐矣,由辩之不早辩也。

     《易》曰:“履霜,坚冰至”,盖言顺也。“直”其正也,“方”其义也。君子敬以直内,义以方外,敬义立而德不孤。“直、方、大,不习无不利”,则不疑其所行也。

     阴虽有美,“含”之以从王事,弗敢成也。地道也,妻道也,臣道也,地道无成而代有终也。

     天地变化,草木蕃。天地闭,贤人隐。《易》曰:“括囊,无咎无誉”,盖言谨也。

     君子黄中通理,正位居体,美在其中而畅于四支,发于事业,美之至也。阴疑于阳必战,为其嫌于无阳也,故称“龙”焉。犹未离其类也,故称“血”

     焉。夫玄黄者,天地之杂也,天玄而地黄。


```


!!屯(卦三)

  

  (震下坎上)



```

  《屯》:元亨,利贞。勿用有攸往。利建侯。

  《彖》曰:屯,刚柔始交而难生。动乎险中,大亨贞。雷雨之动满盈,天造草昧。宜寻建侯而不宁。

  《象》曰:云雷,屯。君子以经纶。

  初九,磐桓,利居贞。利建侯。

  《象》曰:虽磐桓,志行正也。以贵下贱,大得民也。

  六二,屯如邅如,乘马班如。匪寇,婚媾。女子贞不字,十年乃字。

  《象》曰:六二之难,乘刚也。十年乃字,反常也。

  六三,即鹿无虞,惟入于林中,君子几不如舍,往吝。

  《象》曰:“即鹿无虞”,以从禽也。君子舍之,往吝穷也。

  六四,乘马班如,求婚媾。往吉,无不利。

  《象》曰:求而往,明也。

  九五,屯其膏,小,贞吉;大,贞凶。

  《象》曰:“屯其膏”,施未光也。

  上六,乘马班如,泣血涟如。

  《象》曰:“泣血涟如”,何可长也。

 

```

 

!!蒙(卦四)

(坎下艮上)


```

    《蒙》:亨。匪我求童蒙,童蒙求我。初筮告,再三渎,渎则不告。利贞。《彖》曰:蒙,山下有险,险而止,蒙。“蒙亨”,以亨行,时中也。“匪

     我求童蒙,童蒙求我”。志应也。“初筮告”,以刚中也。“再三渎,渎则不告”,渎蒙也。蒙以养正,圣功也。

     《象》曰:山下出泉,蒙。君子以果行育德。

     初六,发蒙,利用刑人,用说桎梏,以往吝。

     《象》曰:“利用刑人”,以正法也。

     九二,包蒙,吉。纳妇,吉。子克家。

     《象》曰:“子克家”,刚柔节也。

     六三,勿用取女,见金夫,不有躬。无攸利。

     《象》曰:“勿用取女”,行不顺也。

     六四,困蒙,吝。

     《象》曰:“困蒙之吝”,独远实也。

     六五,童蒙,吉。

     《象》曰:“童蒙”之“吉”,顺以巽也。

     上九,击蒙,不利为寇,利御寇。

     《象》曰:“利”用“御寇”,上下顺也。

```


!!需(卦五)

(乾下坎上)

```


     《需》:有孚,光亨。贞吉,利涉大川。

     《彖》曰:“需”,须也。险在前也,刚健而不陷,其义不困穷矣。“需,有孚,光亨,贞吉”,位乎天位,以正中也。“利涉大川”,往有功也。

     《象》曰:云上于天,需。君子以饮食宴乐。

     初九,需于郊,利用恒,无咎。

     《象》曰:“需于郊”,不犯难行也。“利用恒无咎”,未失常也。

     九二,需于沙,小有言,终吉。

     《象》曰:“需于沙”,衍在中也。虽小有言,以终吉也。

     九三,需于泥,致寇至。

     《象》曰:“需于泥”,灾在外也。自我致寇,敬慎不败也。

     六四,需于血,出自穴。

     《象》曰:“需于血,”顺以听也。

     九五,需于酒食,贞吉。

     《象》曰:“酒食贞吉”,以中正也。

     上六,入于穴,有不速之客三人来,敬之终吉。

     《象》曰:“不速之客来,敬之终吉”,虽不当位,未大失也。

```


!!讼(卦六)

(坎下乾上)

```

     《讼》:有孚窒惕,中吉,终凶。利见大人。不利涉大川。

     《彖》曰:讼,上刚下险,险而健,讼。“讼有孚窒惕,中吉”,刚来而得中也。“终凶”,讼不可成也。“利见大人”,尚中正也。“不利涉大川”,入于渊也。

     《象》曰:天与水违行,讼。君子以作事谋始。

     初六,不永所事,小有言,终吉。

     《象》曰:“不永所事”,讼不可长也。虽“小有言”,其辩明也。

     九二,不克讼,归而逋。其邑人三百户,无眚。

     《象》曰:“不克讼”,归逋窜也。自下讼上,患至掇也。

     六三,食旧德,贞厉,终吉。或从王事,无成。

     《象》曰:食旧德,从上吉也。

     九四,不克讼,复既命渝。安贞吉。

     《象》曰:复即命渝,安贞不失也。

     九五:讼,元吉。

     《象》曰:“讼,元吉”以中正也。

     上九:或锡之鞶带,终朝三褫之。

     《象》曰:以讼受服,亦不足敬也。

```


!!师(卦七)

(坎下坤上)

```


     《师》:贞丈人吉,无咎。

     《彖》曰:师,众也。贞,正也。能以众正,可以王矣。刚中而应,行险而顺,以此毒天下,而民从之,吉又何咎矣。

     《象》曰:地中有水,师。君子以容民畜众。

     初六,师出以律,否臧凶。

     《象》曰:“师出以律,”失律凶也。

     九二,在师中吉,无咎,王三锡命。

     《象》曰:“在师中吉”,承天宠也。“王三锡命”,怀万邦也。

     六三,师或舆尸,凶。

     《象》曰:“师或舆尸”,大无功也。

     六四,师左次,无咎。

     《象》曰:“左次无咎”,未失常也。

     六五,田有禽。利执言,无咎。长子帅师,弟子舆尸,贞凶。

     《象》曰:“长子帅师”,以中行也。“弟子舆尸”,使不当也。

     上六,大君有命,开国承家,小人勿用。

     《象》曰:“大君有命”,以正功也。“小人勿用”,必乱邦也。

```


!!比(卦八)

(坤下坎上)

```


     《比》:吉。原筮,元,永贞,无咎。不宁方来,后夫凶。

     《彖》曰:比,吉也;比,辅也,下顺从也。“原筮,元永贞,无咎”,以刚中也。“不宁方来”,上下应也。“后夫凶”,其道穷也。

     《象》曰:地上有水,比。先王以建万国,亲诸侯。

     初六,有孚比之,无咎。有孚盈缶,终来有它,吉。

     《象》曰:比之初六,有它吉也。

     六二,比之自内,贞吉。

     《象》曰:“比之自内”,不自失也。

     六三,比之匪人。

     《象》曰:比之匪人”,不亦伤乎?

     六四,外比之,贞吉。

     《象》曰:外比于贤,以从上也。

     九五,显比,王用三驱,失前禽,邑人不诫,吉。

     《象》曰:“显比”之吉,位正中也。舍逆取顺,失前禽也。邑人不诫,上使中也。

     上六,比之无首,凶。

     《象》曰:“比之无首”,无所终也。

```


!!小畜(卦九)

(乾下巽上)

```


     《小畜》:亨。密云不雨。自我西郊。

     《彖》曰:“小畜”,柔得位而上下应之,曰小畜。健而巽,刚中而志行,乃亨。“密云不雨”,尚往也。“自我西郊”,施未行也。

     《象》曰:风行天上,“小畜”。君子以懿文德。

     初九,“复自道,何其咎?吉。

     《象》曰:“复自道”,其义“吉”也。

     九二,牵复,吉。

     《象》曰:牵复在中,亦不自失也。

     九三,舆说辐。夫妻反目。

     《象》曰:“夫妻反目”,不能正室也。

     六四,有孚,血去,惕出无咎。

     《象》曰:“有孚惕出”,上合志也。

     九五,有孚挛如,富以其邻。

     《象》曰:“有孚挛如”,不独富也。

     上九,既雨既处,尚德载。妇贞厉。月几望,君子征凶。

     《象》曰:“既雨既处”,德积载也。“君子征凶”,有所疑也。

```


!!履(卦十)

(兑下乾上)

```


     《履》:履虎尾,不咥人。亨。

     《彖》曰:“履”,柔履刚也。说而应乎乾,是以“履虎尾,不咥人”。亨,刚中正,履帝位而不疚,光明也。

     《象》曰:上天下泽,“履”。君子以辨上下,定民志。

     初九,素履往,无咎。

     《象》曰:“素履之往”,独行愿也。

     九二,履道坦坦,幽人贞吉。

     《象》曰:“幽人贞吉”,中不自乱也。

     六三,眇能视,跛能履,履虎尾,咥人,凶。武人为于大君。

     《象》曰:“眇能视”,不足以有明也。“跛能履”,不足以与行也。“咥人之凶”,位不当也。“武人为于大君”,志刚也。

     九四,履虎尾,愬愬,终吉。

     《象》曰:“愬愬终吉”。志行也。

     九五,夬履,贞厉。

     《象》曰:“夬履贞厉”,位正当也。

     上九,视履考祥,其旋元吉。

     《象》曰:元吉在上,大有庆也。

```


!!泰(卦十一)

(乾下坤上)

```


     《泰》:小往大来,吉,亨。

     《彖》曰:“泰,小往大来。吉,亨。”则是天地交而万物通也,上下交而其志同也。内阳而外阴,内健而外顺,内君子而外小人,君子道长,小人道消也。

     《象》曰:天地交,泰。后以财成天地之道,辅相天地之宜,以左右民。

     初九,拔茅茹,以其汇。征吉。

     《象》曰:“拔茅征吉”,志在外也。

     九二,包荒,用冯河,不遐遗。朋亡,得尚于中行。

     《象》曰:“包荒,得尚于中行”,以光大也。

     九三,无平不陂,无往不复。艰贞无咎。勿恤其孚,于食有福。

     《象》曰:“无往不复”,天地际也。

     六四,翩翩,不富以其邻,不戒以孚。

     《象》曰:“翩翩,不富”,皆失实也。“不戒以孚”,中心愿也。

     六五,帝乙归妹,以祉元吉。

     《象》曰:“以祉元吉”,中以行愿也。

     上六,城复于隍,勿用师,自邑告命。贞吝。

     《象》曰:“城复于隍”,其命乱也。

```


!!否(卦十二)

(坤下乾上)

```


     《否》:否之匪人,不利君子贞,大往小来。

     《彖》曰:“否之匪人,不利君子贞,大往小来。”则是天地不交而万物不通也,上下不交而天下无邦也;内阴而外阳,内柔而外刚,内小人而外君子,小

     人道长,君子道消也。

     《象》曰:天地不交,“否”。君子以俭德辟难,不可荣以禄。

     初六,拔茅茹以其汇。贞吉,亨。

     《象》曰:“拔茅贞吉”,志在君也。

     六二,包承,小人吉,大人否。亨。

     《象》曰:“大人否亨”,不乱群也。

     六三,包羞。

     《象》曰:“包羞”,位不当也。

     九四,有命,无咎,畴离祉。

     《象》曰:“有命无咎”,志行也。

     九五,休否,大人吉。其亡其亡,系于苞桑。

     《象》曰:大人之吉,位正当也。

     上九,倾否,先否后喜。

     《象》曰:否终则倾,何可长也。

```


!!同人(卦十三)

(离下乾上)

```


      《同人》:同人于野,亨。利涉大川。利君子贞。
      《彖》曰:“同人”,柔得位得中,而应乎乾,曰同人。同人曰:“同人于野,亨。利涉大川”,乾行也。文明以健,中正而应,君子正也。唯君子为能通
      天下之志。
      《象》曰:天与火,同人。君子以类族辨物。
      初九,同人于门,无咎。
      《象》曰:“出门同人”,又谁咎也。
      六二,同人于宗,吝。
      《象》曰:“同人于宗”,吝道也。
      九三,伏戎于莽,升其高陵,三岁不兴。
      《象》曰:“伏戎于莽”,敌刚也。“三岁不兴”,安行也。
      九四,乘其墉,弗克攻,吉
      《象》曰:“乘其墉”,义弗克也。其“吉”,则困而反则也。
      九五,同人先号咷而后笑,大师克,相遇。
      《象》曰:同人之先,以中直也。大师相遇,言相克也。
      上九,同人于郊,无悔。
      《象》曰:“同人于郊”,志未得也。

```


!!大有(卦十四)

(乾下离上)

```


      《大有》:元亨。
      《彖》曰:“大有”,柔得尊位大中,而上下应之,曰“大有”。其德刚健而文明,应乎天而时行,是以元亨。
      《象》曰:火在天上,“大有”。君子以遏恶扬善,顺天休命。
      初九,无交害匪咎。艰则无咎。
      《象》曰:大有初九,无交害也。
      九二,大车以载,有攸往,无咎。
      《象》曰:“大车以载”,积中不败也。
      九三,公用亨于天子,小人弗克。
      《象》曰:公用亨于天子,小人害也。
      九四,匪其彭,无咎。
      《象》曰:“匪其彭,无咎。”明辨晢也。
      六五,厥孚交如威如,吉。
      《象》曰:“厥孚交如”,信以发志也。“威如之吉”,易而无备也。
      上九,自天祐之,吉,无不利。
      《象》曰:大有上吉,自天祐也。

```


!!谦(卦十五)

(艮下坤上)

```


      《谦》:亨。君子有终。
      《彖》曰:谦,亨。天道下济而光明,地道卑而上行。天道亏盈而益谦,地道变盈而流谦,鬼神害盈而福谦,人道恶盈而好谦。谦,尊而光,卑而不可逾,
      君子之终也。
      《象》曰:地中有山,谦。君子以裒多益寡,称物平施。
      初六,谦谦君子,用涉大川,吉。
      《象》曰:“谦谦君子”,卑以自牧也。
      六二,鸣谦,贞吉。
      《象》曰:“鸣谦贞吉”,中心得也。
      九三,劳谦君子,有终,吉。
      《象》曰:“劳谦君子”,万民服也。
      六四,无不利,捴谦。
      《象》曰:“无不利,捴谦”,不违则也。
      六五,不富以其邻,利用侵伐,无不利。
      《象》曰:“利用侵伐”,征不服也。
      上六,鸣谦,利用行师征邑国。
      《象》曰:“鸣谦”,志未得也。“可用行师”,征邑国也。

```


!!豫(卦十六)

(坤下震上)

```


      《豫》:利建侯行师。
      《彖》曰:豫,刚应而志行,顺以动,豫。豫顺以动,故天地如之,而况建侯行师乎?天地以顺动,故日月不过,而四时不忒。圣人以顺动,则刑罚清而民
      服,豫之时义大矣哉!
      《象》曰:雷出地奋,豫。先王以作乐崇德,殷荐之上帝,以配祖考。
      初六,鸣豫,凶。
      《象》曰:“初六鸣豫”,志穷凶也。
      六二,介于石,不终日,贞吉。
      《象》曰:“不终日贞吉”,以中正也。
      六三,盱豫,悔,迟有悔。
      《象》曰:“盱豫不悔”,位不当也。
      九四,由豫,大有得,勿疑。朋盍簪。
      《象》曰:“由豫大有得”,志大行也。
      六五,贞疾,恒不死。
      《象》曰:“六五贞疾”,乘刚也。“恒不死”,中未亡也。
      上六,冥豫,成有渝。无咎。
      《象》曰:“冥豫”在上,何可长也?

```


!!随(卦十七)

(震下兑上)

```


      《随》:元亨,利贞,无咎。
      《彖》曰:随,刚来而下柔,动而说,随。大亨贞无咎,而天下随时,随时之义大矣哉!
      《象》曰:泽中有雷,随。君子以向晦入宴息。
      初九,官有渝,贞吉,出门交有功。
      《象》曰:“官有渝”,从正吉也。“出门交有功”,不失也。
      六二,系小子,失丈夫。
      《象》曰:“系小子”,弗兼与也。
      六三,系丈夫,失小子,随有求,得。利居贞。
      《象》曰:“系丈夫”,志舍下也。
      九四,随有获,贞凶。有孚在道,以明,何咎?
      《象》曰:“随有获”,其义凶也。“有孚在道”,明功也。
      九五,孚于嘉,吉。
      《象》曰:“孚于嘉吉”,位正中也。
      上六,拘系之,乃从维之,王用亨于西山。
      《象》曰:“拘系之”,上穷也。

```


!!蛊(卦十八)

(巽下艮上)

```


      《蛊》:元亨。利涉大川,先甲三日,后甲三日。
      《彖》曰:蛊,刚上而柔下,巽而止,蛊。蛊,元亨而天下治也。“利涉大川”,往有事也。“先甲三日,后甲三日”,终则有始,天行也。
      《象》曰:山下有风,蛊。君子以振民育德。
      初六,干父之蛊,有子,考无咎。厉,终吉。
      《象》曰:“干父之蛊”,意承考也。
      九二,干母之蛊,不可贞。
      《象》曰:“干母之蛊”,得中道也。
      九三,干父之蛊,小有悔,无大咎。
      《象》曰:“干父之蛊”,终无咎也。
      六四,裕父之蛊,往见吝。
      《象》曰:“裕父之蛊”,往未得也。
      六五,干父之蛊,用誉。
      《象》曰:“干父用誉”,承以德也。
      上九,不事王侯,高尚其事。
      《象》曰:“不事王侯”,志可则也。

```


!!临(卦十九)

(兑下坤上)

```


      《临》:元亨,利贞。至于八月有凶。
      《彖》曰:临,刚浸而长,说而顺,刚中而应。大亨以正,天之道也。“至于八月有凶”,消不久也。
      《象》曰:泽上有地,临。君子以教思无穷,容保民无疆。
      初九,咸临,贞吉。
      《象》曰:“咸临贞吉”,志行正也。
      九二,咸临,吉,无不利。
      《象》曰:“咸临吉无不利”,未顺命也。
      六三,甘临,无攸利;既忧之,无咎。
      《象》曰:“甘临”,位不当也。“既忧之”。咎不长也。
      六四,至临,无咎。
      《象》曰:“至临无咎”,位当也。
      六五,知临,大君之宜,吉。
      《象》曰:“大君之宜”,行中之谓也。
      上六,敦临,吉,无咎。
      《象》曰:“敦临之吉”,志在内也。

```


!!观(卦二十)

(坤下巽上)

```


      《观》:盥而不荐。有孚颙若。
      《彖》曰:大观在上,顺而巽,中正以观天下,观。“盥而不荐,有孚颙若”,下观而化也。观天之神道,而四时不忒,圣人以神道设教,而天下服矣。
      《象》曰:风行地上,观。先王以省方观民设教。
      初六,童观,小人无咎,君子吝。
      《象》曰:“初六童观”,“小人”道也。
      六二,窥观,利女贞。
      《象》曰:“窥观女贞”,亦可丑也。
      六三,观我生,进退。
      《象》曰:“观我生进退”,未失道也。
      六四,观国之光,利用宾于王。
      《象》曰:“观国之光”,尚宾也。
      九五,观我生,君子无咎。
      《象》曰:“观我生”,观民也。
      上九,观其生,君子无咎。
      《象》曰:“观其生”,志未平也。


```



!!噬嗑(卦二十一)

(震下离上)


```



      《噬嗑》:亨。利用狱。
      《彖》曰:颐中有物曰噬嗑。噬嗑而亨,刚柔分,动而明,雷电合而章。柔得中而上行,虽不当位,利用狱也。
      《象》曰:雷电,噬嗑。先王以明罚敕法。
      初九,屦校灭趾,无咎。
      《象》曰:“屦校灭趾”,不行也。
      六二,噬肤灭鼻,无咎。
      《象》曰:“噬肤灭鼻”,乘刚也。
      六三,噬腊肉遇毒,小吝,无咎。
      《象》曰:“遇毒”,位不当也。
      九四,“噬干胏,得金矢。利艰贞,吉。
      《象》曰:“利艰贞吉”,未光也。
      六五,噬干肉得黄金。贞厉,无咎。
      《象》曰:“贞厉无咎”,得当也。
      上九,何校灭耳,凶。
      《象》曰:“何校灭耳”,聪不明也。


```



!!贲(卦二十二)

(离下艮上)

```


      《贲》:亨。小利有攸往。
      《彖》曰:贲亨,柔来而文刚,故亨。分,刚上而文柔,故小利有攸往。刚柔交错,天文也。文明以止,人文也。观乎天文,以察时变;观乎人文,以化成
      天下。
      《象》曰:山下有火,贲。君子以明庶政,无敢折狱。
      初九,贲其趾,舍车而徒。
      《象》曰:“舍车而徒”,义弗乘也。
      六二,贲其须。
      《象》曰:“贲其须”,与上兴也。
      九三,贲如,濡如,永贞吉。
      《象》曰:“永贞之吉”,终莫之陵也。
      六四,贲如皤如,白马翰如。匪寇,婚媾。
      《象》曰:六四,当位疑也。“匪寇婚媾”,终无尤也。
      六五,贲于丘园,束帛戋戋,吝,终吉。
      《象》曰:“六五之吉”,有喜也。
      上九,白贲,无咎。
      《象》曰:“白贲无咎”,上得志也。


```



!!剥(卦二十三)

(坤下艮上)


```

      《剥》:不利有攸往。
      《彖》曰:剥,剥也。柔变刚也。“不利有攸往”,小人长也。顺而止之,观象也。君子尚消息盈虚,天行也。
      《象》曰:出附于地,剥。上以厚下安宅。
      初六:剥床以足,蔑贞凶。
      《象》曰:“剥床以足”,以灭下也。
      六二:剥床以辨,蔑贞凶。
      《象》曰:“剥床以辨”,未有与也。
      六三:剥之,无咎。
      《象》曰:“剥之无咎”,失上下也。
      六四:剥床以肤,凶。
      《象》曰:“剥床以肤”,切近灾也。
      六五:贯鱼以宫人宠,无不利。
      《象》曰:“以宫人宠”,终无尤也。
      上九:硕果不食,君子得舆,小人剥庐。
      《象》曰:“君子得舆”,民所载也。“小人剥庐”,终不可用也。


```

!!复(卦二十四)

(震下坤上)

```


      《复》:亨。出入无疾。朋来无咎。反复其道,七日来复,利有攸往。
      《彖》曰:“复,亨”。刚反,动而以顺行。是以“出入无疾,朋来无咎”。
      “反复其道,七日来复”,天行也。“利有攸往”,刚长也。复,其见天地之心乎。
      《象》曰:雷在地中,复。先王以至日闭关,商旅不行,后不省方。
      初九,不远复,无祗悔,元吉。
      《象》曰:“不远之复”,以修身也。
      六二,休复,吉。
      《象》曰:“休复之吉”,以下仁也。
      六三,频复,厉,无咎。
      《象》曰:“频复之厉”,义无咎也。
      六四,中行独复。
      《象》曰:“中行独复”,以从道也。
      六五,敦复,无悔。
      《象》曰:“敦复无悔”,中以自考也。
      上六,迷复,凶,有灾眚。用行师,终有大败,以其国君凶,至于十年不克征。
      《象》曰:“迷复之凶”,反君道也。


```

!!无妄(卦二十五)

(震下乾上)


```

      《无妄》:元亨,利贞。其匪正有眚,不利有攸往。
      《彖》曰:无妄,刚自外来而为主于内,动而健,刚中而应。大亨以正,天之命也。“其匪正有眚,不利有攸往”,无妄之往何之矣?天命不祐,行矣哉!
      《象》曰:天下雷行,物与无妄。先王以茂对时育万物。
      初九,无妄往,吉。
      《象》曰:“无妄之往”,得志也。
      六二,不耕获,不菑畬,则利用攸往。
      《象》曰:“不耕获”,未富也。
      六三,无妄之灾,或系之牛,行人之得,邑人之灾。
      《象》曰:行人得牛,邑人灾也。
      九四,可贞。无咎。
      《象》曰:“可贞无咎”,固有之也。
      九五,无妄之疾,勿药有喜。
      《象》曰:“无妄之药”,不可试也。
      上九,无妄行,有眚,无攸利。
      《象》曰:“无妄之行”,穷之灾也。


```

!!大畜(卦二十六)

(乾下艮上)

```


      《大畜》:利贞。不家食吉。利涉大川。
      《彖》曰:大畜,刚健笃实,辉光日新。其德刚上而尚贤,能止健,大正也。“不家食吉”,养贤也。“利涉大川”,应乎天也。
      《象》曰:天在山中,大畜。君子以多识前言往行,以畜其德。
      初九,有厉,利已。
      《象》曰:“有厉利已”,不犯灾也。
      九二,舆说輹。
      《象》曰:“舆说輹”,中无尤也。
      九三,良马逐,利艰贞,曰闲舆卫,利有攸往。
      《象》曰:“利有攸往”,上合志也。
      六四,童牛之牿,元吉。
      《象》曰:“六四元吉”,有喜也。
      六五,豮豕之牙,吉。
      《象》曰:“六五之吉”,有庆也。
      上九,何天之衢,亨。
      《象》曰:“何天之衢”,道大行也。


```

!!颐(卦二十七)

(震下艮上)

```


      《颐》:贞吉。观颐,自求口实。
      《彖》曰:颐,贞吉,养正则吉也。观颐,观其所养也。自求口实,观其自养也。天地养万物,圣人养贤以及万民,颐之时大矣哉!
      《象》曰:山下有雷,颐。君子以慎言语,节饮食。
      初九,舍尔灵龟,观我朵颐,凶。
      《象》曰:“观我朵颐”,亦不足贵也。
      六二,颠颐拂经于丘颐,征凶。
      《象》曰:“六二征凶”,行失类也。
      六三,拂颐,贞凶,十年勿用,无攸利。
      《象》曰:“十年勿用”,道大悖也。
      六四,颠颐,吉。虎视眈眈,其欲逐逐,无咎。
      《象》曰:“颠颐之吉”,上施光也。
      六五,拂经,居贞吉,不可涉大川。
      《象》曰:“居贞之吉”,顺以从上也。
      上九,由颐,厉,吉。利涉大川。
      《象》曰:“由颐厉吉”,大有庆也。


```

!!大过(卦二十八)

(巽下兑上)


```

      《大过》:栋挠,利有攸往,亨。
      《彖》曰:“大过”,大者过也。“栋挠”,本末弱也。刚过而中,巽而说,行。利有攸往,乃亨。“大过”之时大矣哉!
      《象》曰:泽灭木,大过。君子以独立不惧,遯世无闷。
      初六,藉用白茅,无咎。
      《象》曰:“藉用白茅”,柔在下也。
      九二,枯杨生稊,老夫得其女妻,无不利。
      《象》曰:“老夫女妻,”,过以相与也。
      九三,栋桡,凶。
      《象》曰:“栋桡”之“凶”,不可以有辅也。
      九四,栋隆,吉。有它,吝。
      《象》曰:“栋隆之吉”,不桡乎下也。
      九五,枯杨生华,老妇得其士夫,无咎无誉。
      《象》曰:“枯杨生华”,何可久也。“老妇士夫”,亦可丑也。
      上六,过涉灭顶,凶。无咎。
      《象》曰:“过涉之凶”,不可咎也。


```

!!坎(卦二十九)

(坎下坎上)

```


      《习坎》:有孚维心,亨。行有尚。
      《彖》曰:“习坎”,重险也。水流而不盈。行险而不失其信。维心亨,乃
      以刚中也。“行有尚”,往有功也。天险,不可升也。地险,山川丘陵也。王公设险以守其国。险之时用大矣哉!
      《象》曰:水洊至,习坎。君子以常德行,习教事。
      初六,习坎,入于坎,窞,凶。
      《象》曰:“习坎入坎”,失道,凶也。
      九二,坎有险,求小得。
      《象》曰:“求小得”,未出中也。
      六三,来之坎,坎险且枕,入于坎,窞,勿用。
      《象》曰:“来之坎坎”,终无功也。
      六四,樽酒簋贰用缶,纳约自牖,终无咎。
      《象》曰:“樽酒簋贰”,刚柔际也。
      九五,坎不盈,祗既平,无咎。
      《象》曰:“坎不盈”,中未大也。
      上六,系用徽纆,窴于丛棘,三岁不得,凶。
      《象》曰:上六失道,凶三岁也。


```

!!离(卦三十)

(离下离上)


```


      《离》:利贞。亨。畜牝牛吉。
      《彖》曰:离,丽也。日月丽乎天,百谷草木丽乎土。重明以丽乎正,乃化成天下。柔丽乎中正,故亨,是以“畜牝牛吉”也。
      《象》曰:明两作,离。大人以继明照于四方。
      初九,履错然,敬之无咎。
      《象》曰:“履错之敬”,以辟咎也。
      六二,黄离,元吉。
      《象》曰:“黄离元吉”,得中道也。
      九三,日昃之离,不鼓缶而歌,则大耋之嗟,凶。
      《象》曰:“日昃之离”,何可久也?
      九四,突如,其来如,焚如,死如,弃如。
      《象》曰:“突如其来如”,无所容也。
      六五,出涕沱若,戚嗟若,吉。
      《象》曰:六五之吉,离王公也。
      上九,王用出征,有嘉折首,获匪其丑,无咎。
      《象》曰:“王用出征”,以正邦也。


```

  ![[虞书]]

  虞书 尧典第一

  虞书 舜典第二

  虞书 大禹谟第三

  虞书 皋陶谟第四

  虞书 益稷第五

![[夏书]]

  夏书 禹贡第一

  夏书 甘誓第二

  夏书 五子之歌第三

  夏书 胤征第四

![[商书]]

  商书 汤誓第一

  商书 仲虺之诰第二

  商书 汤诰第三

  商书 伊训第四

  商书 太甲上第五

  商书 太甲中第六

  商书 太甲下第七

  商书 咸有一德第八

  商书 盘庚上第九

  商书 盘庚中第十

  商书 盘庚下第十一

  商书 说命上第十二

  商书 说命中第十三

  商书 说命下第十四

  商书 高宗肜日第十五

  商书 西伯戡黎第十六

  商书 微子第十七

![[周书]]

  周书 泰誓上第一

  周书 泰誓中第二

  周书 泰誓下第三

  周书 牧誓第四

  周书 武成第五

  周书 洪范第六

  周书 旅獒第七

  周书 金滕第八

  周书 大诰第九

  周书 微子之命第十

  周书 康诰第十一

  周书 酒诰第十二

  周书 梓材第十三

  周书 召诰第十四

  周书 洛诰第十五

  周书 多士第十六

  周书 无逸第十七

  周书 君奭第十八

  周书 蔡仲之命第十九

  周书 多方第二十

  周书 立政第二十一

  周书 周官第二十二

  周书 君陈第二十三

  周书 顾命第二十四

  周书 康王之诰第二十五

  周书 毕命第二十六

  周书 君牙第二十七

  周书 冏命第二十八

  周书 吕刑第二十九

  周书 文侯之命第三十

  周书 费誓第三十一

  周书 秦誓第三十二

  

  

  《礼记少仪》

  闻始见君子者,辞曰:“某固愿闻名于将命者,不得阶主。”适者曰:“某固愿见。”罕见曰闻名,亟见曰朝夕,瞽曰闻名。

  

  适有丧者曰比,童子曰听事。适公卿之丧,则曰听役于司徒。

  

  君将适他,臣如致金玉货贝于君,则曰“致马资于有司”,敌者曰赠从者。

  

  臣致襚于君,则曰“致废衣于贾人”,敌者曰襚。

  

  亲者兄弟,不以襚进。

  

  臣为君丧,纳货贝于君,则曰“纳甸于有司”。

  

  赗马入庙门,赙马,与其币,大白兵车,不入庙门。

  

  赙者既致命,坐委之,摈者举之,主人无亲受也。

  

  受立授立,不坐,性之直者,则有之矣。

  

  始入而辞,曰“辞矣”。即席,曰“可矣”。

  

  排阖说屦于户内者,一人而已矣。有尊长在则否。

  

  问品味,曰:“子亟食于某乎。”问道艺,曰:“子习于某乎,子善于某乎。”

  

  不疑在躬,不度民械,不愿于大家,不訾重器。

  

  泛埽曰埽,埽席前曰拚,拚席不以鬣,执箕膺擖。

  

  不贰问,问卜筮曰:“义与志与?”义则可问,志则否。

  

  尊长于己踰等,不敢问其年。燕见不将命。遇于道,见则面,不请所之。丧俟事,不犆吊。侍坐弗使,不执琴瑟,不画地,手无容,不翣也。寝则坐而将命,侍射则约矢,侍投则拥矢,胜则洗而以请。客亦如之。不角,不擢马。

  

  执君之乘车则坐。仆者右带剑,负良绥,申之面,扦诸幦,以散绥升,执辔然后步。

  

  请见不请退。朝廷曰退,燕游曰归,师役曰罢。

  

  侍坐于君子,君子欠伸,运笏,泽剑首,还屦,问日之蚤莫,虽请退可也。

  

  事君者,量而后入,不入而后量。凡乞假于人,为人从事者亦然。然故上无怨,而下远罪也。

  

  不窥密,不旁狎,不道旧故,不戏色。

  

  为人臣下者,有谏而无讪,有亡而无疾,颂而无讇,谏而无骄。怠则张而相之,废则埽而更之,谓之社稷之役。

  

  毋拔来,毋报往,毋渎神,毋循枉,毋测未至。士依于德,游于艺。工依于法,游于说。毋訾衣服成器,毋身质言语。

  

  言语之美,穆穆皇皇。朝廷之美,济济翔翔。祭祀之美,齐齐皇皇。车马之美,匪匪翼翼。鸾和之美,肃肃雍雍。

  

  问国君之子长幼,长则曰“能从社稷之事矣”,幼则曰“能御未能御?”问大夫之子长幼,长则曰“能从乐人之事矣”,幼则曰:“能正于乐人,未能正于乐人?”问士之子长幼,长则曰“能耕矣”,幼则曰“能负薪,未能负薪?”

  

  执玉,执龟荚,不趋。堂上不趋,城上不趋,武车不式,介者不拜。

  

  妇人吉事,虽有君赐肃拜。为尸坐则不手拜。肃拜,为丧主,则不手拜,葛绖而麻带。

  

  取俎进俎,不坐。

  

  执虚如执盈,入虚如有人。

  

  凡祭于室中,堂上无跣,燕则有之。

  

  未尝不食新。

  

  仆于君子,君子升下则授绥,始乘则式君子下行,然后还立。

  

  乘贰车,则式,佐车则否。

  

  贰车者,诸侯七乘,上大夫五乘,下大夫三乘。

  

  有贰车者之乘马,服车,不齿。观君子之衣服,服剑,乘马,弗贾。

  

  其以乘壶酒,束修,一犬,赐人。若献人,则陈酒执修以将命,亦曰乘壶酒,束修,一犬。其以鼎肉,则执以将命。其禽加于一双,则执一双以将命,委其余。犬则执绁,守犬,田犬,则授摈者。既受,乃问犬名。牛则执纼,马则执靮,皆右之。臣则左之。车则说绥,执以将命。甲若有以前之,则执以将命。无以前之,则袒櫜奉胄。器则执盖,弓则以左手屈韣执拊,剑则启椟,盖袭之,加夫襓与剑焉。笏、书、修、苞、苴、弓、茵、席、枕、几、颎、杖、琴、瑟,戈有刃者椟,荚、钥,其执之皆尚左手。刀却刃授颖,削授拊。凡有刺刃者以授人,则辟刃。

  

  乘兵车,出先刃,入后刃。军尚左,卒尚右。

  

  宾客主恭,祭祀主敬,丧事主哀,会同主诩。

  

  军旅思险,隐情以虞。

  

  燕侍食于君子,则先饭而后已。毋放饭,毋流歠。小饭而亟之。数焦,毋为口容。客自彻,辞焉则止。

  

  客爵居左,其饮居右。介爵,酢爵,僎爵,皆居右。

  

  羞濡鱼者进尾。冬右腴,夏右鳍,祭膴。

  

  凡齐,执之以右,居之以左。

  

  赞币自左,诏辞自右。

  

  酌尸之仆,如君之仆,其在车,则左执辔,右受爵。祭左右轨范,乃饮。

  

  凡羞有俎者,则于俎内祭。

  

  君子不食圂腴。

  

  小子走而不趋,举爵则坐祭立饮。

  

  凡洗必盥。

  

  牛羊之肺,离而不提心。

  

  凡羞有湆者,不以齐。

  

  为君子择葱薤,则绝其本末。

  

  羞首者,进喙祭耳。

  

  尊者,以酌者之左为上尊,尊壶者面其鼻。

  

  饮酒者,禨者,醮者,有折俎不坐。未步爵,不尝羞。

  

  牛与羊鱼之腥,聂而切之为脍,麋鹿为菹,野豕为轩,皆聂而不切。麇为辟鸡,兔为宛脾,皆聂而切之。切葱若薤实之,醯以柔之。

  

  其有折俎者,取祭肺反之,不坐。燔亦如之,尸则坐。

  

  衣服在躬而不知其名为罔。

  

  其未有烛而后至者,则以在者告。道瞽亦然。

  

  凡饮酒,为献主者,执烛抱燋,客作而辞,然后以授人。执烛不让,不辞不歌。

  

  洗、盥、执食饮者,勿气。有问焉,则辟咡而对。

  

  为人祭曰致福,为己祭而致膳于君子曰膳,祔练曰告。

  

  凡膳告于君子,主人展之,以授使者于阼阶之南,南面再拜稽首送。反命,主人又再拜稽首。其礼,大牢则以牛左肩,臂臑,折九个。少牢则以羊左肩七个,犆豕则以豕左肩五个。

  

  国家靡敝,则车不雕几,甲不组縢,食器不刻镂。君子不履丝屦,马不常秣。

  
  《礼记射义》

  

  古者诸侯之射也,必先行燕礼;卿大夫士之射也,必先行乡饮酒之礼。故燕礼者,所以明君臣之义也;乡饮酒之礼者,所以明长幼之序也。

  

  故射者,进退周还必中礼,内志正,外体直,然后持弓矢审固。持弓矢审固,然后可以言中。此可以观德行矣。

  

  其节,天子以驺虞为节,诸侯以狸首为节,卿大夫以采苹为节,士以采蘩为节。驺虞者,乐官备也;狸首者,乐会时也;采苹者,乐循法也;采蘩者,乐不失职也。是故天子以备官为节,诸侯以时会天子为节,卿大夫以循法为节,士以不失职为节。故明乎其节之志,以不失其事,则功成而德行立。德行立,则无暴乱之祸矣。功成则国安。故曰:射者,所以观盛德也。

  

  是故古者天子以射选诸侯、卿、大夫、士。射者,男子之事也,因而饰之以礼乐也。故事之尽礼乐而可数为以立德行者莫若射,故圣王务焉。

  

  是故古者天子之制,诸侯岁献贡士于天子,天子试之于射宫。其容体比于礼,其节比于乐,而中多者,得与于祭。其容体不比于礼,其节不比于乐,而中少者,不得与于祭。数与于祭而君有庆,数不与于祭而君有让。数有庆而益地,数有让而削地。故曰:射者,射为诸侯也。是以诸侯君臣尽志于射,以习礼乐。夫君臣习礼乐而以流亡者,未之有也。

  

  故诗曰:“曾孙侯氏,四正具举。大夫君子,凡以庶士,小大莫处,御于君所。以燕以射,则燕则誉。”言君臣相与尽志于射,以习礼乐,则安则誉也。是以天子制之,而诸侯务焉。此天子之所以养诸侯而兵不用,诸侯自为正之具也。

  

  孔子射于矍相之圃,盖观者如堵墙,射至于司马,使子路执弓矢出延射,曰:“贲军之将,亡国之大夫,与为人后者,不入,其余皆入。”盖去者半,入者半。又使公罔之裘序点扬觯而语。公罔之裘扬觯而语曰:“幼壮孝弟,耆耋好礼,不从流俗,修身以俟死者,不在此位也。”盖去者半,处者半。序点又扬觯而语曰:“好学不倦,好礼不变,旄期称道不乱者,不在此位也。”盖勤有存者。

  

  射之为言者,绎也。或曰:舍也。绎者,各绎己之志也。故心平体正,持弓矢审固。持弓矢审固,则射中矣。故曰:为人父者,以为父鹄;为人子者,以为子鹄;为人君者,以为君鹄;为人臣者,以为臣鹄。故射者各射己之鹄。故天子之大射,谓之射侯。射侯者,射为诸侯也。射中则得为诸侯,射不中则不得为诸侯。

  

  天子将祭,必先习射于泽。泽者,所以择士也。已射于泽,而后射于射宫。射中者得与于祭,不中者不得与于祭。不得与于祭者有让,削以地。得与于祭者有庆,益以地。进爵绌地是也。

  

  故男子生桑弧蓬矢六,以射天地四方。天地四方者,男子之所有事也。故必先有志于其所有事,然后敢用谷也。饭食之谓也。

  

  射者,仁之道也。射求正诸己,己正而后发,发而不中,则不怨胜己者,反求诸己而已矣。孔子曰:“君子无所争?必也射乎!揖让而升,下而饮,其争也君子。”

  

  孔子曰:“射者何以射?何以听?循声而发,发而不失正鹄者,其唯贤者乎?若夫不肖之人,则彼将安能以中?”诗云:“发彼有的,以祈尔爵。”祈,求也,求中以辞爵也。酒者,所以养老也,所以养病也。求中以辞爵者,辞养也。

  

  

  《礼记深衣》

  

  古者深衣,盖有制度以应规矩绳权衡。短毋见肤,长毋被土,续衽钩边,要缝半下,袼之高下,可以运肘。袂之长短,反诎之及肘。带,下毋厌髀,上毋厌胁,当无骨者。

  

  制十有二幅,以应十有二月。袂圜以应规,曲袷如矩以应方,负绳及踝以应直,下齐如权衡以应平。故规者,行举手以为容,负绳抱方者以直其政,方其义也。故《易》曰:坤六二之动,直以方也。下齐如权衡者,以安志而平心也。五法已施,故圣人服之。故规矩取其无私,绳取其直,权衡取其平,故先王贵之。故可以为文,可以为武,可以摈相,可以治军旅。完且弗费,善衣之次也。

  

  具父母,大父母,衣纯以缋。具父母,衣纯以青。如孤子,衣纯以素,纯袂,缘纯边,广各寸半。
!诗经

!![[国风]]

!![[小雅]]

!![[大雅]]

!![[颂]]
中国传统典籍:

论语、大学、中庸、孟子,合称四书

诗经、尚书、礼记、易经、春秋,合称五经

现整理如下:

!四书

!![[论语]]


!![[大学]]

!![[中庸]]

!![[孟子]]

!五经

!![[诗经]]
    
!![[尚书]]
  
!![[礼记]]
  

!![[易经]]


!![[春秋]]

  

!!查看更详细的:[[典籍文件|https://github.com/xy185/daizhigev20]]

---

本文件来源:https://xy185.github.io

另外,你可能还需要知道:

[[编辑示范说明|编辑示范说明]]

[[文档使用指南]]

---

本文件采用[[内容分享声明|内容分享声明]]中的第一种声明:

[[署名-相同方式分享-维权代理|内容分享声明]]

  
  述而第七

  

  子曰:“述而不作,信而好古,窃比于我老彭。”

  子曰:“默而识之,学而不厌,诲人不倦,何有于我哉。”

  子曰:“德之不修,学之不讲,闻义不能徙,不善不能改,是吾忧也。”

  子之燕居,申申如也,夭夭如也。

  子曰:“甚矣吾衰也!久矣吾不复梦见周公!”子曰:“志于道,据于德,依于仁,游于艺。”

  子曰:“自行束脩以上,吾未尝无诲焉。”

  子曰:“不愤不启,不悱不发,举一隅不以三隅反,则不复也。”

  子食于有丧者之侧,未尝饱也。

  子于是日哭,则不歌。

  子谓颜渊曰:“用之则行,舍之则藏,唯我与尔有是夫!”子路曰:“子行三军,则谁与?”子曰:“暴虎冯河,死而无悔者,吾不与也。必也临事而惧,好谋而成者也。”

  子曰:“富而可求也,虽执鞭之士,吾亦为之。如不可求,从吾所好。”

  子之所慎:斋,战,疾。

  子在齐,闻《韶》,三月不知肉味,曰:“不图为乐之至于斯也!”冉有曰:“夫子为卫君乎?”子贡曰:“诺,吾将问之。入曰:“伯夷、叔齐何人也?”曰:“古之贤人也。”曰:“怨乎?”曰:“求仁而得仁,又何怨?”出,曰:“夫子不为也。”

  子曰:“饭疏食,饮水,曲肱而枕之,乐亦在其中矣。不义而富且贵,于我如浮云。”

  子曰:“加我数年,五十以学《易》,可以无大过矣。”

  子所雅言,《诗》、《书》、执礼,皆雅言也。

  叶公问孔子于子路,子路不对。子曰:“女奚不曰,其为人也,发愤忘食,乐以忘忧,不知老之将至云尔。”

  子曰:“我非生而知之者,好古,敏以求之者也。”

  子不语怪、力、乱、神。

  子曰:“三人行,必有我师焉:择其善者而从之,其不善者而改之。”

  子曰:“天生德于予,桓魋其如予何!”子曰:“二三子以我为隐乎?吾无隐乎尔。吾无行而不与二三子者,是丘也。”

  子以四教:文,行,忠,信。

  子曰:“圣人吾不得而见之矣;得见君子者,斯可矣。”

  子曰:“善人吾不得而见之矣;得见有恒者,斯可矣。亡而为有,虚而为盈,约而为泰,难乎有恒矣。”

  子钓而不纲,弋不射宿。

  子曰:“盖有不知而作之者,我无是也。多闻,择其善者而从之;多见而识之;知之次也。”

  互乡难与言,童子见,门人惑。子曰:“与其进也,不与其退也,唯何甚?人洁己以进,与其洁也,不保其往也。”

  子曰:“仁远乎哉?我欲仁,斯仁至矣。”

  陈司败问:“昭公知礼乎?”孔子曰:“知礼。”

  孔子退,揖巫马期而进之,曰:“吾闻君子不党,君子亦党乎?君取于吴,为同姓,谓之吴孟子。君而知礼,孰不知礼?”巫马期以告。子曰:“丘也幸,苟有过,人必知之。”

  子与人歌而善,必使反之,而后和之。

  子曰:“文,莫吾犹人也,躬行君子,则吾未之有得。”

  子曰:“若圣与仁,则吾岂敢。抑为之不厌,诲人不倦,则可谓云尔已矣。”

  公西华曰:“正唯弟子不能学也。”

  子疾病,子路请祷。子曰:“有诸?”子路对曰:“有之。诔曰:‘祷尔于上下神祇。’”子曰:“丘之祷久矣。”

  子曰:“奢则不孙,俭则固。与其不孙也,宁固。”

  子曰:“君子坦荡荡,小人长戚戚。”

  子温而厉,威而不猛,恭而安。

  说卦

  

  昔者圣人之作《易》也,幽赞于神明而生蓍,参天两地而倚数,观变于阴阳而立卦,发挥于刚柔而生爻,和顺于道德而理于义,穷理尽性以至于命。

  昔者圣人之作《易》也,将以顺性命之理。是以立天之道曰阴与阳,立地之道曰柔与刚,立人之道曰仁与义。兼三才而两之,故《易》六画而成卦。分阴分阳,迭用柔刚,故《易》六位而成章。

  天地定位,山泽通气,雷风相薄,水火不相射,八卦相错。数往者顺,知来者逆,是故《易》逆数也。

  雷以动之,风以散之,雨以润之,日以烜之,艮以止之,兑以说之,乾以君之,坤以藏之。

  帝出乎震,齐乎巽,相见乎离,致役乎坤,说言乎兑,战乎乾,劳乎坎,成言乎艮。万物出乎震,震东方也。齐乎巽,巽东南也;齐也者,言万物之絜齐也。

  离也者,明也,万物皆相见,南方之卦也,圣人南面而听天下,向明而治,盖取诸此也。坤也者,地也,万物皆致养焉,故曰:致役乎坤。兑,正秋也,万物之所说也,故曰:说言乎兑。战乎乾,乾西北之卦也,言阴阳相薄也。坎者水也,正北方之卦也,劳卦也,万物之所归也,故曰:劳乎坎。艮,东北之卦也。万物之所成终而成始也,故曰:成言乎艮。

  神也者,妙万物而为言者也。动万物者莫疾乎雷,挠万物者莫疾乎风,躁万物者莫乎火,说万物者莫说乎泽,润万物者莫润乎水,终万物始万物者莫盛乎艮。故水火相逮,雷风不相悖,山泽通气,然后能变化,既成万物也。

  乾,健也。坤,顺也。震,动也。巽,入也。坎,陷也。离,丽也。艮,止也。兑,说也。

  乾为马,坤为牛,震为龙,巽为鸡,坎为豕,离为雉,艮为狗,兑为羊。

  乾为首,坤为腹,震为足,巽为股,坎为耳,离为目,艮为手,兑为口。

  乾,天也,故称乎父。坤,地也,故称乎母。震一索而得男,故谓之长男。

  巽一索而得女,故谓之长女。坎再索而得男。故谓之中男。离谓之中男。离再索而得女,故谓之中女。艮三索而得男,故谓之少男。兑三索而得女,故谓之少女。

  乾为天,为圆,为君,为父,为玉,为金,为寒,为冰,为大赤,为良马,为老马,为瘠马,为驳马,为木果。

  坤为地,为母,为布,为釜,为吝啬,为均,为子母牛,为大舆,为文,为众,为柄,其于地也为黑。

  震为雷,为龙,为玄黄,为旉,为大途,为长子,为决躁,为苍筤竹,为萑苇。其于马也,为善鸣,为馵足,为作足,为的颡。其于稼也,为反生。其究为健,为蕃鲜。

  巽为木,为风,为长女,为绳直,为工,为白,为长,为高,为进退,为不果,为臭。其于人也,为寡发,为广颡,为多白眼,为近利市三倍,其究为躁卦。

  坎为水,为沟渎,为隐伏,为矫輮,为弓轮。其于人也,为加忧,为心病,为耳痛,为血卦,为赤。其于马也,为美脊,为亟心,为下首,为薄蹄,为曳。

  其于舆也,为多眚,为通,为月,为盗。其于木也,为坚多心。

  离为火,为日,为电,为中女,为甲胄,为戈兵。其于人也,为大腹。为乾卦,为鳖,为蟹,为蠃,为蚌,为龟。其于木也,为科上槁。

  艮为山,为径路,为小石,为门阙,为果蓏,为阍寺,为指,为狗,为鼠,为黔喙之属。其于木也,为坚多节。

  兑为泽,为少女,为巫,为口舌,为毁折,为附决。其于地也,为刚卤。为妾,为羊。

  
!![[论语]]


!![[大学]]

!![[中庸]]

!![[孟子]]
  
!![[周颂]]

!![[鲁颂]]

!![[商颂]]
  

  泰伯第八

  

  子曰:“泰伯,其可谓至德也已矣。三以天下让,民无得而称焉。”

  子曰:“恭而无礼则劳,慎而无礼则葸,勇而无礼则乱,直而无礼则绞。君子笃于亲,则民兴于仁;故旧不遗,则民不偷。”

  曾子有疾,召门弟子曰:“启予足!启予手!《诗》云:‘战战兢兢,如临深渊,如履薄冰。’而今而后,吾知免夫!小子!”曾子有疾,孟敬子问之。曾子言曰:“鸟之将死,其鸣也哀;人之将死,其言也善。君子所贵乎道者三:动容貌,斯远暴慢矣;正颜色,斯近信矣;出辞气,斯远鄙倍矣。笾豆之事,则有司存。”

  曾子曰:“以能问于不能,以多问于寡;有若无,实若虚,犯而不校,昔者吾友尝从事于斯矣。”

  曾子曰:“可以托六尺之孤,可以寄百里之命,临大节而不可夺也,君子人与?君子人也!”曾子曰:“士不可以不弘毅,任重而道远。仁以为己任,不亦重乎?死而后已,不亦远乎?”子曰:“兴于诗,立于礼,成于乐。”

  子曰:“民可使由之,不可使知之。”

  子曰:“好勇疾贫,乱也;人而不仁,疾之已甚,乱也。”

  子曰:“如有周公之才之美,使骄且吝,其余不足观也已。”

  子曰:“三年学,不至于穀,不易得也。”

  子曰:“笃信好学,守死善道。危邦不入,乱邦不居。天下有道则见,无道则隐。邦有道,贫且贱焉,耻也;邦无道,富且贵焉,耻也。”

  子曰:“不在其位,不谋其政。”

  子曰:“师挚之始。《关雎》之乱,洋洋乎盈耳哉!”子曰:“狂而不直,侗而不愿,悾々而不信,吾不知之矣。”

  子曰:“学如不及,犹恐失之。”

  子曰:“巍巍乎,舜、禹之有天下也而不与焉!”子曰:“大哉尧之为君也!巍巍乎!唯天为大,唯尧则之,荡荡乎,民无能名焉。巍巍乎其有成功也,焕乎其有文章!”舜有臣五人而天下治。武王曰:“予有乱臣十人。”孔子曰:“才难,不其然乎?唐虞之际,于斯为盛。有妇人焉,九人而已。三分天下有其二,以服事殷。

  周之德,其可谓至德也已矣。”

  子曰:“禹,吾无间然矣。菲饮食而致孝乎鬼神,恶衣服而致美乎黻冕,卑宫室而尽力乎沟洫。禹,吾无间然矣。”

 
  《礼记檀弓》

  公仪仲子之丧,檀弓免焉,仲子舍其孙而立其子,檀弓曰:“何居?我未之前闻也。”趋而就子服伯子于门右,曰:“仲子舍其孙而立其子,何也?”

  

  伯子曰:“仲子亦犹行古之道也。昔者文王舍伯邑考而立武王,微子舍其孙腯而立衍也。夫仲子亦犹行古之道也。”

  

  子游问诸孔子,孔子曰:“否,立孙。”

  

  事亲有隐而无犯,左右就养无方,服勤至死,致丧三年。事君有犯而无隐,左右就养有方,服勤至死,方丧三年。事师无犯无隐,左右就养无方,服勤至死,心丧三年。

  

  季武子成寝,杜氏之葬在西阶之下,请合葬焉,许之。入宫而不敢哭,武子曰:“合葬非古也,自周公以来,未之有改也,吾许其大而不许其细,何居?”命之哭。

  

  子上之母死而不丧,门人问诸子思曰:“昔者子之先君子丧出母乎?”曰:“然。”“子之不使白也丧之,何也?”子思曰:“昔者吾先君子无所失道,道隆则从而隆,道污则从而污,急则安能?为急也妻者,是为白也母,不为急也妻者,是不为白也母。”故孔氏之不丧出母,自子思始也。

  

  孔子曰:“拜而后稽颡,颓乎其顺也,稽颡而后拜,颀乎其至也。三年之丧,吾从其至者。”

  

  孔子既得合葬于防,曰:“吾闻之:古也墓而不坟。今丘也东西南北之人也,不可以弗识也。”于是封之,崇四尺。孔子先反,门人后,雨甚,至,孔子问焉,曰:“尔来何迟也?”曰:“防墓崩。”孔子不应,三,孔子泫然流涕曰:“吾闻之:古不修墓。”

  

  孔子哭子路于中庭,有人吊者,而夫子拜之,既哭,进使者而问故,使者曰:“醢之矣。”遂命覆醢。

  

  曾子曰:“朋友之墓,有宿草而不哭焉。”

  

  子思曰:“丧三日而殡,凡附于身者,必诚必信,勿之有悔焉耳矣。三月而葬,凡附于棺者,必诚必信,勿之有悔焉耳矣。丧三年,以为极亡,则弗之忘矣。故君子有终身之忧,而无一朝之患。故忌日不乐。”

  

  孔子少孤,不知其墓,殡于五父之衢,人之见之者皆以为葬也,其慎也,盖殡也。问于郰曼父之母,然后得合葬于防。

  

  邻有丧,舂不相,里有殡,不巷歌。

  

  丧冠不緌。

  

  有虞氏瓦棺,夏后氏堲周,殷人棺椁,周人墙置翣。周人以殷人之棺椁葬长殇,以夏后氏之堲周葬中殇下殇,以有虞氏之瓦棺葬无服之殇。

  

  夏后氏尚黑,大事敛用昏,戎事乘骊,牲用玄。殷人尚白,大事歛用日中,戎事乘翰,牲用白。周人尚赤,大事敛用日出,戎事乘騵,牲用骍。

  

  穆公之母卒,使人问于曾子曰:“如之何?”对曰:“申也闻诸申之父曰:哭泣之哀、齐斩之情、饘粥之食,自天子达。布幕,卫也,縿幕,鲁也。”

  

  晋献公将杀其世子申生,公子重耳谓之曰:“子盍言子之志于公乎?”世子曰:“不可,君安骊姬,是我伤公之心也。”曰:“然则盍行乎?”世子曰:“不可,君谓我欲弒君也,天下岂有无父之国哉?吾何行如之?”使人辞于狐突曰:“申生有罪,不念伯氏之言也,以至于死,申生不敢爱其死。虽然,吾君老矣,子少,国家多难,伯氏不出而图吾君,伯氏苟出而图吾君,申生受赐而死。”再拜稽首乃卒,是以为恭世子也。

  

  鲁人有朝祥而莫歌者,子路笑之,夫子曰:“由,尔责于人,终无已夫?三年之丧,亦已久矣夫?”子路出,夫子曰:“又多乎哉?踰月则其善也。”

  

  鲁庄公及宋人战于乘丘,县贲父御,卜国为右,马惊败绩,公队,佐车授绥,公曰:“末之卜也。”县贲父曰:“他日不败绩,而今败绩是,无勇也。”遂死之。圉人浴马,有流矢在白肉,公曰:“非其罪也。”遂诔之。士之有诔,自此始也。

  

  曾子寝疾,病,乐正子春坐于床下,曾元、曾申坐于足,童子隅坐而执烛。童子曰:“华而睆,大夫之箦与?”子春曰:“止。”曾子闻之,瞿然曰:“呼!曰‘华而睆,大夫之箦与’?”曾子曰:“然,斯季孙之赐也,我未之能易也。”元起易箦,曾元曰:“夫子之病革矣,不可以变,幸而至于旦,请敬易之。”曾子曰:“尔之爱我也不如彼。君子之爱人也以德,细人之爱人也以姑息。吾何求哉?吾得正而毙焉,斯已矣!”举扶而易之,反席未安而没。

  

  始死,充充如有穷;既殡,瞿瞿如有求而弗得;既葬,皇皇如有望而弗至。练而慨然,祥而廓然。

  

  邾娄复之以矢,盖自战于升陉始也。鲁妇人之髽而吊也,自败于台鲐始也.

  

  南宫绦之妻之姑之丧,夫子诲之髽曰:“尔毋从从尔,尔毋扈扈尔。盖榛以为笄,长尺而总八寸。”

  

  孟献子禫,县而不乐,比御而不入,夫子曰:“献子加于人一等矣。”

  

  孔子既祥,五日弹琴而不成声,十日而成笙歌。

  

  有子盖既祥而丝屦组缨。

  

  死而不吊者三:畏、厌、溺。

  

  子路有姊之丧,可以除之矣,而弗除也,孔子曰:“何弗除也?”子路曰:“吾寡兄弟而弗忍也。”孔子曰:“先王制礼,行道之人皆弗忍也。”子路闻之,遂除之。

  

  大公封于营丘,比及五世皆,反葬于周,君子曰:“乐,乐其所自生,礼,不忘其本,古之人有言曰:狐死正丘首,仁也。”

  

  伯鱼之母死,期而犹哭,夫子闻之,曰:“谁与哭者?”门人曰:“鲤也。”夫子曰:“嘻,其甚也!”伯鱼闻之,遂除之。

  

  舜葬于苍梧之野,盖三妃未之从也,季武子曰:“周公盖祔。”

  

  曾子之丧,浴于爨室。

  

  大功废业,或曰:大功诵可也。

  

  子张病,召申祥而语之曰:“君子曰终,小人曰死。吾今日其庶几乎?”

  

  曾子曰:“始死之奠,其余阁也与?”

  

  曾子曰:“小功不为位也者,是委巷之礼也。”子思之哭嫂也为位,妇人倡踊,申祥之哭言思也亦然。

  

  古者冠缩缝,今也衡缝,故丧冠之反吉,非古也。

  

  曾子谓子思曰:“急,吾执亲之丧也,水浆不入于口者七日。”子思曰:“先王之制礼也,过之者,俯而就之,不至焉者,跂而及之。故君子之执亲之丧也,水浆不入于口者三日,杖而后能起。”

  

  曾子曰:“小功不税,则是远兄弟,终无服也,而可乎?”

  

  伯高之丧,孔氏之使者未至,冉子摄束帛乘马而将之,孔子曰:“异哉,徒使我不诚于伯高!”

  

  伯高死于卫,赴于孔子,孔子曰:“吾恶乎哭诸?兄弟,吾哭诸庙,父之友,吾哭诸庙门之外,师,吾哭诸寝,朋友.吾哭诸寝门之外,所知,吾哭诸野。于野则已疏,于寝则已重。夫由赐也见我,吾哭诸赐氏。”遂命子贡为之主,曰:“为尔哭也。”来者拜之,知伯高而来者勿拜也。

  

  曾子曰:“丧有疾,食肉饮酒,必有草木之滋焉,以为姜桂之谓也。”

  

  子夏丧其子而丧其明,曾子吊之,曰:“吾闻之也朋,友丧明则哭之。”曾子哭,子夏亦哭,曰:“天乎!予之无罪也!”曾子怒,曰:“商,女何无罪也?吾与女事夫子于洙泗之间,退而老于西河之上,使西河之民,疑女于夫子,尔罪一也。丧尔亲,使民未有闻焉,尔罪二也。丧尔子,丧尔明,尔罪三也。而曰‘女何无罪与’?”子夏投其杖而拜,曰:“吾过矣!吾过矣!吾离群而索居,亦已久矣!”

  

  夫昼居于内,问其疾可也;夜居于外,吊之可也。是故君子非有大故,不宿于外;非致齐也、非疾也,不昼夜居于内。

  

  高子皋之执亲之丧也,泣血三年,未尝见齿,君子以为难。

  

  衰与其不当物也,宁无衰。齐衰不以边坐,大功不以服勤。

  

  孔子之卫,遇旧馆人之丧,入而哭之哀。出,使子贡说骖而赙之,子贡曰:“于门人之丧,未有所说骖,说骖于旧馆,无乃已重乎?”夫子曰:“予乡者入而哭之,遇于一哀,而出涕,予恶夫涕之无从也。小子行之。”

  

  孔子在卫,有送葬者,而夫子观之,曰:“善哉为丧乎?足以为法矣!小子识之。”子贡曰:“夫子何善尔也?”曰:“其往也如慕,其反也如疑。”子贡曰:“岂若速反而虞乎?”子曰:“小子识之,我未之能行也。”

  

  颜渊之丧,馈祥肉,孔子出受之,入弹琴而后食之。

  

  孔子与门人立,拱而尚右,二三子亦皆尚右,孔子曰:“二三子之嗜学也,我则有姊之丧故也。”二三子皆尚左。

  

  孔子蚤作,负手曳杖,消摇于门,歌曰:“泰山其颓乎?梁木其坏乎?哲人其萎乎?”既歌而入,当户而坐,子贡闻之,曰:“泰山其颓,则吾将安仰?梁木其坏、哲人其萎,则吾将安放?夫子殆将病也。”遂趋而入,夫子曰:“赐,尔来何迟也?夏后氏殡于东阶之上,则犹在阼也,殷人殡于两楹之间,则与宾主夹之也,周人殡于西阶之上,则犹宾之也。而丘也殷人也,予畴昔之夜,梦坐奠于两楹之间。夫明王不兴,而天下其孰能宗予?予殆将死也。”盖寝疾七日而没。

  

  孔子之丧,门人疑所服,子贡曰:“昔者夫子之丧颜渊,若丧子而无服,丧子路亦然。请丧夫子,若丧父而无服。”

  

  孔子之丧,公西赤为志焉,饰棺墙,置翣,设披,周也,设崇,殷也,绸练设旐,夏也。

  

  子张之丧,公明仪为志焉,褚幕丹质,蚁结于四隅,殷士也。

  

  子夏问于孔子曰:“居父母之仇,如之何?”夫子曰:“寝苫,枕干不仕,弗与共天下也。遇诸市朝,不反兵而斗。”曰:“请问居昆弟之仇如之何?”曰:“仕弗与共国,衔君命而使,虽遇之不斗。”曰:“请问居从父昆弟之仇如之何?”曰:“不为魁,主人能,则执兵而陪其后。”

  

  孔子之丧,二三子皆绖而出,群居则绖,出则否。

  

  易墓,非古也。

  

  子路曰:“吾闻诸夫子:丧礼,与其哀不足而礼有余也,不若礼不足而哀有余也;祭礼,与其敬不足而礼有余也,不若礼不足而敬有余也。”

  

  曾子吊于负夏,主人既祖填池,推柩而反之,降妇人而后行礼,从者曰:“礼与?”曾子曰:“夫祖者且也,且胡为其不可以反宿也?”从者又问诸子游曰:“礼与?”子游曰:“饭于牖下,小敛于户内,大敛于阼,殡于客位,祖于庭,葬于墓,所以即远也。故丧事有进而无退。”曾子闻之,曰:“多矣乎?予出祖者。”

  

  曾子袭裘而吊,子游裼裘而吊,曾子指子游而示人曰:“夫夫也,为习于礼者,如之何其裼裘而吊也?”主人既小敛,袒括发,子游趋而出,袭裘带绖而入,曾子曰:“我过矣!我过矣!夫夫是也。”

  

  子夏既除丧而见,予之琴,和之而不和,弹之而不成声,作而曰:“哀未忘也。先王制礼,而弗敢过也。”子张既除丧而见,予之琴,和之而和,弹之而成声,作而曰:“先王制礼,不敢不至焉。”

  

  司寇惠子之丧,子游为之麻衰,牡麻绖,文子辞曰:“子辱与弥牟之弟游,又辱为之服,敢辞。”子游曰:“礼也。”文子退,反哭,子游趋而就诸臣之位,文子又辞曰:“子辱与弥牟之弟游,又辱为之服,又辱临其丧,敢辞。”子游曰:“固以请。”文子退,扶适子南面而立,曰:“子辱与弥牟之弟游,又辱为之服,又辱临其丧,虎也敢不复位。”子游趋而就客位。

  

  将军文子之丧,既除丧而后越人来吊,主人深衣练冠,待于庙,垂涕洟,子游观之,曰:“将军文氏之子,其庶几乎?亡于礼者之礼也,其动也中。”

  

  幼名,冠字,五十以伯仲,死谥,周道也。

  

  绖也者,实也。

  

  掘中溜而浴,毁灶以缀足。及葬,毁宗躐行,出于大门,殷道也。学者行之。

  

  子柳之母死,子硕请具,子柳曰:“何以哉?”子硕曰:“请粥庶弟之母。”子柳曰:“如之何其粥人之母?”“以葬其母也。”“不可。”既葬,子硕欲以赙布之余具祭器,子柳曰:“不可。吾闻之也:君子不家于丧,请班诸兄弟之贫者。”

  

  君子曰:谋人之军师,败则死之;谋人之邦邑,危则亡之。

  

  公叔文子升于瑕丘,蘧伯玉从,文子曰:“乐者斯丘也,死则我欲葬焉。”蘧伯玉曰:“吾子乐之,则瑗请前。”

  

  弁人有其母死而孺子泣者,孔子曰:“哀则哀矣,而难为继也。夫礼,为可传也,为可继也,故哭踊有节。”

  

  叔孙武叔之母死,既小敛,举者出户,出户袒,且投其冠,括发,子游曰:“知礼。”

  

  扶君,卜人师扶右,射人师扶左,君薨以是举。

  

  从母之夫、舅之妻,二夫人相为服,君子未之言也。或曰:同爨缌。

  

  丧事欲其纵纵尔,吉事欲其折折尔,故丧事虽遽不陵节,吉事虽止不怠。故骚骚尔则野,鼎鼎尔则小人,君子盖犹犹尔。

  

  丧具,君子耻具,一日二日而可为也者,君子弗为也。

  

  丧服,兄弟之子犹子也,盖引而进之也。嫂叔之无服也,盖推而远之也。姑姊妹之薄也,盖有受我而厚之者也。

  

  食于有丧者之侧,未尝饱也。

  

  曾子与客立于门侧,其徒趋而出,曾子曰:“尔将何之?”曰:“吾父死,将出哭于巷。”曰:“反哭于尔次。”曾子北面而吊焉。

  

  孔子曰:“之死而致死之,不仁而不可为也;之死而致生之,不知而不可为也。是故竹不成用,瓦不成味,木不成斲,琴瑟张而不平,竽笙备而不和,有钟磬而无簨虡,其曰明器,神明之也。”

  

  有子问于曾子曰:“问丧于夫子乎?”曰:“闻之矣:丧欲速贫,死欲速朽。”有子曰:“是非君子之言也。”曾子曰:“参也闻诸夫子也。”有子又曰:“是非君子之言也。”曾子曰:“参也与子游闻之。”有子曰:“然。然则夫子有为言之也?”曾子以斯言告于子游,子游曰:“甚哉!有子之言似夫子也。昔者夫子居于宋,见桓司马自为石椁,三年而不成,夫子曰:若是其靡也,死不如速朽之愈也。死之欲速朽,为桓司马言之也。南宫敬叔反,必载宝而朝,夫子曰:若是其货也,丧不如速贫之愈也。丧之欲速贫,为敬叔言之也。”曾子以子游之言告于有子,有子曰:“然。吾固曰非夫子之言也。”曾子曰:“子何以知之?”有子曰:“夫子制于中都,四寸之棺,五寸之椁,以斯知不欲速朽也。昔者夫子失鲁司寇,将之荆,盖先之以子夏,又申之以冉有,以斯知不欲速贫也。”

  

  陈庄子死,赴于鲁,鲁人欲勿哭,缪公召县子而问焉,县子曰:“古之大夫,束修之问不出竟,虽欲哭之,安得而哭之?今之大夫,交政于中国,虽欲勿哭,焉得而弗哭?且臣闻之:哭有二道,有爱而哭之,有畏而哭之。”公曰:“然。然则如之何而可?”县子曰:“请哭诸异姓之庙。”于是与哭诸县氏。

  

  仲宪言于曾子曰:“夏后氏用明器,示民无知也。殷人用祭器,示民有知也。周人兼用之,示民疑也。”曾子曰:“其不然乎?其不然乎!夫明器,鬼器也,祭器,人器也。夫古之人胡为而死其亲乎?”

  

  公叔木有同母异父之昆弟死,问于子游,子游曰:“其大功乎?”狄仪有同母异父之昆弟死,问于子夏,子夏曰:“我未之前闻也。”鲁人则为之齐衰,狄仪行齐衰,今之齐衰,狄仪之问也。

  

  子思之母死于卫,柳若谓子思曰:“子圣人之后也,四方于子乎观礼,子盖慎诸!”子思曰:“吾何慎哉?吾闻之:有其礼无其财,君子弗行也,有其礼有其财,无其时,君子弗行也。吾何慎哉!”

  

  县子琐曰:“吾闻之:古者不降,上下各以其亲。滕伯文为孟虎齐衰,其叔父也,为孟皮齐衰,其叔父也。”

  

  后木曰:“丧,吾闻诸县子曰:夫丧,不可不深长思也。买棺外内易,我死则亦然。”

  

  曾子曰:“尸未设饰,故帷堂,小敛而彻帷。”仲梁子曰:“夫妇方乱,故帷堂,小敛而彻帷。”

  

  小敛之奠,子游曰:“于东方。”曾子曰:“于西方。”敛斯席矣,小敛之奠在西方,鲁礼之未失也。

  

  县子曰:“绤衰繐裳,非古也。”

  

  子蒲卒,哭者呼灭,子皋曰:“若是,野哉!”哭者改之。

  

  杜桥之母之丧,宫中无相,以为沽也。

  

  夫子曰:“始死,羔裘玄冠者,易之而已。”羔裘玄冠,夫子不以吊。

  

  子游问丧具,夫子曰:“称家之有亡。”子游曰:“有无恶乎齐?”夫子曰:“有,毋过礼。苟亡矣,敛首足形,还葬,县棺而封,人岂有非之者哉?”

  

  司士贲告于子游曰:“请袭于床。”子游曰:“诺。”县子闻之,曰:“汰哉叔氏!专以礼许人。”

  

  宋襄公葬其夫人,醯醢百瓮,曾子曰:“既曰明器矣,而又实之。”

  

  孟献子之丧,司徒旅归四布,夫子曰:“可也。”

  

  读赗,曾子曰:“非古也,是再告也。”

  

  成子高寝疾,庆遗入请曰:“子之病革矣!如至乎大病,则如之何?”子高曰:“吾闻之也:生有益于人,死不害于人。吾纵生无益于人,吾可以死害于人乎哉?我死,则择不食之地而葬我焉。”

  

  子夏问诸夫子曰:“居君之母与妻之丧,居处言语饮食衎尔。”

  

  宾客至,无所馆,夫子曰:“生于我乎馆,死于我乎殡。”

  

  国子高曰:“葬也者,藏也。藏也者,欲人之弗得见也。是故衣足以饰身,棺周于衣,椁周于棺,土周于椁,反壤树之哉。”

  

  孔子之丧,有自燕来观者,舍于子夏氏,子夏曰:“圣人之葬人,与人之葬圣人也,子何观焉?昔者夫子言之曰:吾见封之若堂者矣,见若坊者矣,见若覆夏屋者矣,见若斧者矣,从若斧者焉。马鬣封之谓也。今一日而三斩板,而已封,尚行夫子之志乎哉。”

  

  妇人不葛带。

  

  有荐新,如朔奠。

  

  既葬,各以其服除。

  

  池视重溜。

  

  君即位而为椑,岁壹漆之,藏焉。

  

  复楔齿,缀足,饭,设饰,帷堂,并作,父兄命赴者。

  

  君复于小寝、大寝、小祖、大祖、库门、四郊。

  

  丧不剥奠也与,祭肉也与。

  

  既殡,旬而布材与明器。

  

  朝奠日出,夕奠逮日。

  

  父母之丧哭无时,使必知其反也。

  

  练练衣黄里,縓、缘、葛要绖、绳屦无絇,角瑱、鹿裘、衡长袪,袪裼之可也。

  

  有殡,闻远兄弟之丧,虽缌必往。非兄弟,虽邻不往。

  

  所识,其兄弟不同居者皆吊。

  

  天子之棺四重,水兕革棺被之,其厚三寸,杝棺一,梓棺二,四者皆周。棺束,缩二,衡三,衽每束一,柏椁以端长六尺。

  

  天子之哭诸侯也,爵弁绖(纟才)衣,或曰:使有司哭之,为之不以乐食。

  

  天子之殡也,菆涂龙輴以椁,加斧于椁上,毕涂屋,天子之礼也。

  

  唯天子之丧,有别姓而哭。

  

  鲁哀公诔孔丘曰:“天不遗耆老,莫相予位焉。呜呼哀哉,尼父!”

  

  国亡大县邑,公卿大夫士皆厌冠,哭于大庙三日,君不举。或曰:君举而哭于后土。

  

  孔子恶野哭者。

  

  未仕者不敢税人,如税人,则以父兄之命。

  

  士备入而后朝夕踊。

  

  祥而缟,是月禫,徙月乐。

  

  君于士有赐帟。

  

  君之适长殇,车三乘。公之庶长殇,车一乘。大夫之适长殇,车一乘。

  

  公之丧,诸达官之长杖。

  

  君于大夫,将葬,吊于宫。及出,命引之,三步则止,如是者三。君退,朝亦如之,哀次亦如之。

  

  五十无车者,不越疆而吊人。

  

  季武子寝疾,蟜固不说齐衰而入见,曰:“斯道也,将亡矣!士唯公门说齐衰。”武子曰:“不亦善乎?君子表微。”及其丧也,曾点倚其门而歌。

  

  大夫吊,当事而至,则辞焉。吊于人,是日不乐。妇人不越疆而吊人。行吊之日,不饮酒食肉焉。吊于葬者必执引。若从柩、及圹,皆执绋。

  

  丧公吊之,必有拜者,虽朋友州里舍人可也。吊曰:寡君承事。主人曰临。君遇柩于路,必使人吊之。大夫之丧,庶子不受吊。

  

  妻之昆弟为父后者死,哭之适室,子为主,袒免哭踊。夫入门右,使人立于门外,告来者。狎则入哭。父在,哭于妻之室。非为父后者,哭诸异室。

  

  有殡,闻远兄弟之丧,哭于侧室,无侧室,哭于门内之右。同国则往哭之。

  

  子张死,曾子有母之丧,齐衰而往哭之,或曰:“齐衰不以吊。”曾子曰:“我吊也与哉。”

  

  有若之丧,悼公吊焉,子游摈由左。

  

  齐谷王姬之丧,鲁庄公为之大功,或曰:“由鲁嫁,故为之服姊妹之服。”或曰:“外祖母也,故为之服。”

  

  晋献公之丧,秦穆公使人吊公子重耳,且曰:“寡人闻之:亡国恒于斯,得国恒于斯。虽吾子俨然在忧服之中,丧亦不可久也,时亦不可失也,孺子其图之!”以告舅犯,舅犯曰:“孺子其辞焉!丧人无宝,仁亲以为宝。父死之谓何,又因以为利,而天下其孰能说之?孺子其辞焉。”公子重耳对客曰:“君惠吊亡臣重耳,身丧父死,不得与于哭泣之哀,以为君忧,父死之谓何,或敢有他志,以辱君义。”稽颡而不拜,哭而起,起而不私。子显以致命于穆公,穆公曰:“仁夫公子重耳!夫稽颡而不拜,则未为后也,故不成拜。哭而起,则爱父也,起而不私,则远利也。”

  

  帷殡,非古也,自敬姜之哭穆伯始也。

  

  丧礼,哀戚之至也。节哀,顺变也,君子念始之者也。复,尽爱之道也,有祷祠之心焉。望反诸幽,求诸鬼神之道也。北面,求诸幽之义也。拜稽颡,哀戚之至隐也。稽颡,隐之甚也。饭用米贝,弗忍虚也。不以食道,用美焉尔。铭,明旌也,以死者为不可别已,故以其旗识之,爱之斯录之矣,敬之斯尽其道焉耳。重,主道也,殷主缀重焉,周主重彻焉,奠以素器,以生者有哀素之心也。唯祭祀之礼,主人自尽焉尔,岂知神之所飨,亦以主人有齐敬之心也。辟踊,哀之至也,有筭,为之节文也,袒括发,变也。愠,哀之变也,去饰去美也。袒括发,去饰之甚也,有所袒,有所袭,哀之节也。弁绖葛而葬,与神交之道也,有敬心焉。周人弁而葬,殷人冔而葬。歠主人主妇室老,为其病也。君命食之也,反哭升堂,反诸其所作也。主妇入于室,反诸其所养也。反哭之吊也,哀之至也,反而亡焉,失之矣,于是为甚。殷既封而吊,周反哭而吊,孔子曰:“殷已悫,吾从周。”葬于北方北首,三代之达礼也,之幽之故也。既封,主人赠,而祝宿虞尸。既反哭,主人与有司视虞牲,有司以几筵舍奠于墓左。反,日中而虞,葬日虞,弗忍一日离也。是月也,以虞易奠,卒哭曰成事。是日也,以吉祭易丧祭。明日祔于祖父,其变而之吉祭也。比至于祔,必于是日也接,不忍一日末有所归也。殷练而祔,周卒哭而祔,孔子善殷。

  

  君临臣丧,以巫祝桃茢执戈,恶之也,所以异于生也。

  

  丧有死之道焉,先王之所难言也。

  

  丧之朝也,顺死者之孝心也。其哀,离其室也。故至于祖考之庙而后行。殷朝而殡于祖,周朝而遂葬。

  

  孔子谓为明器者,知丧道矣,备物而不可用也。哀哉,死者而用生者之器也!不殆于用殉乎哉?其曰明器,神明之也。涂车刍灵,自古有之,明器之道也。孔子谓为刍灵者善,谓为俑者不仁,殆于用人乎哉。

  

  穆公问于子思曰:“为旧君反服,古与?”子思曰:“古之君子,进人以礼,退人以礼,故有旧君反服之礼也。今之君子,进人若将加诸膝,退人若将队诸渊,毋为戎首,不亦善乎?又何反服之礼之有?”

  

  悼公之丧,季昭子问于孟敬子曰:“为君何食?”敬子曰:“食粥,天下之达礼也。吾三臣者之不能居公室也,四方莫不闻矣,勉而为瘠,则吾能。毋乃使人疑夫不以情居瘠者乎哉?我则食食。”

  

  卫司徒敬子死,子夏吊焉,主人未小敛,绖而往。子游吊焉,主人既小敛,子游出,绖反哭。子夏曰:“闻之也与?”曰:“闻诸夫子:主人未改服,则不绖。”

  

  曾子曰:“晏子可谓知礼也已,恭敬之有焉。”有若曰:“晏子一狐裘三十年,遣车一乘,及墓而反。国君七个,遣车七乘,大夫五个,遣车五乘。晏子焉知礼?”曾子曰:“国无道,君子耻盈礼焉。国奢则示之以俭,国俭则示之以礼。”

  

  国昭子之母死,问于子张曰:“葬及墓,男子妇人安位?”子张曰:“司徒敬子之丧,夫子相,男子西乡,妇人东乡。”曰:“噫,毋!”曰:“我丧也斯沾,尔专之,宾为宾焉,主为主焉,妇人从男子皆西乡。”

  

  穆伯之丧,敬姜昼哭,文伯之丧,昼夜哭。孔子曰:“知礼矣。”

  

  文伯之丧,敬姜据其床而不哭,曰:“昔者吾有斯子也,吾以将为贤人也,吾未尝以就公室。今及其死也,朋友诸臣未有出涕者,而内人皆行哭失声。斯子也,必多旷于礼矣夫!”

  

  季康子之母死,陈亵衣,敬姜曰:“妇人不饰,不敢见舅姑。将有四方之宾来,亵衣何为陈于斯?”命彻之。

  

  有子与子游立,见孺子慕者,有子谓子游曰:“予壹不知夫丧之踊也,予欲去之久矣。情在于斯,其是也夫?”子游曰:“礼有微情者,有以故兴物者,有直情而径行者,戎狄之道也,礼道则不然。人喜则斯陶,陶斯咏,咏斯犹,犹斯舞,舞斯愠,愠斯戚,戚斯叹,叹斯辟,辟斯踊矣。品节斯,斯之谓礼。人死,斯恶之矣。无能也,斯倍之矣。是故制绞衾,设蒌翣,为使人勿恶也。始死,脯醢之奠,将行遣而行之,既葬而食之,未有见其飨之者也。自上世以来,未之有舍也,为使人勿倍也。故子之所刺于礼者,亦非礼之訾也。”

  

  吴侵陈,斩祀杀厉,师还出竟,陈大宰嚭使于师,夫差谓行人仪曰:“是夫也多言,盍尝问焉?师必有名,人之称斯师也者,则谓之何?”大宰嚭曰:“古之侵伐者,不斩祀,不杀厉,不获二毛。今斯师也,杀厉与?其不谓之杀厉之师与?”曰:“反尔地,归尔子,则谓之何?”曰:“君王讨敝邑之罪,又矜而赦之,师与?有无名乎?”

  

  颜丁善居丧,始死,皇皇焉,如有求而弗得。及殡,望望焉,如有从而弗及。既葬,慨焉,如不及其反而息。

  

  子张问曰:“书云:高宗三年不言,言乃讙。有诸?”仲尼曰:“胡为其不然也?古者天子崩,王世子听于冢宰三年。”

  

  知悼子卒,未葬.,公饮酒,师旷、李调侍鼓钟,杜蒉自外来,闻钟声,曰:“安在?”曰:“在寝。”杜蒉入寝,历阶而升,酌曰:“旷饮斯。”又酌曰:“调饮斯。”又酌堂上北面坐饮之降,趋而出,平公呼而进之,曰:“蒉,曩者尔心或开予,是以不与尔言。尔饮旷何也?”曰:“子卯不乐,知悼子在堂,斯其为子卯也大矣。旷也,大师也.不以诏,是以饮之也。”“尔饮调何也?”曰:“调也,君之亵臣也,为一饮一食,亡君之疾,是以饮之也。”“尔饮何也?”曰:“蒉也,宰夫也,非刀匕是共,又敢与知防,是以饮之也。”平公曰:“寡人亦有过焉,酌而饮寡人。”杜蒉洗而扬觯,公谓侍者曰:“如我死,则必无废斯爵也。”至于今既毕献,斯扬觯,谓之杜举。

  

  公叔文子卒,其子戍请谥于君,曰:“日月有时,将葬矣,请所以易其名者。”君曰:“昔者卫国凶饥,夫子为粥与国之饿者,是不亦惠乎?昔者卫国有难,夫子以其死卫寡人,不亦贞乎?天子听卫国之政,修其班制,以与四邻交,卫国之社稷不辱,不亦文乎?故谓夫子贞惠文子。”

  

  石骀仲卒,无适子,有庶子六人,卜所以为后者,曰:“沐浴佩玉则兆。”五人者皆沐浴佩玉,石祁子曰:“孰有执亲之丧,而沐浴佩玉者乎?”不沐浴佩玉,石祁子兆,卫人以龟为有知也。

  

  陈子车死于卫,其妻与其家大夫谋以殉葬,定而后陈子亢至,以告曰:“夫子疾,莫养于下,请以殉葬。”子亢曰:“以殉葬,非礼也。虽然,则彼疾,当养者,孰若妻与宰?得已,则吾欲已,不得已,则吾欲以二子者之为之也。”于是弗果用。

  

  子路曰:“伤哉贫也!生无以为养,死无以为礼也。”孔子曰:“啜菽饮水,尽其欢,斯之谓孝。敛手足形,还葬而无椁,称其财,斯之谓礼。”

  

  卫献公出奔,反于卫,及郊,将班邑于从者而后入,柳庄曰:“如皆守社稷,则孰执羁靮而从?如皆从,则孰守社稷?君反其国而有私也,毋乃不可乎?”弗果班。

  

  卫有大史曰:“柳庄寝疾。”公曰:“若疾革,虽当祭必告。”公再拜稽首请于尸曰:“有臣柳庄也者,非寡人之臣,社稷之臣也,闻之死,请往。”不释服而往,遂以襚之,与之邑,裘氏与县潘氏书而纳诸棺曰:“世世万子孙无变也。”

  

  陈干昔寝疾,属其兄弟,而命其子尊已,曰:“如我死,则必大为我棺,使吾二婢子夹我。”陈干昔死,其子曰:“以殉葬,非礼也。况又同棺乎?”弗果杀。

  

  仲遂卒于垂,壬午独绎,万入去钥,仲尼曰:“非礼也。”卿卒不绎。

  

  季康子之母死,公输若方小敛,般请以机封,将从之,公肩假曰:“不可。夫鲁有初,公室视丰碑,三家视桓楹,般,尔以人之母尝巧,则岂不得以其母以尝巧者乎?则病者乎?噫,弗果从!”

  

  战于郎,公叔禺人遇负杖入保者息,曰:“使之虽病也,任之虽重也,君子不能为谋也,士弗能死也,不可。我则既言矣。”与其邻重汪踦往,皆死焉,鲁人欲勿殇重汪踦,问于仲尼,仲尼曰:“能执干戈以卫社稷,虽欲勿殇也,不亦可乎?”

  

  子路去鲁,谓颜渊曰:“何以赠我?”曰:“吾闻之也:去国,则哭于墓而后行,反其国不哭,展墓而入。”谓子路曰:“何以处我?”子路曰:“吾闻之也:过墓则式,过祀则下。”

  

  工尹商阳与陈弃疾追吴师,及之,陈弃疾谓工尹商阳曰:“王事也,子手弓而可。”手弓,“子射诸。”射之,毙一人,韔弓,又及,谓之:“又毙二人。”每毙一人,揜其目,止其御曰:“朝不坐,燕不与,杀三人,亦足以反命矣。”孔子曰:“杀人之中,又有礼焉。”

  

  诸侯伐秦,曹桓公卒于会,诸侯请含,使之袭。

  

  襄公朝于荆,康王卒,荆人曰:“必请袭。”鲁人曰:“非礼也。”荆人强之,巫先拂柩,荆人悔之。

  

  滕成公之丧,使子叔敬叔吊,进书,子服惠伯为介。及郊,为懿伯之忌不入,惠伯曰:“政也,不可以叔父之私不将公事。”遂入。

  

  哀公使人吊蒉尚,遇诸道,辟于路,画宫而受吊焉。曾子曰:“蒉尚不如杞梁之妻之知礼也。”齐庄公袭莒于夺,杞梁死焉,其妻迎其柩于路,而哭之哀,庄公使人吊之,对曰:“君之臣不免于罪,则将肆诸市朝,而妻妾执。君之臣免于罪,则有先人之敝庐在,君无所辱命。”

  

  孺子(左“享”右“黄”)之丧,哀公欲设拨,问于有若,有若曰:“其可也。君之三臣犹设之。”颜柳曰:“天子龙輴而椁帱,诸侯輴而设帱。为榆沈,故设拨。三臣者废輴而设拨,窃礼之不中者也。而君何学焉?”

  

  悼公之母死,哀公为之齐衰,有若曰:“为妾齐衰,礼与?”公曰:“吾得已乎哉?鲁人以妻我。”

  

  季子皋葬其妻,犯人之禾,申祥以告,曰:“请庚之。”子皋曰:“孟氏不以是罪予,朋友不以是弃予,以吾为邑长于斯也。”买道而葬,后难继也。

  

  仕而未有禄者,君有馈焉曰献,使焉曰寡君,违而君薨,弗为服也。

  

  虞而立尸,有几筵。

  

  卒哭而讳,生事毕而鬼事始已。既卒哭,宰夫执木铎以命于宫曰:“舍故而讳新。”自寝门至于库门。

  

  二名不偏讳,夫子之母名征在,言在不称征,言征不称在。

  

  军有忧,则素服哭于库门之外,赴车不载櫜韔。

  

  有焚其先人之室,则三日哭。故曰:新宫火,亦三日哭。

  

  孔子过泰山侧,有妇人哭于墓者而哀,夫子式而听之,使子路问之曰:“子之哭也,壹似重有忧者。”而曰:“然!昔者吾舅死于虎,吾夫又死焉,今吾子又死焉。”夫子曰:“何为不去也?”曰:“无苛政。”夫子曰:“小子识之。苛政猛于虎也。”

  

  鲁人有周丰也者,哀公执挚请见之,而曰“不可”。公曰:“我其已夫!”使人问焉,曰:“有虞氏未施信于民而民信之,夏后氏未施敬于民而民敬之,何施而得斯于民也?”对曰:“墟墓之间,未施哀于民而民哀,社稷宗庙之中,未施敬于民而民敬,殷人作誓而民始畔,周人作会而民始疑。苟无礼义忠信诚悫之心以莅之,虽固结之,民其不解乎!”

  

  丧不虑居,毁不危身。丧不虑居,为无庙也,毁不危身,为无后也。

  

  延陵季子适齐,于其反也,其长子死,葬于赢博之间。孔子曰:“延陵季子,吴之习于礼者也。”往而观其葬焉,其坎深不至于泉,其敛以时服,既葬而封,广轮揜坎,其高可隐也。既封,左袒,右还其封,且号者三,曰:“骨肉归复于土,命也。若魂气则无不之也,无不之也。”而遂行。孔子曰:“延陵季子之于礼也,其合矣乎!”

  

  邾娄考公之丧,徐君使容居来吊含,曰:“寡君使容居坐含,进侯玉,其使容居以含。”有司曰:“诸侯之来辱敝邑者,易则易,于则于,易于杂者未之有也。”容居对曰:“容居闻之:事君不敢忘其君,亦不敢遗其祖。昔我先君驹王,西讨济于河,无所不用斯言也。容居,鲁人也,不敢忘其祖。”

  

  子思之母死于卫,赴于子思,子思哭于庙,门人至曰:“庶氏之母死,何为哭于孔氏之庙乎?”子思曰:“吾过矣!吾过矣!”遂哭于他室。

  

  天子崩,三日,祝先服,五日,官长服,七日,国中男女服,三月,天下服。虞人致百祀之木,可以为棺椁者斩之,不至者,废其祀,刎其人。

  

  齐大饥,黔敖为食于路,以待饿者而食之。有饿者,蒙袂辑屦,贸贸然来,黔敖左奉食,右执饮,曰:“嗟,来食!”扬其目而视之,曰:“予唯不食嗟来之食,以至于斯也。”从而谢焉,终不食而死。曾子闻之曰:“微与!其嗟也可去,其谢也可食。”

  

  邾娄定公之时,有弒其父者,有司以告,公瞿然失席,曰:“是寡人之罪也。”曰:“寡人尝学断斯狱矣!臣弒君,凡在官者,杀无赦。子弒父,凡在宫者,杀无赦。杀其人,坏其室,洿其宫而猪焉。盖君踰月而后举爵。”

  

  晋献文子成室,晋大夫发焉,张老曰:“美哉轮焉!美哉奂焉!歌于斯,哭于斯,聚国族于斯。”文子曰:“武也,得歌于斯,哭于斯,聚国族于斯。是全要领以从先大夫于九京也。”北面再拜稽首,君子谓之善颂善祷。

  

  仲尼之畜狗死,使子贡埋之,曰:“吾闻之也:敝帷不弃,为埋马也;敝盖不弃,为埋狗也。丘也贫,无盖,于其封也,亦予之席,毋使其首陷焉。”路马死,埋之以帷。

  

  季孙之母死,哀公吊焉,曾子与子贡吊焉,阍人为君在,弗内也,曾子与子贡入于其厩而修容焉。子贡先入,阍人曰:“乡者已告矣。”曾子后入,阍人避之,涉内溜,卿大夫皆辟位,公降一等而揖之。君子言之曰:“尽饰之道,斯其行者远矣。”

  

  阳门之介夫死,司城子罕入而哭之哀,晋人之觇宋者反报于晋侯曰:“阳门之介夫死,而子罕哭之哀,而民说,殆不可伐也。”孔子闻之曰:“善哉觇国乎!诗云:凡民有丧,扶服救之。虽微晋而已,天下其孰能当之?”

  

  鲁庄公之丧,既葬,而绖不入库门,士大夫既卒哭,麻不入。

  

  孔子之故人曰原壤,其母死,夫子助之沐椁,原壤登木曰:“久矣!予之不托于音也。”歌曰:“狸首之班然,执女手之卷然。”夫子为弗闻也者而过之,从者曰:“子未可以已乎?”夫子曰:“丘闻之:亲者毋失其为亲也,故者毋失其为故也。”

  

  赵文子与叔誉观乎九原,文子曰:“死者如可作也,吾谁与归?”叔誉曰:“其阳处父乎?”文子曰:“行幷植于晋国,不没其身,其知不足称也。”“其舅犯乎?”文子曰:“见利不顾其君,其仁不足称也。我则随武子乎?利其君不忘其身,谋其身不遗其友。”晋人谓文子知人。文子,其中退然如不胜衣,其言吶吶然如不出其口,所举于晋国,管库之士,七十有余家,生不交利,死不属其子焉。

  

  叔仲皮学子柳。叔仲皮死,其妻鲁人也,衣衰而缪绖,叔仲衍以吉,请繐衰而环绖,曰:“昔者吾丧姑姊妹亦如斯,末吾禁也。”退使其妻繐衰而环绖。

  

  成人有其兄死而不为衰者,闻子皋将为成宰,遂为衰。成人曰:“蚕则绩而蟹有匡,范则冠而蝉有緌,兄则死而子皋为之衰。”

  

  乐正子春之母死,五日而不食,曰:“吾悔之。自吾母而不得吾情,吾恶乎用吾情?”

  

  岁旱,穆公召县子而问然,曰:“天久不雨,吾欲暴尪而奚若?”曰:“天久不雨,而暴人之疾子,虐。毋乃不可与?”“然则吾欲暴巫而奚若?”曰:“天则不雨,而望之愚妇人,于以求之,毋乃已疏乎?”“徙市则奚若?”曰:“天子崩,巷市七日。诸侯薨,巷市三日。为之徙市,不亦可乎?”

  

  孔子曰:“卫人之祔也离之,鲁人之祔也合之。善夫!”
  

  《礼记投壶》

  

  投壶之礼,主人奉矢,司射奉中,使人执壶。主人请曰:“某有枉矢哨壶,请以乐宾。”宾曰:“子有旨酒嘉肴,某既赐矣,又重以乐,敢辞?”主人曰:“枉矢哨壶,不足辞也,敢固以请?”宾曰:“某既赐矣,又重以乐,敢固辞?”主人曰:“枉矢哨壶,不足辞也,敢固以请?”宾曰:“某固辞不得命,敢不敬从?”

  

  宾再拜受,主人般还曰辟。主人阼阶上拜送,宾盘还曰辟。

  

  已拜受矢,进即两楹间,退反位,揖宾就筵。

  

  司射进度壶,间以二矢半,反位,设中东面,执八筭兴。

  

  请宾曰:“顺投为入,比投不释,胜饮不胜者。正爵既行,请为胜者立马,一马从二马,三马既立,请庆多马。”请主人亦如之。

  

  命弦者曰:“请奏狸首,间若一。”大师曰诺。

  

  左右告矢具,请拾投。有入者,则司射坐而释一筭焉。宾党于右,主党于左。

  

  卒投,司射执筭曰:“左右卒投,请数。”二筭为纯,一纯以取,一筭为奇,遂以奇筭告,曰:“某贤于某若干纯。”奇则曰奇,均则曰左右钧。

  

  命酌曰:“请行觞。”酌者曰诺。当饮者皆跪奉觞曰:“赐灌。”胜者跪曰:“敬养。”

  

  正爵既行,请立马,马各直其筭,一马从二马,以庆。庆礼曰:“三马既备,请庆多马。”宾主皆曰诺。正爵既行,请彻马。

  

  筭多少视其坐。筹,室中五扶,堂上七扶庭中九扶。筭长尺二寸,壶颈修七寸,腹修五寸,口径二寸半,容斗五升。壶中实小豆焉,为其矢之跃而出也。壶去席二矢半。矢,以柘若棘,毋去其皮。

  

  鲁令弟子辞曰:“毋幠,毋敖,毋偝立,毋踰言,偝立踰言有常爵。”薛令弟子辞曰:“毋幠,毋敖,毋偝立,毋踰言,若是者浮。”司射、庭长及冠士立者皆属宾党,乐人及使者、童子皆属主党。

 
第三挖井人:[[YuGongde|yugongde]]

第二挖井人:Tiddlyspot团队

第一挖井人:Tiddlywiki团队


''什么是挖井人计划''

吃水不忘挖井人

信息爆炸的时代,经过收集整理的信息便于大家查询和梳理知识体系。

挖井人计划就是记录收集整理这些信息的贡献者们。

注意,每一位使用本文件梳理知识体系的人,也都是挖井人,不管你是将梳理后的文件供自己使用还是分享出来让更多人参考。
  《礼记王制》

  王者之制禄爵,公、侯、伯、子、男,凡五等。诸侯之上大夫卿、下大夫、上士、中士、下士,凡五等。天子之田方千里,公侯田方百里,伯七十里,子男五十里。不能五十里者,不合于天子,附于诸侯,曰附庸。天子之三公之田视公侯,天子之卿视伯,天子之大夫视子男,天子之元士视附庸。

  

  制农田百亩,百亩之分,上农夫食九人,其次食八人,其次食七人,其次食六人,下农夫食五人。庶人在官者,其禄以是为差也。诸侯之下士,视上农夫,禄足以代其耕也。中士倍下士,上士倍中士,下大夫倍上士。卿四大夫禄,君十卿禄,次国之卿,三大夫禄,君十卿禄。小国之卿,倍大夫禄,君十卿禄。次国之上卿,位当大国之中,中当其下,下当其上大夫。小国之上卿,位当大国之下卿,中当其上大夫,下当其下大夫。其有中士下士者,数各居其上之三分。

  

  凡四海之内九州,州方千里,州建百里之国三十,七十里之国六十,五十里之国百有二十,凡二百一十国。名山大泽不以封,其余以为附庸间田。八州,州二百一十国。

  

  天子之县内,方百里之国九,七十里之国二十有一,五十里之国六十有三,凡九十三国,名山大泽不以朌,其余以禄士,以为间田。

  

  凡九州,千七百七十三国,天子之元士,诸侯之附庸,不与。

  

  天子百里之内以共官,千里之内以为御。

  

  千里之外设方伯,五国以为属,属有长。十国以为连,连有帅。三十国以为卒,卒有正。二百一十国以为州,州有伯。八州,八伯,五十六正,百六十八帅,三百三十六长。八伯各以其属,属于天子之老二人,分天下以为左右,曰二伯。

  

  千里之内曰甸,千里之外曰采,曰流。

  

  天子三公,九卿,二十七大夫,八十一元士。

  

  大国三卿,皆命于天子。下大夫五人,上士二十七人。

  

  次国三卿,二卿命于天子,一卿命于其君。下大夫五人,上士二十七人。

  

  小国二卿,皆命于其君。下大夫五人,上士二十七人。

  

  天子使其大夫为三监,监于方伯之国,国三人。

  

  天子之县,内诸侯禄也,外诸侯嗣也。

  

  制三公一命卷,若有加则赐也,不过九命。次国之君,不过七命。小国之君,不过五命。大国之卿,不过三命。下卿再命。小国之卿与下大夫一命。

  

  凡官民材,必先论之。论辨,然后使之。任事,然后爵之。位定,然后禄之。

  

  爵人于朝,与士共之,刑人于市,与众弃之。是故公家不畜刑人,大夫弗养。士遇之涂,弗与言也。屏之四方,唯其所之,不及以政,亦弗故生也。

  

  诸侯之于天子也,比年一小聘,三年一大聘,五年一朝。

  

  天子五年一巡守。

  

  岁二月,东巡守,至于岱宗,柴而望祀山川,觐诸侯,问百年者就见之。命大师陈诗,以观民风。命市纳贾,以观民之所好恶,志淫好辟。命典礼,考时月定日,同律、礼、乐、制度、衣服,正之。山川神祗有不举者为不敬,不敬者君削以地。宗庙有不顺者为不孝,不孝者君绌以爵。变礼易乐者为不从,不从者君流。革制度衣服者为畔,畔者君讨。有功德于民者,加地进律。

  

  五月,南巡守,至于南岳,如东巡守之礼。

  

  八月,西巡守,至于西岳,如南巡守之礼。

  

  十有一月,北巡守,至于北岳,如西巡守之礼。

  

  归假于祖祢,用特。

  

  天子将出,类乎上帝,宜乎社,造乎祢。诸侯将出,宜乎社,造乎祢。

  

  天子无事,与诸侯相见,曰朝。考礼正刑,一德以尊于天子。

  

  天子赐诸侯乐,则以柷将之。赐伯子男乐,则以鼗将之。

  

  诸侯赐弓矢,然后征,赐鈇钺,然后杀,赐圭瓒,然后为鬯。未赐圭瓒,则资鬯于天子。

  

  天子命之教,然后为学。小学在公宫南之左,大学在郊。天子曰辟廱,诸侯曰頖宫。

  

  天子将出征,类乎上帝,宜乎社,造乎祢,禡于所征之地,受命于祖,受成于学,出征执有罪,反释奠于学,以讯馘告。

  

  天子诸侯无事,则岁三田,一为干豆,二为宾客,三为充君之庖。无事而不田,曰不敬。田不以礼,曰暴天物。天子不合围,诸侯不掩群,天子杀则下大绥,诸侯杀则下小绥,大夫杀则止佐车。佐车止则百姓田猎,獭祭鱼,然后虞人入泽梁,豺祭兽,然后田猎。鸠化为鹰,然后设罻罗,草木零落,然后入山林。昆虫未蛰,不以火田,不麛,不卵,不杀胎,不殀夭,不覆巢。

  

  冢宰制国用,必于岁之杪,五谷皆入,然后制国用。用地小大,视年之丰耗,以三十年之通,制国用,量入以为出。祭用数之仂,丧三年不祭,唯祭天地社稷,为越绋而行事。丧用三年之仂,丧祭,用不足曰暴,有余曰浩。祭,丰年不奢,凶年不俭。国无九年之蓄,曰不足,无六年之蓄,曰急,无三年之蓄,曰国非其国也。三年耕,必有一年之食,九年耕,必有三年之食。以三十年之通,虽有凶旱水溢,民无菜色,然后天子食,日举以乐。

  

  天子七日而殡,七月而葬。诸侯五日而殡,五月而葬。大夫士庶人三日而殡,三月而葬。三年之丧,自天子达,庶人县封。葬不为雨止,不封不树,丧不贰事。自天子达于庶人,丧从死者,祭从生者,支子不祭。

  

  天子七庙,三昭三穆,与大祖之庙而七。诸侯五庙,二昭二穆,与大祖之庙而五。大夫三庙,一昭一穆,与大祖之庙而三。士一庙。庶人祭于寝。

  

  天子诸侯宗庙之祭,春曰礿,夏曰禘,秋曰尝,冬曰烝。天子祭天地,诸侯祭社稷,大夫祭五祀。天子祭天下名山大川,五岳视三公,四渎视诸侯,诸侯祭名山大川之在其地者。

  

  天子诸侯,祭因国之在其地而无主后者。

  

  天子犆礿、祫禘、祫尝、祫烝。诸侯礿则不禘,禘则不尝,尝则不烝,烝则不礿。诸侯礿犆,禘一,犆一祫,尝祫,烝祫。

  

  天子社稷皆大牢,诸侯社稷皆少牢,大夫士宗庙之祭,有田则祭,无田则荐,庶人春荐韭,夏荐麦,秋荐黍,冬荐稻,韭以卵,麦以鱼,黍以豚,稻以鴈。祭天地之牛角茧栗,宗庙之牛角握,宾客之牛角尺。诸侯无故不杀牛,大夫无故不杀羊,士无故不杀犬豕,庶人无故不食珍。

  

  庶羞不踰牲,燕衣不踰祭服,寝不踰庙。

  

  古者公田借而不税,市廛而不税,关讥而不征,林麓川泽以时入而不禁,夫圭田无征。

  

  用民之力,岁不过三日。

  

  田里不粥,墓地不请。

  

  司空执度度地,居民山川沮泽,时四时,量地远近,兴事任力。凡使民,任老者之事,食壮者之食。

  

  凡居民材,必因天地寒暖燥湿,广谷大川异制,民生其间者异谷,刚柔轻重,迟速异齐,五味异和,器械异制,衣服异宜。修其教不易其俗,齐其政不易其宜。中国戎夷,五方之民,皆有性也,不可推移。东方曰夷,被发文身,有不火食者矣。南方曰蛮,雕题交趾,有不火食者矣。西方曰戎,被发衣皮,有不粒食者矣。北方曰狄,衣羽毛穴居,有不粒食者矣。中国、夷、蛮、戎、狄皆有安居,和味,宜服,利用,备器,五方之民,言语不通,嗜欲不同,达其志,通其欲。东方曰寄,南方曰象,西方曰狄鞮,北方曰译。

  

  凡居民,量地以制邑,度地以居民。地邑民居,必参相得也。无旷土,无游民,食节事时,民咸安其居,乐事劝功,尊君亲上,然后兴学。

  

  司徒修六礼以节民性,明七教以兴民德,齐八政以防淫,一道德以同俗,养耆老以致孝,恤孤独以逮不足,上贤以崇德,简不肖以绌恶。命乡简不帅教者以告。耆老皆朝于庠。元日习射上功,习乡上齿,大司徒帅国之俊士与执事焉,不变。国之右乡,简不帅教者移之左,命国之左乡,简不帅教者移之右。如初礼,不变,移之郊,如初礼,不变,移之遂。如初礼,不变,屏之远方,终身不齿。命乡论秀士,升之司徒,曰选士。司徒论选士之秀者,而升之学,曰俊士。升于司徒者不征于乡,升于学者不征于司徒,曰造士。乐正崇四术,立四教,顺先王诗书礼乐以造士。春秋教以礼乐,冬夏教以诗书,王大子,王子,群后之大子,卿大夫元士之适子,国之俊选,皆造焉。凡入学以齿,将出学,小胥,大胥,小乐正,简不帅教者,以告于大乐正,大乐正以告于王。王命三公,九卿,大夫,元士皆入学,不变,王亲视学,不变,王三日不举,屏之远方。西方曰棘,东方曰寄,终身不齿。大乐正论造士之秀者,以告于王,而升诸司马,曰进士。

  

  司马辨论官材,论进士之贤者,以告于王,而定其论。论定,然后官之,任官,然后爵之,位定,然后禄之。大夫废其事,终身不仕,死以士礼葬之。有发,则命大司徒教士以车甲。凡执技,论力,适四方,臝股肱,决射御,凡执技以事上者,祝、史、射、御、医、卜及百工,凡执技以事上者,不贰事,不移官,出乡不与士齿。仕于家者,出乡不与士齿。

  

  司寇正刑明辟,以听狱讼,必三刺,有旨无简,不听,附从轻,赦从重。

  

  凡制五刑,必即天论,邮罚丽于事。凡听五刑之讼,必原父子之亲,立君臣之义,以权之意论轻重之序,慎测浅深之量,以别之。悉其聪明,致其忠爱,以尽之。疑狱,泛与众共之,众疑,赦之。必察小大之比以成之。成狱辞,史以狱成告于正,正听之,正以狱成告于大司寇,大司寇听之棘木之下,大司寇以狱之成告于王,王命三公参听之,三公以狱之成告于王,王三又,然后制刑。凡作刑罚,轻无赦。刑者侀也,侀者成也,一成而不可变,故君子尽心焉。析言破律,乱名改作,执左道以乱政,杀。作淫声,异服,奇技,奇器,以疑众,杀。行伪而坚,言伪而辩,学非而博,顺非而泽,以疑众,杀。假于鬼神、时日、卜筮,以疑众,杀。此四诛者,不以听。凡执禁以齐众,不赦过。有圭璧金璋,不粥于市。命服命车,不粥于市。宗庙之器,不粥于市。牺牲不粥于市,戎器不粥于市,用器不中度,不粥于市。兵车不中度,不粥于市。布、帛精麤不中数,幅广狭不中量,不粥于市。奸色乱正色,不粥于市。锦文珠玉成器,不粥于市。衣服饮食,不粥于市。五谷不时,果实未孰,不粥于市。木不中伐,不粥于市。禽兽鱼鳖不中杀,不粥于市。关执禁以讥,禁异服,识异言。

  

  大史典礼,执简记,奉讳恶。

  

  天子齐戒受谏,司会以岁之成,质于天子。冢宰齐戒受质,大乐正,大司寇,市,三官以其成,从质于天子。大司徒,大司马,大司空,齐戒受质,百官各以其成,质于三官。大司徒,大司马,大司空,以百官之成,质于天子,百官齐戒受质。然后休老劳农,成岁事,制国用。

  

  凡养老,有虞氏以燕礼,夏后氏以飨礼,殷人以食礼。周人修而兼用之,五十养于乡,六十养于国,七十养于学,达于诸侯。

  

  八十拜君命,一坐再至,瞽亦如之。九十使人受,五十异粻,六十宿肉,七十贰膳,八十常珍,九十饮食不离寝,膳饮从于游可也。六十岁制,七十时制,八十月制,九十日修。唯绞、紟、衾、冒,死而后制。五十始衰,六十非肉不饱,七十非帛不暖,八十非人不暖,九十虽得人不暖矣。五十杖于家,六十杖于乡,七十杖于国,八十杖于朝,九十者天子欲有问焉,则就其室,以珍从。七十不俟朝,八十月告存,九十日有秩。五十不从力政,六十不与服戎,七十不与宾客之事,八十齐丧之事弗及也。五十而爵,六十不亲学,七十致政。唯衰麻为丧。

  

  有虞氏养国老于上庠,养庶老于下庠。夏后氏养国老于东序,养庶老于西序。殷人养国老于右学,养庶老于左学。周人养国老于东胶,养庶老于虞庠,虞庠在国之西郊。有虞氏皇而祭,深衣而养老。夏后氏收而祭,燕衣而养老。殷人冔而祭,缟衣而养老。周人冕而祭,玄衣而养老。凡三王养老皆引年。八十者,一子不从政。九十者,其家不从政。废疾非人不养者,一人不从政。父母之丧,三年不从政。齐衰大功之丧,三月不从政。将徙于诸侯,三月不从政。自诸侯来徙家,期不从政。

  

  少而无父者谓之孤,老而无子者谓之独,老而无妻者谓之矜,老而无夫者之谓寡。此四者,天民之穷而无告者也,皆有常饩。

  

  瘖聋、跛、躄、断者、侏儒,百工各以其器食之。

  

  道路,男子由右,妇人由左,车从中央。父之齿随行,兄之齿鴈行,朋友不相踰。轻任幷,重任分,班白者不提挈。君子耆老不徒行,庶人耆老不徒食。

  

  大夫祭器不假,祭器未成,不造燕器。

  

  方一里者,为田九百亩。方十里者,为方一里者百,为田九万亩。方百里者,为方十里者百,为田九十亿亩。方千里者,为方百里者百,为田九万亿亩。

  

  自恒山至于南河,千里而近。自南河至于江,千里而近。自江至于衡山,千里而遥。自东河至于东海,千里而遥。自东河至于西河,千里而近。自西河至于流沙,千里而遥。西不尽流沙,南不尽衡山,东不尽东海,北不尽恒山。凡四海之内,断长补短。方三千里,为田八十万亿一万亿亩。方百里者,为田九十亿亩。山陵、林麓、川泽、沟渎、城郭、宫室、涂巷,三分去一,其余六十亿亩。

  

  古者以周尺八尺为步,今以周尺六尺四寸为步。古者百亩,当今东田百四十六亩三十步。古者百里,当今百二十一里六十步四尺二寸二分。

  

  方千里者,为方百里者百,封方百里者三十国。其余方百里者七十,又封方七十里者六十。为方百里者二十九,方十里者四十,其余方百里者四十,方十里者六十,又封方五十里者百二十。为方百里者三十,其余方百里者十,方十里者六十。名山大泽不以封,其余以为附庸间田。诸侯之有功者,取于间田以禄之。其有削地者,归之间田。

  

  天子之县内,方千里者,为方百里者百,封方百里者九,其余方百里者九十一,又封方七十里者二十一,为方百里者十,方十里者二十九,其余方百里者八十,方十里者七十一,又封方五十里者六十三,为方百里者十五,方十里者七十五,其余方百里者六十四,方十里者九十六。

  

  诸侯之下士,禄食九人,中士食十八人,上士食三十六人,下大夫食七十二人,卿食二百八十八人,君食二千八百八十人。次国之卿,食二百一十六人,君食二千一百六十人。小国之卿,食百四十四人,君食千四百四十人。次国之卿,命于其君者,如小国之卿。天子之大夫为三监,监于诸侯之国者,其禄视诸侯之卿,其爵视次国之君,其禄取之于方伯之地。方伯为朝天子,皆有汤沐之邑于天子之县内,视元士。诸侯世子世国,大夫不世爵,使以德,爵以功。未赐爵,视天子之元士,以君其国。诸侯之大夫,不世爵禄。

  

  六礼:冠、昏、丧、祭、乡、相见。七教:父子、兄弟、夫妇、君臣、长幼、朋友、宾客。八政:饮食、衣服、事为、异别、度、量、数、制。

  
  

  微子第十八

  

  微子去之,箕子为之奴,比干谏而死。孔子曰:“殷有三仁焉。”

  柳下惠为士师,三黜。人曰:“子未可以去乎?”曰:“直道而事人,焉往而不三黜?枉道而事人,何必去父母之邦?”齐景公待孔子曰:“若季氏则吾不能,以季、孟之间待之。”曰:“吾老矣,不能用也。”孔子行。齐人归女乐,季桓子受之,三日不朝,孔子行。

  楚狂接舆歌而过孔子曰:“凤兮凤兮,何德之衰?往者不可谏,来者犹可追。

  已而已而!今之从政者殆而!”孔子下,欲与之言,趋而辟之,不得与之言。

  长沮、桀溺耦而耕,孔子过之,使子路问津焉。长沮曰:“夫执舆者为谁?”子路曰:“为孔丘。”曰:“是鲁孔丘与?”曰:“是也。”曰:“是知津矣。”

  问于桀溺。桀溺曰:“子为谁?”曰:“为仲由。”曰:“是鲁孔丘之徒与?”对曰:“然。”曰:“滔滔者,天下皆是也,而谁以易之?且而与其从辟人之士也,岂若从辟世之士哉!”耰而不辍。子路行以告。

  夫子怃然曰:“鸟兽不可与同群,吾非斯人之徒与而谁与?天下有道,丘不与易也。”

  子路从而后,遇丈人,以杖荷。子路问曰:“子见夫子乎?”丈人曰:“四体不勤,五谷不分,孰为夫子?”植其杖而芸。子路拱而立。

  止子路宿,杀鸡为黍而食之,见其二子焉。明日,子路行以告。

  子曰:“隐者也。”使子路反见之。至,则行矣。

  子路曰:“不仕无义。长幼之节,不可废也;君臣之义,如之何其废之?欲洁其身,而乱大伦。君子之仕也,行其义也。道之不行,已知之矣。”

  逸民:伯夷、叔齐、虞仲、夷逸、朱张、柳下惠、少连。子曰:“不降其志,不辱其身,伯夷、叔齐与!”谓“柳下惠、少连,降志辱身矣。言中伦,行中虑,其斯而已矣。”谓“虞仲、夷逸,隐居放言,身中清,废中权。我则异于是,无可无不可。”

  大师挚适齐,亚饭干适楚,三饭缭适蔡,四饭缺适秦,鼓方叔入于河,播鼗武入于汉,少师阳、击磬襄入于海。

  周公谓鲁公曰:“君子不施其亲,不使大臣怨乎不以。故旧无大故,则不弃也。无求备于一人。”

  周有八士:伯达、伯适、仲突、仲忽、叔夜、叔夏、季随、季騧。

  
 

  卫灵公第十五

  

  卫灵公问陈于孔子。孔子对曰:“俎豆之事,则尝闻之矣;军旅之事,未之学也。”明日遂行。

  在陈绝粮,从者病,莫能兴。子路愠见曰:“君子亦有穷乎?”子曰:“君子固穷,小人穷斯滥矣。”

  子曰:“赐也,女以予为多学而识之者与?”对曰:“然,非与?”曰:“非也,予一以贯之。”

  子曰:“由,知德者鲜矣。”

  子曰:“无为而治者,其舜也与?夫何为哉?恭己正南面而已矣。”

  子张问行。子曰:“言忠信,行笃敬,虽蛮貊之邦行矣。言不忠信,行不笃敬,虽州里行乎哉?立,则见其参于前也;在舆,则见其倚于衡也,夫然后行。”

  子张书诸绅。

  子曰:“直哉史鱼!邦有道如矢,邦无道如矢。君子哉蘧伯玉!邦有道则仕,邦无道则可卷而怀之。”

  子曰:“可与言而不与言,失人;不可与言而与之言,失言。知者不失人,亦不失言。”

  子曰:“志士仁人,无求生以害仁,有杀身以成仁。”

  子贡问为仁。子曰:“工欲善其事,必先利其器。居是邦也,事其大夫之贤者,友其士之仁者。”

  颜渊问为邦。子曰:“行夏之时,乘殷之辂,服周之冕,乐则《韶》、《舞》。放郑声,远佞人,郑声淫,佞人殆。”

  子曰:“人无远虑,必有近忧。”

  子曰:“已矣乎!吾未见好德如好色者也。”

  子曰:“臧文仲其窃位者与!知柳下惠之贤,而不与立也。”

  子曰:“躬自厚而薄责于人,则远怨矣。”

  子曰:“不曰‘如之何,如之何’者,吾末如之何也已矣!”子曰:“群居终日,言不及义,好行小慧,难矣哉!”子曰:“君子义以为质,礼以行之,孙以出之,信以成之。君子哉!”子曰:“君子病无能焉,不病人之不己知也。”

  子曰:“君子疾没世而名不称焉。”

  子曰:“君子求诸己,小人求诸人。”

  子曰:“君子矜而不争,群而不党。”

  子曰:“君子不以言举人,不以人废言。”

  子贡问曰:“有一言而可以终身行之者乎?”子曰:“其恕乎!己所不欲,勿施于人。”

  子曰:“吾之于人也,谁毁谁誉。如有所誉者,其有所试矣。斯民也,三代之所以直道而行也。”

  子曰:“吾犹及史之阙文也。有马者,借人乘之,今亡矣夫!”子曰:“巧言乱德。小不忍则乱大谋。”

  子曰:“众恶之,必察焉;众好之,必察焉。”

  子曰:“人能弘道,非道弘人。”

  子曰:“过而不改,是谓过矣。”

  子曰:“吾尝终日不食,终夜不寝,以思,无益,不如学也。”

  子曰:“君子谋道不谋食。耕也,馁在其中矣;学也,禄在其中矣。君子忧道不忧贫。”

  子曰:“知及之,仁不能守之,虽得之,必失之。知及之,仁能守之,不庄以莅之,则民不敬。知及之,仁能守之,庄以莅之,动之不以礼,未善也。”

  子曰:“君子不可小知,而可大受也;小人不可大受,而可小知也。”

  子曰:“民之于仁也,甚于水火。水火,吾见蹈而死者矣,未见蹈仁而死者也!”子曰:“当仁不让于师。”

  子曰:“君子贞而不谅。”

  子曰:“事君敬其事,而后其食。”

  子曰:“有教无类。”

  子曰:“道不同,不相为谋。”

  子曰:“辞达而已矣。”

  师冕见,及阶,子曰:“阶也。”及席,子曰:“席也。”皆坐,子告之曰:“某在斯,某在斯。”

  师冕出,子张问曰:“与师言之道与?”子曰:“然,固相师之道也。”

  

  

  为政第二

  子曰:“为政以德,譬如北辰,居其所而众星共之。”

  子曰:“《诗》三百,一言以蔽之,曰:‘思无邪。’”子曰:“道之以政,齐之以刑,民免而无耻。道之以德,齐之以礼,有耻且格。”

  子曰:“吾十有五而志于学,三十而立,四十而不惑,五十而知天命,六十而耳顺,七十而从心所欲,不逾矩。”

  孟懿子问孝。子曰:“无违。”

  樊迟御。子告之曰:“孟孙问孝于我,我对曰,无违。”樊迟曰:“何谓也?”子曰:“生,事之以礼;死,葬之以礼,祭之以礼。”

  孟武伯问孝。子曰:“父母唯其疾之忧。”

  子游问孝。子曰:“今之孝者,是谓能养。至于犬马,皆能有养。不敬,何以别乎?”子夏问孝。子曰:“色难。有事,弟子服其劳;有酒食,先生馔,曾是以为孝乎?”子曰:“吾与回言终日,不违,如愚。退而省其私,亦足以发,回也不愚。”

  子曰:“视其所以,观其所由,察其所安,人焉廋哉?人焉廋哉?”子曰:“温故而知新,可以为师矣。”

  子曰:“君子不器。”

  子贡问君子。子曰:“先行其言,而后从之。”

  子曰:“君子周而不比,小人比而不周。”

  子曰:“学而不思,则罔;思而不学,则殆。”

  子曰:“攻乎异端,斯害也已。”

  子曰:“由,诲女知之乎?知之为知之,不知为不知,是知也!”子张学干禄。子曰:“多闻阙疑,慎言其余,则寡尤;多见阙殆,慎行其余,则寡悔。言寡尤,行寡悔,禄在其中矣。”

  哀公问曰:“何为则民服?”孔子对曰:“举直错诸枉,则民服;举枉错诸直,则民不服。”

  季康子问:“使民敬忠以劝,如之何?”子曰:“临之以庄,则敬;孝慈,则忠;举善而教不能,则劝。”

  或谓孔子曰:“子奚不为政?”子曰:“《书》云:‘孝乎惟孝,友于兄弟,施于有政。’是亦为政,奚其为为政?”子曰:“人而无信,不知其可也。大车无輗,小车无軏,其何以行之哉?”子张问:“十世可知也?”子曰:“殷因于夏礼,所损益,可知也;周因于殷礼,所损益,可知也。其或继周者,虽百世,可知也。”

  子曰:“非其鬼而祭之,谄也。见义不为,无勇也。”

  
!关于本文档

!!本文档用途:

梳理知识体系,分享知识成果,构建''属于自己的个人图书馆''

!!本文档使用方法:

一、点击右上角这个图标,可以将本文档保存在你的电脑中。
保存后的文档可以随时点开访问(只要你的电脑中有浏览器,IE,Chrome,火狐,或者360浏览器都可以)。


[img[guide1.png]]

二、点击每个条目的这个图标,可以编辑,然后点√符号,可以保存

[img[guide2.png]]

三、保存在你电脑中的文档可以任意编辑,不会改变本网站中的内容

四、欢迎将你整理过的个人图书馆发给我们,向更多人分享你的知识成果

''分享方式:''

如果你的个人图书馆是在目前文档上的局部修改或者添加,我们会将改动内容添加到本文档,并备注贡献者

如果你的个人图书馆有较大改动,或者自成体系,我们将会为你单独建立页面和链接,供大家分享。

联系我们:

[img[yudade.jpg]]

致谢:本文档采用Tiddlywiki技术
  文公(元年~十八年)

  

  !文公元年

  【经】元年春王正月,公即位。二月癸亥,日有食之。天王使叔服来会葬。

  夏四月丁巳,葬我君僖公。天王使毛伯来锡公命。晋侯伐卫。叔孙得臣如京师。

  卫人伐晋。秋,公孙敖会晋侯于戚。冬十月丁未,楚世子商臣弑其君頵。公孙敖如齐。

  

  【传】元年春,王使内史叔服来会葬。公孙敖闻其能相人也,见其二子焉。

  叔服曰:“谷也食子,难也收子。谷也丰下,必有后于鲁国。”

  于是闰三月,非礼也。先王之正时也,履端于始,举正于中,归余于终。履端于始,序则不愆。举正于中,民则不惑。归余于终,事则不悖。

  夏四月丁巳,葬僖公。

  王使毛伯卫来锡公命。叔孙得臣如周拜。

  晋文公之季年,诸侯朝晋。卫成公不朝,使孔达侵郑,伐绵、訾,及匡。晋襄公既祥,使告于诸侯而伐卫,及南阳。先且居曰:“效尤,祸也。请君朝王,臣从师。”晋侯朝王于温,先且居、胥臣伐卫。五月辛酉朔,晋师围戚。六月戊戌,取之,获孙昭子。

  卫人使告于陈。陈共公曰:“更伐之,我辞之。”卫孔达帅师伐晋,君子以为古。古者越国而谋。

  秋,晋侯疆戚田,故公孙敖会之。

  初,楚子将以商臣为大子,访诸令尹子上。子上曰:“君之齿未也。而又多爱,黜乃乱也。楚国之举,恒在少者。且是人也,蜂目而豺声,忍人也,不可立也。”弗听。既又欲立王子职而黜大子商臣。商臣闻之而未察,告其师潘崇曰:“若之何而察之?”潘崇曰:“享江羋而勿敬也。”从之。江羋怒曰:“呼,役夫!宜君王之欲杀女而立职也。”告潘崇曰:“信矣。”潘崇曰:“能事诸乎?”曰:“不能。”“能行乎?”曰:“不能。”“能行大事乎?”曰:“能。”

  冬十月,以宫甲围成王。王请食熊蹯而死。弗听。丁未,王缢。谥之曰:“灵”,不瞑;曰:“成”,乃瞑。穆王立,以其为大子之室与潘崇,使为大师,且掌环列之尹。

  穆伯如齐,始聘焉,礼也。凡君即位,卿出并聘,践修旧好,要结外授,好事邻国,以卫社稷,忠信卑让之道也。忠,德之正也;信,德之固也;卑让,德之基也。

  殽之役,晋人既归秦帅,秦大夫及左右皆言于秦伯曰:“是败也,孟明之罪也,必杀之。”秦伯曰:“是孤之罪也。周芮良夫之诗曰;‘大风有隧,贪人败类,听言则对,诵言如醉,匪用其良,覆俾我悖。’是贪故也,孤之谓矣。孤实贪以祸夫子,夫子何罪?”复使为政。

  

  

  !文公二年

  【经】二年春王二月甲子,晋侯及秦师战于彭衙,秦师败绩。丁丑,作僖公主。三月乙巳,及晋处父盟。夏六月,公孙敖会宋公、陈侯、郑伯、晋士縠盟于垂陇。自十有二月不雨,至于秋七月。八月丁卯,大事于大庙,跻僖公。冬,晋人、宋人、陈人、郑人伐秦。公子遂如齐纳币。

  

  【传】二年春,秦孟明视帅师伐晋,以报殽之役。二月,晋侯御之。先且居将中军,赵衰佐之。王官无地御戎,狐鞫居为右。甲子,及秦师战于彭衙。秦师败绩。晋人谓秦“拜赐之师”。

  战于殽也,晋梁弘御戎,莱驹为右。战之明日,晋襄公缚秦囚,使莱驹以戈斩之。囚呼,莱驹失戈,狼瞫取戈以斩囚,禽之以从公乘,遂以为右。箕之役,先轸黜之而立续简伯。狼瞫怒。其友曰:“盍死之?”瞫曰:“吾未获死所。”

  其友曰:“吾与女为难。”瞫曰;“《周志》有之,‘勇则害上,不登于明堂。’死而不义,非勇也。共用之谓勇。吾以勇求右,无勇而黜,亦其所也。谓上不我知,黜而宜,乃知我矣。子姑待之。”及彭衙,既陈,以其属驰秦师,死焉。晋师从之,大败秦师。君子谓:“狼瞫于是乎君子。诗曰:‘君子如怒,乱庶遄沮。’又曰:‘王赫斯怒,爰整其旅。’怒不作乱而以从师,可谓君子矣。”

  秦伯犹用孟明。孟明增修国政,重施于民。赵成子言于诸大夫曰:“秦师又至,将必辟之,惧而增德,不可当也。诗曰:‘毋念尔祖,聿修厥德。’孟明念之矣,念德不怠,其可敌乎?”丁丑,作僖公主,书,不时也。

  晋人以公不朝来讨,公如晋。夏四月己巳,晋人使阳处父盟公以耻之。书曰:“及晋处父盟。”以厌之也。适晋不书,讳之也。公未至,六月,穆伯会诸侯及晋司空士縠盟于垂陇,晋讨卫故也。书士縠,堪其事也。

  陈侯为卫请成于晋,执孔达以说。

  秋八月丁卯,大事于大庙,跻僖公,逆祀也。于是夏父弗忌为宗伯,尊僖公,且明见曰:“吾见新鬼大,故鬼小。先大后小,顺也。跻圣贤,明也。明、顺,礼也。”

  君子以为失礼。礼无不顺。祀,国之大事也,而逆之,可谓礼乎?子虽齐圣,不先父食久矣。故禹不先鲧,汤不先契,文、武不先不窋。宋祖帝乙,郑祖厉王,犹上祖也。是以《鲁颂》曰:“春秋匪解,享祀不忒,皇皇后帝,皇祖后稷。”

  君子曰礼,谓其后稷亲而先帝也。《诗》曰:“问我诸姑,遂及伯姊。”君子曰礼,谓其姊亲而先姑也。仲尼曰:“臧文仲,其不仁者三,不知者三。下展禽,废六关,妾织蒲,三不仁也。作虚器,纵逆祀,祀爰居,三不知也。”

  冬,晋先且居、宋公子成、陈辕选、郑公子归生伐秦,取汪,及彭衙而还,以报彭衙之役。卿不书,为穆公故,尊秦也,谓之崇德。

  襄仲如齐纳币,礼也。凡君即位,好舅甥,修昏姻,娶元妃以奉粢盛,孝也。

  孝,礼之始也。

  

  

  !文公三年

  【经】三年春王正月,叔孙得臣会晋人、宋人、陈人、卫人、郑人伐沈。沈溃。夏五月,王子虎卒。秦人伐晋。秋,楚人围江。雨螽于宋。冬,公如晋。十有二月己巳,公及晋侯盟。晋阳处父帅师伐楚以救江。

  

  【传】三年春,庄叔会诸侯之师伐沈,以其服于楚也。沈溃。凡民逃其上曰溃,在上曰逃。

  卫侯如陈,拜晋成也。

  夏四月乙亥,王叔文公卒,来赴吊如同盟,礼也。

  秦伯伐晋,济河焚舟,取王官,及郊。晋人不出,遂自茅津济,封殽尸而还。

  遂霸西戎,用孟明也。君子是以知“秦穆公之为君也,举人之周也,与人之壹也;孟明之臣也,其不解也,能惧思也;子桑之忠也,其知人也,能举善也。《诗》曰:‘于以采蘩,于沼于沚,于以用之公侯之事’,秦穆有焉。‘夙夜匪解,以事一人’,孟明有焉。‘诒阙孙谋,以燕翼子’,子桑有焉。”

  秋,雨螽于宋,队而死也。

  楚师围江。晋先仆伐楚以救江。

  冬,晋以江故告于周。王叔桓公、晋阳处父伐楚以救江,门于方城,遇息公子朱而还。

  晋人惧其无礼于公也,请改盟。公如晋,及晋侯盟。晋侯飨公,赋《菁菁者莪》。庄叔以公降,拜,曰:“小国受命于大国,敢不慎仪。君贶之以大礼,何乐如之。抑小国之乐,大国之惠也。”晋侯降,辞。登,成拜。公赋《嘉乐》。

  

  

  !文公四年

  【经】四年春,公至自晋。夏,逆妇姜于齐。狄侵齐。秋,楚人灭江。晋侯伐秦。卫侯使宁俞来聘。冬十有一月壬寅,夫人风氏薨。

  

  【传】四年春,晋人归孔达于卫,以为卫之良也,故免之。

  夏,卫侯如晋拜。曹伯如晋,会正。

  逆妇姜于齐,卿不行,非礼也。君子是以知出姜之不允于鲁也。曰:“贵聘而贱逆之,君而卑之,立而废之,弃信而坏其主,在国必乱,在家必亡。不允宜哉?《诗》曰:‘畏天之威,于时保之。’敬主之谓也。”

  秋,晋侯伐秦,围刓、新城,以报王官之役。

  楚人灭江,秦伯为之降服、出次、不举、过数。大夫谏,公曰:“同盟灭,虽不能救,敢不矜乎!吾自惧也。”君子曰:“《诗》云:‘惟彼二国,其政不获,惟此四国,爰究爰度。’其秦穆之谓矣。”

  卫宁武子来聘,公与之宴,为赋《湛露》及《彤弓》。不辞,又不答赋。使行人私焉。对曰:“臣以为肄业及之也。昔诸侯朝正于王,王宴乐之,于是乎赋《湛露》,则天子当阳,诸侯用命也。诸侯敌王所忾而献其功,王于是乎赐之彤弓一,彤矢百,玈弓矢千,以觉报宴。今陪臣来继旧好,君辱贶之,其敢干大礼以自取戾。”

  冬,成风薨。

  

  

  !文公五年

  【经】五年春王正月,王使荣叔归含,且赗。三月辛亥,葬我小君成风。王使召伯来会葬。夏,公孙敖如晋。秦人入鄀。秋,楚人灭六。冬十月甲申,许男业卒。

  

  【传】五年春,王使荣叔来含且赗,召昭公来会葬,礼也。

  初,鄀叛楚即秦,又贰于楚。夏,秦人入鄀。

  六人叛楚即东夷。秋,楚成大心、仲归帅师灭六。

  冬,楚公子燮灭蓼,臧文仲闻六与蓼灭,曰:“皋陶庭坚不祀忽诸。德之不建,民之无援,哀哉!”晋阳处父聘于卫,反过宁,宁嬴从之,及温而还。其妻问之,嬴曰;“以刚。

  《商书》曰:‘沈渐刚克,高明柔克。’夫子壹之,其不没乎。天为刚德,犹不干时,况在人乎?且华而不实,怨之所聚也,犯而聚怨,不可以定身。余惧不获其利而离其难,是以去之。”

  晋赵成子,栾贞子、霍伯、臼季皆卒。

  

  

  !文公六年

  【经】六年春,葬许僖公。夏,季孙行父如陈。秋,季孙行父如晋。八月乙亥,晋侯欢卒。冬十月,公子遂如晋。葬晋襄公。晋杀其大夫阳处父。晋狐射姑出奔狄。闰月不告月,犹朝于庙。

  

  【传】六年春,晋蒐于夷,舍二军。使狐射姑将中军,赵盾佐之。阳处父至自温,改蒐于董,易中军。阳子,成季之属也,故党于赵氏,且谓赵盾能,曰:“使能,国之利也。”是以上之。宣子于是乎始为国政,制事典,正法罪。辟狱刑,董逋逃。由质要,治旧污,本秩礼,续常职,出滞淹。既成,以授大傅阳子与大师贾佗,使行诸晋国,以为常法。

  臧文仲以陈、卫之睦也,欲求好于陈。夏,季文子聘于陈,且娶焉。

  秦伯任好卒。以子车氏之三子奄息、仲行、鍼虎为殉。皆秦之良也。国人哀之,为之赋《黄鸟》。君子曰:“秦穆之不为盟主也,宜哉。死而弃民。先王违世,犹诒之法,而况夺之善人乎!《诗》曰:‘人之云亡,邦国殄瘁。’无善人之谓。若之何夺之?”古之王者知命之不长,是以并建圣哲,树之风声,分之采物,著之话言,为之律度,陈之艺极,引之表仪,予之法制,告之训典,教之防利,委之常秩,道之礼则,使毋失其土宜,众隶赖之,而后即命。圣王同之。

  今纵无法以遗后嗣,而又收其良以死,难以在上矣。君子是以知秦之不复东征也。

  秋,季文子将聘于晋,使求遭丧之礼以行。其人曰:“将焉用之?”文子曰:“备豫不虞,古之善教也。求而无之,实难,过求何害?”八月乙亥,晋襄公卒。灵公少,晋人以难故,欲立长君。赵孟曰:“立公子雍。好善而长,先君爱之,且近于秦。秦,旧好也。置善则固,事长则顺,立爱则孝,结旧则安。为难故,故欲立长君,有此四德者,难必抒矣。”贾季曰:“不如立公子乐。辰嬴嬖于二君,立其子,民必安之。”赵孟曰:“辰嬴贱,班在九人,其子何震之有?且为二嬖,淫也。为先君子,不能求大而出在小国,辟也。母淫子辟,无威。陈小而远,无援。将何安焉?杜祁以君故,让偪姞而上之,以狄故,让季隗而己次之,故班在四。先君是以爱其子而仕诸秦,为亚卿焉。

  秦大而近,足以为援,母义子爱,足以威民,立之不亦可乎?”使先蔑、士会如秦,逆公子雍。贾季亦使召公子乐于陈。赵孟使杀诸郫。贾季怨阳子之易其班也,而知其无援于晋也。九月,贾季使续鞫居杀阳处父。书曰:“晋杀其大夫。”侵官也。

  冬十月,襄仲如晋。葬襄公。

  十一月丙寅,晋杀续简伯。贾季奔狄。宣子使臾骈送其帑。夷之蒐,贾季戮臾骈,臾骈之人欲尽杀贾氏以报焉。臾骈曰:“不可。吾闻《前志》有之曰:‘敌惠敌怨,不在后嗣’,忠之道也。夫子礼于贾季,我以其宠报私怨,无乃不可乎?介人之宠,非勇也。损怨益仇,非知也。以私害公,非忠也。释此三者,何以事夫子?”尽具其帑,与其器用财贿,亲帅扞之,送致诸竟。

  闰月不告朔,非礼也。闰以正时,时以作事,事以厚生,生民之道,于是乎在矣。不告闰朔,弃时政也,何以为民?

  

  !文公七年

  【经】七年春,公伐邾。三月甲戌,取须句。遂城郚。夏四月,宋公王臣卒。宋人杀其大夫。戊子,晋人及秦人战于令狐。晋先蔑奔秦。狄侵我西鄙。秋八月,公会诸侯、晋大夫盟于扈。冬,徐伐莒。公孙敖如莒莅盟。

  

  【传】七年春,公伐邾。间晋难也。

  三月甲戌,取须句,置文公子焉,非礼也。

  夏四月,宋成公卒。于是公子成为右师,公孙友左师,乐豫为司马,鳞矔为司徒,公子荡为司城,华御事为司寇。

  昭公将去群公子,乐豫曰:“不可。公族,公室之枝叶也,若去之则本根无所庇荫矣。葛藟犹能庇其本根,故君子以为比,况国君乎?此谚所谓庇焉而纵寻斧焉者也。必不可,君其图之。亲之以德,皆股肱也,谁敢携贰?若之何去之?”不听。穆、襄之族率国人以攻公,杀公孙固、公孙郑于公宫。六卿和公室,乐豫舍司马以让公子卬,昭公即位而葬。书曰:“宋人杀其大夫。”不称名,众也,且言非其罪也。

  秦康公送公子雍于晋,曰:“文公之入也无卫,故有吕、郤之难。”乃多与之徒卫。穆赢日抱大子以啼于朝,曰:“先君何罪?其嗣亦何罪?舍適嗣不立而外求君,将焉置此?”出朝,则抱以适赵氏,顿首于宣子曰:“先君奉此子也而属诸子,曰:‘此子也才,吾受子之赐;不才,吾唯子之怨。’今君虽终,言犹在耳,而弃之,若何?”宣子与诸大夫皆患穆嬴,且畏逼,乃背先蔑而立灵公,以御秦师。箕郑居守。赵盾将中军,先克佐之。荀林父佐上军。先蔑将下军,先都佐之。步招御戎,戎津为右。及堇阴,宣子曰:“我若受秦,秦则宾也;不受,寇也。既不受矣,而复缓师,秦将生心。先人有夺人之心,军之善谋也。逐寇如追逃,军之善政也。”训卒利兵,秣马蓐食,潜师夜起。戊子,败秦师于令狐,至于刳首。己丑,先蔑奔秦。士会从之。

  先蔑之使也,荀林父止之,曰:“夫人、大子犹在,而外求君,此必不行。

  子以疾辞,若何?不然,将及。摄卿以往可也,何必子?同官为寮,吾尝同寮,敢不尽心乎!”弗听。为赋《板》之三章。又弗听。及亡,荀伯尽送其帑及其器用财贿于秦,曰:“为同寮故也。”

  士会在秦三年,不见士伯。其人曰:“能亡人于国,不能见于此,焉用之?”士季曰:“吾与之同罪,非义之也,将何见焉?”及归,遂不见。

  狄侵我西鄙,公使告于晋。赵宣子使因贾季问酆舒,且让之。酆舒问于贾季曰:“赵衰、赵盾孰贤?”对曰:“赵衰,冬日之日也。赵盾,夏日之日也。”

  秋八月,齐侯、宋公、卫侯、郑伯、许男、曹伯会晋赵盾盟于扈,晋侯立故也。公后至,故不书所会。凡会诸侯,不书所会,后也。后至,不书其国,辟不敏也。

  穆伯娶于莒,曰戴己,生文伯,其娣声己生惠叔。戴己卒,又聘于莒,莒人以声己辞,则为襄仲聘焉。

  冬,徐伐莒。莒人来请盟。穆伯如莒莅盟,且为仲逆。及鄢陵。登城见之,美,自为娶之。仲请攻之,公将许之。叔仲惠伯谏曰:“臣闻之,兵作于内为乱,于外为寇,寇犹及人,乱自及也。今臣作乱而君不禁,以启寇仇,若之何?”公止之,惠伯成之。使仲舍之,公孙敖反之,复为兄弟如初。从之。

  晋郤缺言于赵宣子曰:“日卫不睦,故取其地,今已睦矣,可以归之。叛而不讨,何以示威?服而不柔,何以示怀?非威非怀,何以示德?无德,何以主盟?子为正卿,以主诸侯,而不务德,将若之何?《夏书》曰:‘戒之用休,董之用威,劝之以《九歌》,勿使坏。’九功之德皆可歌也,谓之九歌。六府、三事,谓之九功。水、火、金、木、土、谷,谓之六府。正德、利用、厚生,谓之三事。

  义而行之,谓之德、礼。无礼不乐,所由叛也。若吾子之德莫可歌也,其谁来之?盍使睦者歌吾子乎?”宣子说之。

  

  

  !文公八年

  【经】八年春王正月。夏四月。秋八月戊申,天王崩。冬十月壬午,公子遂会晋赵盾盟于衡雍。乙酉,公子遂会洛戎盟于暴。公孙敖如京师,不至而复。丙戌,奔莒。螽。宋人杀其大夫司马。宋司城来奔。

  

  【传】八年春,晋侯使解扬归匡、戚之田于卫,且复致公婿池之封,自申至于虎牢之竟。

  夏,秦人伐晋,取武城,以报令狐之役。

  秋,襄王崩。

  晋人以扈之盟来讨。冬,襄仲会晋赵孟,盟于衡雍,报扈之盟也,遂会伊洛之戎。书曰“公子遂”,珍之也。

  穆伯如周吊丧,不至,以币奔莒,从己氏焉。

  宋襄夫人,襄王之姊也,昭公不礼焉。夫人因戴氏之族,以杀襄公之孙孔叔、公孙钟离及大司马公子卬,皆昭公之党也。司马握节以死,故书以官。司城荡意诸来奔,效节于府人而出。公以其官逆之,皆复之,亦书以官,皆贵之也。

  夷之蒐,晋侯将登箕郑父、先都,而使士縠、梁益耳将中军。先克曰:“狐、赵之勋,不可废也。”从之。先克夺蒯得田于堇阴。故箕郑父、先都、士縠、梁益耳、蒯得作乱。

  

  

  !文公九年

  【经】九年春,毛伯来求金。夫人姜氏如齐。二月,叔孙得臣如京师。辛丑,葬襄王。晋人杀其大夫先都。三月,夫人姜氏至自齐。晋人杀其大夫士縠及箕郑父。楚人伐郑。公子遂会晋人、宋人、卫人、许人救郑。夏,狄侵齐。秋八月,曹伯襄卒。九月癸西,地震。冬,楚子使椒来聘。秦人来归僖公、成风之襚。

  葬曹共公。

  

  【传】九年春,王正月己酉,使贼杀先克。乙丑,晋人杀先都,梁益耳。

  毛伯卫来求金,非礼也。不书王命,未葬也。

  二月,庄叔如周。葬襄王。

  三月甲戌,晋人杀箕郑父、士縠、蒯得。

  范山言于楚子曰:“晋君少,不在诸侯,北方可图也。”楚子师于狼渊以伐郑。囚公子坚、公子龙及乐耳。郑及楚平。公子遂会晋赵盾、宋华耦、卫孔达、许大夫救郑,不及楚师。卿不书,缓也,以惩不恪。

  夏,楚侵陈,克壶丘,以其服于晋也。

  秋,楚公子朱自东夷伐陈,陈人败之,获公子伐。陈惧,乃及楚平。

  冬,楚子越椒来聘,执币傲。叔仲惠伯曰:“是必灭若敖氏之宗。傲其先君,神弗福也。”

  秦人来归僖公、成风之襚,礼也。诸侯相吊贺也,虽不当事,苟有礼焉,书也,以无忘旧好。

  

  

  !文公十年

  【经】十年春王三月辛卯,臧孙辰卒。夏,秦伐晋。楚杀其大夫宜申。自正月不雨,至于秋七月。及苏子盟于女栗。冬,狄侵宋。楚子、蔡侯次于厥貉。

  

  【传】十年春,晋人伐秦,取少梁。

  夏,秦伯伐晋,取北征。

  初,楚范巫矞似谓成王与子玉、子西曰:“三君皆将强死。”城濮之役,王思之,故使止子玉曰:“毋死。”不及。止子西,子西缢而县绝,王使适至,遂止之,使为商公。沿汉溯江,将入郢。王在渚宫,下,见之。惧而辞曰:“臣免于死,又有谗言,谓臣将逃,臣归死于司败也。”王使为工尹,又与子家谋弑穆王。穆王闻之。五月杀斗宜申及仲归。

  秋七月,及苏子盟于女栗,顷王立故也。

  陈侯、郑伯会楚子于息。冬,遂及蔡侯次于厥貉。将以伐宋。宋华御事曰:“楚欲弱我也。先为之弱乎,何必使诱我?我实不能,民何罪?”乃逆楚子,劳,且听命。遂道以田孟诸。宋公为右盂,郑伯为左盂。期思公复遂为右司马,子朱及文之无畏为左司马。命夙驾载燧,宋公违命,无畏抶其仆以徇。

  或谓子舟曰:“国君不可戮也。”子舟曰:“当官而行,何强之有?《诗》曰:‘刚亦不吐,柔亦不茹。’‘毋从诡随,以谨罔极。’是亦非辟强也,敢爱死以乱官乎!”厥貉之会,麇子逃归。

  

  

  !文公十一年

  【经】十有一年春,楚子伐麋。夏,叔仲彭生会晋郤缺于承筐。秋,曹伯来朝。公子遂如宋。狄侵齐。冬十月甲午,叔孙得臣败狄于咸。

  

  【传】十一年春,楚子伐麇,成大心败麇师于防渚。潘崇复伐麇,至于锡穴。

  夏,叔仲惠伯会晋郤缺于承筐,谋诸侯之从于楚者。

  秋,曹文公来朝,即位而来见也。

  襄仲聘于宋,且言司城荡意诸而复之,因贺楚师之不害也。

  鄋瞒侵齐。遂伐我。公卜使叔孙得臣追之,吉。侯叔夏御庄叔,绵房甥为右,富父终甥驷乘。冬十月甲午,败狄于咸,获长狄侨如。富父终甥摏其喉以戈,杀之,埋其首于子驹之门,以命宣伯。

  初,宋武公之世,鄋瞒伐宋,司徒皇父帅师御之,耏班御皇父充石,公子谷甥为右,司寇牛父驷乘,以败狄于长丘,获长狄缘斯,皇父之二子死焉。宋公于是以门赏耏班,使食其征,谓之耏门。晋之灭潞也,获侨如之弟焚如。

  齐襄公之二年,鄋瞒伐齐,齐王子成父获其弟荣如,埋其首于周首之北门。卫人获其季简如,鄋瞒由是遂亡。

  郕大子朱儒自安于夫钟,国人弗徇。

  

  

  !文公十二年

  【经】十有二年春王正月,郕伯来奔。杞伯来朝。二月庚子,子叔姬卒。

  夏,楚人围巢。秋,滕子来朝。秦伯使术来聘。冬十有二戊午,晋人、秦人战于河曲。季孙行父帅师城诸及郓。

  

  【传】十二年春,郕伯卒,郕人立君。大子以夫钟与郕邽来奔。公以诸侯逆之,非礼也。故书曰:“郕伯来奔。”不书地,尊诸侯也。

  杞桓公来朝,始朝公也。且请绝叔姬而无绝昏,公许之。

  二月,叔姬卒,不言杞,绝也。书叔姬,言非女也。

  楚令尹大孙伯卒,成嘉为令尹。群舒叛楚。夏,子孔执舒子平及宗子,遂围巢。

  秋,滕昭公来朝,亦始朝公也。

  秦伯使西乞术来聘,且言将伐晋。襄仲辞玉曰:“君不忘先君之好,照临鲁国,镇抚其社稷,重之以大器,寡君敢辞玉。”对曰:“不腆敝器,不足辞也。”

  主人三辞。宾客曰:“寡君愿徼福于周公、鲁公以事君,不腆先君之敝器,使下臣致诸执事以为瑞节,要结好命,所以藉寡君之命,结二国之好,是以敢致之。”

  襄仲曰:“不有君子,其能国乎?国无陋矣。”厚贿之。

  秦为令狐之役故,冬,秦伯伐晋,取羁马。晋人御之。赵盾将中军,荀林父佐之。郤缺将上军,臾骈佐之。栾盾将下军,胥甲佐之。范无恤御戎,以从秦师于河曲。臾骈曰:“秦不能久,请深垒固军以待之。”从之。

  秦人欲战,秦伯谓士会曰:“若何而战?”对曰:“赵氏新出其属曰臾骈,必实为此谋,将以老我师也。赵有侧室曰穿,晋君之婿也,有宠而弱,不在军事,好勇而狂,且恶臾骈之佐上军也,若使轻者肆焉,其可。”秦伯以璧祈战于河。

  十二月戊午,秦军掩晋上军,赵穿追之,不及。反,怒曰:“裹粮坐甲,固敌是求,敌至不击,将何俟焉?”军吏曰:“将有待也。”穿曰:“我不知谋,将独出。”乃以其属出。宣子曰:“秦获穿也,获一卿矣。秦以胜归,我何以报?”乃皆出战,交绥。秦行人夜戒晋师曰:“两君之士皆未慭也,明日请相见也。”

  臾骈曰:“使者目动而言肆,惧我也,将遁矣。薄诸河,必败之。”胥甲、赵穿当军门呼曰:“死伤未收而弃之,不惠也;不待期而薄人于险,无勇也。”乃止。

  秦师夜遁。复侵晋,入瑕。

  城诸及郓,书,时也。

  

  

  !文公十三年

  【经】十有三春王正月。夏五月壬午,陈侯朔卒。邾子蘧蒢卒。自正月不雨,至于秋七月。大室屋坏。冬,公如晋。卫侯会公于沓。狄侵卫。十有二月己丑,公及晋侯盟。公还自晋,郑伯会公于棐。

  

  【传】十三年春,晋侯使詹嘉处瑕,以守桃林之塞。

  晋人患秦之用士会也,夏,六卿相见于诸浮,赵宣子曰;“随会在秦,贾季在狄,难日至矣,若之何?”中行桓子曰:“请复贾季,能外事,且由旧勋。”

  郤成子曰:“贾季乱,且罪大,不如随会,能贱而有耻,柔而不犯,其知足使也,且无罪。”

  乃使魏寿余伪以魏叛者以诱士会,执其帑于晋,使夜逸。请自归于秦,秦伯许之。履士会之足于朝。秦伯师于河西,魏人在东。寿余曰:“请东人之能与夫二三有司言者,吾与之先。”使士会。士会辞曰:“晋人,虎狼也,若背其言,臣死,妻子为戮,无益于君,不可悔也。”秦伯曰:“若背其言,所不归尔帑者,有如河。”乃行。绕朝赠之以策,曰:“子无谓秦无人,吾谋适不用也。”既济,魏人噪而还。秦人归其帑。其处者为刘氏。

  邾文公卜迁于绎。史曰:“利于民而不利于君。”邾子曰:“苟利于民,孤之利也。天生民而树之君,以利之也。民既利矣,孤必与焉。”左右曰:“命可长也,君何弗为?”邾子曰:“命在养民。死之短长,时也。民苟利矣,迁也,吉莫如之!”遂迁于绎。

  五月,邾文公卒。君子曰:“知命。”

  秋七月,大室之屋坏,书,不共也。

  冬,公如晋,朝,且寻盟。卫侯会公于沓,请平于晋。公还,郑伯会公于棐,亦请平于晋。公皆成之。郑伯与公宴于棐。子家赋《鸿雁》。季文子曰:“寡君未免于此。”文子赋《四月》。子家赋《载驰》之四章。文子赋《采薇》之四章。

  郑伯拜。公答拜。

  

  

  !文公十四年

  【经】十有四年春王正月,公至自晋。邾人伐我南鄙,叔彭生帅师伐邾。夏五月乙亥,齐侯潘卒。六月,公会宋公、陈侯、卫侯、郑伯、许男、曹伯、晋赵盾。癸酉,同盟于新城。秋七月,有星孛入于北斗。公至自会。晋人纳捷菑于邾。

  弗克纳。九月甲申,公孙敖卒于齐。齐公子商人弑其君舍。宋子哀来奔。冬,单伯如齐。齐人执单伯。齐人执子叔姬。

  

  【传】十四年春,顷王崩。周公阅与王孙苏争政,故不赴。凡崩、薨,不赴,则不书。祸、福,不告亦不书,惩不敬也。

  邾文公之卒也,公使吊焉,不敬。邾人来讨,伐我南鄙,故惠伯伐邾。

  子叔姬妃齐昭公,生舍。叔姬无宠,舍无威。公子商人骤施于国,而多聚士,尽其家,贷于公,有司以继之。夏五月,昭公卒,舍即位。

  邾文公元妃齐姜生定公,二妃晋姬生捷菑。文公卒,邾人立定公,捷菑奔晋。

  六月,同盟于新城,从于楚者服,且谋邾也。

  秋七月乙卯夜,齐商人弑舍而让元。元曰:“尔求之久矣。我能事尔,尔不可使多蓄憾。将免我乎?尔为之!”有星孛入于北斗,周内史叔服曰:“不出七年,宋、齐、晋之君皆将死乱。”

  晋赵盾以诸侯之师八百乘纳捷菑于邾。邾人辞曰:“齐出玃且长。”宣子曰:“辞顺而弗从,不祥。”乃还。

  周公将与王孙苏讼于晋,王叛王孙苏,而使尹氏与聃启讼周公于晋。赵宣子平王室而复之。

  楚庄王立,子孔、潘崇将袭群舒,使公子燮与子仪守而伐舒蓼。二子作乱,城郢而使贼杀子孔,不克而还。八月,二子以楚子出,将如商密。庐戢梨及叔麋诱之,遂杀斗克及公子燮。

  初,斗克囚于秦,秦有殽之败,而使归求成,成而不得志。公子燮求令尹而不得。故二子作乱。

  穆伯之从己氏也,鲁人立文伯。穆伯生二子于莒而求复,文伯以为请。襄仲使无朝。听命,复而不出,二年而尽室以复适莒。文伯疾而请曰:“谷之子弱,请立难也。”许之。文伯卒,立惠叔。穆伯请重赂以求复,惠叔以为请,许之。

  将来,九月卒于齐,告丧,请葬,弗许。

  宋高哀为萧封人,以为卿,不义宋公而出,遂来奔。书曰:“宋子哀来奔。”

  贵之也。

  齐人定懿公,使来告难,故书以九月。齐公子元不顺懿公之为政也,终不曰“公”,曰“夫己氏”。

  襄仲使告于王,请以王宠求昭姬于齐。曰:“杀其子,焉用其母?请受而罪之。”

  冬,单伯如齐,请子叔姬,齐人执之。又执子叔姬。

  

  

  !文公十五年

  【经】十有五年春,季孙行父如晋。三月,宋司马华孙来盟。夏,曹伯来朝。

  齐人归公孙敖之丧。六月辛丑朔,日有食之。鼓,用牲于社。单伯至自齐。晋郤缺帅师伐蔡。戊申,入蔡。齐人侵我西鄙。季孙行父如晋。冬十有一月,诸侯盟于扈。十有二月,齐人来归子叔姬。齐侯侵我西鄙,遂伐曹,入其郛。

  

  【传】十五年春,季文子如晋,为单伯与子叔姬故也。

  三月,宋华耦来盟,其官皆从之。书曰“宋司马华孙”,贵之也。

  公与之宴,辞曰:“君之先臣督,得罪于宋殇公,名在诸侯之策。臣承其祀,其敢辱君,请承命于亚旅。”鲁人以为敏。

  夏,曹伯来朝,礼也。诸侯五年再相朝,以修王命,古之制也。

  齐人或为孟氏谋,曰:“鲁,尔亲也。饰棺置诸堂阜,鲁必取之。”从之。

  卞人以告。惠叔犹毁以为请,立于朝以待命。许之,取而殡之。齐人送之。书曰:“齐人归公孙敖之丧。”为孟氏,且国故也。葬视共仲。

  声己不视,帷堂而哭。襄仲欲勿哭,惠伯曰:“丧,亲之终也。虽不能始,善终可也。史佚有言曰:‘兄弟致美。’救乏、贺善、吊灾、祭敬、丧哀,情虽不同,毋绝其爱,亲之道也。子无失道,何怨于人?”襄仲说,帅兄弟以哭之。

  他年,其二子来,孟献子爱之,闻于国。或谮之曰:“将杀子。”献子以告季文子。二子曰:“夫子以爱我闻,我以将杀子闻,不亦远于礼乎?远礼不如死。”

  一人门于句鼆,一人门于戾丘,皆死。

  六月辛丑朔,日有食之,鼓,用牲于社,非礼也。日有食之,天子不举,伐鼓于社,诸侯用币于社,伐鼓于朝,以昭事神、训民、事君,示有等威,古之道也。

  齐人许单伯请而赦之,使来致命。书曰:“单伯至自齐。”贵之也。

  新城之盟,蔡人不与。晋郤缺以上军、下军伐蔡,曰:“君弱,不可以怠。”

  戊申,入蔡,以城下之盟而还。凡胜国,曰灭之;获大城焉,曰入之。

  秋,齐人侵我西鄙,故季文子告于晋。

  冬十一月,晋侯、宋公、卫侯、蔡侯、郑伯、许男、曹伯盟于扈,寻新城之盟,且谋伐齐也。齐人赂晋侯,故不克而还。于是有齐难,是以公不会。书曰:“诸侯盟于扈。”无能为故也。凡诸侯会,公不与,不书,讳君恶也。与而不书,后也。

  齐人来归子叔姬,王故也。

  齐侯侵我西鄙,谓诸侯不能也。遂伐曹,入其郛,讨其来朝也。季文子曰:“齐侯其不免乎。己则无礼,而讨于有礼者,曰:‘女何故行礼!’礼以顺天,天之道也,己则反天,而又以讨人,难以免矣。诗曰:‘胡不相畏,不畏于天?’君子之不虐幼贱,畏于天也。在周颂曰:‘畏天之威,于时保之。’不畏于天,将何能保?以乱取国,奉礼以守,犹惧不终,多行无礼,弗能在矣!”

  

  !文公十六年

  【经】十有六年春,季孙行父会齐侯于阳谷,齐侯弗及盟。夏五月,公四不视朔。六月戊辰,公子遂及齐侯盟于郪丘。秋八月辛未,夫人姜氏薨。毁泉台。

  楚人、秦人、巴人灭庸。冬十有一月,宋人弑其君杵臼。

  

  【传】十六年春,王正月,及齐平。公有疾,使季文子会齐侯于阳谷。请盟,齐侯不肯,曰:“请俟君间。”

  夏五月,公四不视朔,疾也。公使襄仲纳赂于齐侯,故盟于郪丘。

  有蛇自泉宫出,入于国,如先君之数。秋八月辛未,声姜薨,毁泉台。

  楚大饥,戎伐其西南,至于阜山,师于大林。又伐其东南,至于阳丘,以侵訾枝。庸人帅群蛮以叛楚。麇人率百濮聚于选,将伐楚。于是申、息之北门不启。

  楚人谋徙于阪高。蒍贾曰:“不可。我能往,寇亦能住。不如伐庸。夫麇与百濮,谓我饥不能师,故伐我也。若我出师,必惧而归。百濮离居,将各走其邑,谁暇谋人?”乃出师。旬有五日,百濮乃罢。自庐以往,振廪同食。次于句澨。

  使庐戢黎侵庸,及庸方城。庸人逐之,囚子扬窗。三宿而逸,曰:“庸师众,群蛮聚焉,不如复大师,且起王卒,合而后进。”师叔曰:“不可。姑又与之遇以骄之。彼骄我怒,而后可克,先君蚡冒所以服陉隰也。”又与之遇,七遇皆北,唯裨、鯈、鱼人实逐之。

  庸人曰:“楚不足与战矣。”遂不设备。楚子乘驲,会师于临品,分为二队,子越自石溪,子贝自仞,以伐庸。秦人、巴人从楚师,群蛮从楚子盟。遂灭庸。

  宋公子鲍礼于国人,宋饥,竭其粟而贷之。年自七十以上,无不馈饴也,时加羞珍异。无日不数于六卿之门,国之才人,无不事也,亲自桓以下,无不恤也。

  公子鲍美而艳,襄夫人欲通之,而不可,夫人助之施。昭公无道,国人奉公子鲍以因夫人。

  于是华元为右师,公孙友为左师,华耦为司马,鳞鱼雚为司徒,荡意诸为司城,公子朝为司寇。初,司城荡卒,公孙寿辞司城,请使意诸为之。既而告人曰:“君无道,吾官近,惧及焉。弃官则族无所庇。子,身之贰也,姑纾死焉。虽亡子,犹不亡族。”既,夫人将使公田孟诸而杀之。公知之,尽以宝行。荡意诸曰:“盍适诸侯?”公曰:“不能其大夫至于君祖母以及国人,诸侯谁纳我?且既为人君,而又为人臣,不如死。”尽以其宝赐左右以使行。夫人使谓司城去公,对曰:“臣之而逃其难,若后君何?”冬十一月甲寅,宋昭公将田孟诸,未至,夫人王姬使帅甸攻而杀之。荡意诸死之。书曰:“宋人弑其君杵臼。”君无道也。

  文公即位,使母弟须为司城。华耦卒,而使荡虺为司马。

  

  

  !文公十七年

  【经】十有七年春,晋人、卫人、陈人、郑人伐宋。夏四月癸亥,葬我小君声姜。齐侯伐我西鄙。六月癸未,公及齐侯盟于谷。诸侯会于扈。秋,公至自谷。

  冬,公子遂如齐。

  

  【传】十七年春,晋荀林父、卫孔达、陈公孙宁、郑石楚伐宋。讨曰:“何故弑君!”犹立文公而还,卿不书,失其所也。

  夏四月癸亥,葬声姜。有齐难,是以缓。

  齐侯伐我北鄙,襄仲请盟。六月,盟于谷。

  晋侯蒐于黄父,遂复合诸侯于扈,平宋也。公不与会,齐难故也。书曰“诸侯”,无功也。

  于是,晋侯不见郑伯,以为贰于楚也。

  郑子家使执讯而与之书,以告赵宣子,曰:“寡君即位三年,召蔡侯而与之事君。九月,蔡侯入于敝邑以行。敝邑以侯宣多之难,寡君是以不得与蔡侯偕。

  十一月,克灭侯宣多而随蔡侯以朝于执事。十二年六月,归生佐寡君之嫡夷,以请陈侯于楚而朝诸君。十四年七月,寡君又朝,以蒇陈事。十五年五月,陈侯自敝邑往朝于君。往年正月,烛之武往朝夷也。八月,寡君又往朝。以陈、蔡之密迩于楚而不敢贰焉,则敝邑之故也。虽敝邑之事君,何以不免?在位之中,一朝于襄,而再见于君。夷与孤之二三臣相及于绛,虽我小国,则蔑以过之矣。今大国曰:‘尔未逞吾志。’敝邑有亡,无以加焉。古人有言曰:‘畏首畏尾,身其余几。’又曰:‘鹿死不择音。’小国之事大国也,德,则其人也;不德,则其鹿也,铤而走险,急何能择?命之罔极,亦知亡矣。将悉敝赋以待于鯈,唯执事命之。

  文公二年六月壬申,朝于齐。四年二月壬戌,为齐侵蔡,亦获成于楚。居大国之间而从于强令,岂其罪也。大国若弗图,无所逃命。”

  晋巩朔行成于郑,赵穿、公婿池为质焉。

  秋,周甘蜀败戎于垂,乘其饮酒也。

  冬十月,郑大子夷、石楚为质于晋。

  襄仲如齐,拜谷之盟。复曰:“臣闻齐人将食鲁之麦。以臣观之,将不能。

  齐君之语偷。臧文仲有言曰:‘民主偷必死’。”

  

  

  !文公十八年

  【经】十有八年春王二月丁丑,公薨于台下。秦伯荦卒。夏五月戊戌,齐人弑其君商人。六月癸酉,葬我君文公。秋,公子遂、叔孙得臣如齐。冬十月,子卒。夫人姜氏归于齐。季孙行父如齐。莒弑其君庶其。

  

  【传】十八年春,齐侯戒师期,而有疾,医曰:“不及秋,将死。”公闻之,卜曰:“尚无及期。”惠伯令龟,卜楚丘占之曰:“齐侯不及期,非疾也。君亦不闻。令龟有咎。”二月丁丑,公薨。

  齐懿公之为公子也,与邴蜀之父争田,弗胜。及即位,乃掘而刖之,而使蜀仆。纳阎职之妻,而使职骖乘。

  夏五月,公游于申池。二人浴于池,蜀以扑抶职。职怒。曰:“人夺女妻而不怒,一抶女庸何伤!”职曰:“与刖其父而弗能病者何如?”乃谋弑懿公,纳诸竹中。归,舍爵而行。齐人立公子元。

  六月,葬文公。

  秋,襄仲、庄叔如齐,惠公立故,且拜葬也。

  文公二妃敬赢生宣公。敬赢嬖而私事襄仲。宣公长而属诸襄仲,襄仲欲立之,叔仲不可。仲见于齐侯而请之。齐侯新立而欲亲鲁,许之。

  冬十月,仲杀恶及视而立宣公。书曰“子卒”,讳之也。仲以君命召惠伯。

  其宰公冉务人止之,曰:“入必死。”叔仲曰:“死君命可也。”公冉务人曰:“若君命可死,非君命何听?”弗听,乃入,杀而埋之马矢之中。公冉务人奉其帑以奔蔡,既而复叔仲氏。

  夫人姜氏归于齐,大归也。将行,哭而过市曰:“天乎,仲为不道,杀适立庶。”市人皆哭,鲁人谓之哀姜。

  莒纪公生大子仆,又生季佗,爱季佗而黜仆,且多行无礼于国。仆因国人以弑纪公,以其宝玉来奔,纳诸宣公。公命与之邑,曰:“今日必授。”季文子使司寇出诸竟,曰:“今日必达。”公问其故。季文子使大史克对曰:“先大夫臧文仲教行父事君之礼,行父奉以周旋,弗敢失队。曰:‘见有礼于其君者,事之如孝子之养父母也。见无礼于其君者,诛之如鹰鹯之逐鸟雀也。’先君周公制《周礼》曰:‘则以观德,德以处事,事以度功,功以食民。’作《誓命》曰:‘毁则为贼,掩贼为藏,窃贿为盗,盗器为奸。主藏之名,赖奸之用,为大凶德,有常无赦,在《九刑》不忘。’行父还观莒仆,莫可则也。孝敬忠信为吉德,盗贼藏奸为凶德。夫莒仆,则其孝敬,则弑君父矣;则其忠信,则窃宝玉矣。其人,则盗贼也;其器,则奸兆也,保而利之,则主藏也。以训则昏,民无则焉。不度于善,而皆在于凶德,是以去之。

  “昔高阳氏有才子八人,苍舒、隤敳、梼戭、大临、尨降、庭坚、仲容、叔达,齐圣广渊,明允笃诚,天下之民谓之八恺。高辛氏有才子八人,伯奋、仲堪、叔献、季仲、伯虎、仲熊、叔豹、季狸,忠肃共懿,宣慈惠和,天下之民谓之八元。此十六族也,世济其美,不陨其名,以至于尧,尧不能举。舜臣尧,举八恺,使主后土,以揆百事,莫不时序,地平天成。举八元,使布五教于四方,父义、母慈、兄友、弟共、子孝,内平外成。昔帝鸿氏有不才子,掩义隐贼,好行凶德,丑类恶物,顽嚚不友,是与比周,天下之民谓之浑敦。少嗥氏有不才子,毁信废忠,崇饰恶言,靖谮庸回,服谗蒐慝,以诬盛德,天下之民谓之穷奇。颛顼有不才子,不可教训,不知话言,告之则顽,舍之则嚚,傲很明德,以乱天常,天下之民谓之梼杌。此三族也,世济其凶,增其恶名,以至于尧,尧不能去。缙云氏有不才子,贪于饮食,冒于货贿,侵欲崇侈,不可盈厌,聚敛积实,不知纪极,不分孤寡,不恤穷匮,天下之民以比三凶,谓之饕餮。舜臣尧,宾于四门,流四凶族浑敦、穷奇、梼杌、饕餮,投诸四裔,以御魑魅。是以尧崩而天下如一,同心戴舜以为天子,以其举十六相,去四凶也。故《虞书》数舜之功,曰‘慎徽五典,五典克从’,无违教也。曰‘纳于百揆,百揆时序’,无废事也。曰‘宾于四门,四门穆穆’,无凶人也。

  舜有大功二十而为天子,今行父虽未获一吉人,去一凶矣,于舜之功,二十之一也,庶几免于戾乎!”宋武氏之族道昭公子,将奉司城须以作乱。十二月,宋公杀母弟须及昭公子,使戴、庄、桓之族攻武氏于司马子伯之馆。遂出武、穆之族,使公孙师为司城,公子朝卒,使乐吕为司寇,以靖国人。
  

  《礼记文王世子》

  文王之为世子,朝于王季日三。鸡初鸣而衣服,至于寝门外,问内竖之御者曰:“今日安否?何如?”内竖曰:“安。”文王乃喜。及日中又至,亦如之,及莫又至,亦如之。其有不安节,则内竖以告文王,文王色忧,行不能正履。王季复膳,然后亦复初。食上,必在视寒暖之节,食下,问所膳,命膳宰曰:“末有原。”应曰:“诺。”然后退。武王帅而行之,不敢有加焉。文王有疾,武王不说冠带而养。文王一饭,亦一饭,文王再饭,亦再饭,旬有二日乃间。文王谓武王曰:“女何梦矣?”武王对曰:“梦帝与我九龄。”文王曰:“女以为何也?”武王曰:“西方有九国焉,君王其终抚诸。”文王曰:“非也。古者谓年龄,齿亦龄也,我百,尔九十,吾与尔三焉。”文王九十七乃终,武王九十三而终。成王幼,不能莅阼,周公相,践阼而治,抗世子法于伯禽,欲令成王之知父子君臣长幼之道也。成王有过,则挞伯禽,所以示成王世子之道也,文王之为世子也。

  

  凡学世子,及学士,必时。春夏学干戈,秋冬学羽钥,皆于东序。小乐正学干,大胥赞之,钥师学戈,钥师丞赞之,胥鼓南。春诵,夏弦,大师诏之瞽宗。秋学礼,执礼者诏之。冬读书,典书者诏之。礼在瞽宗,书在上庠。

  

  凡祭与养老,乞言合语之礼,皆小乐正诏之于东序。大乐正学舞干戚,语说,命乞言,皆大乐正授数,大司成论说在东序。

  

  凡侍坐于大司成者,远近间三席,可以问,终则负墙,列事未尽不问。

  

  凡学春官释奠于其先师,秋冬亦如之。凡始立学者,必释奠于先圣先师,及行事必以币。凡释奠者,必有合也,有国故则否。

  

  凡大合乐,必遂养老。凡语于郊者,必取贤敛才焉,或以德进,或以事举,或以言扬。曲艺皆誓之,以待又语,三而一有焉,乃进其等,以其序,谓之郊人。远之,于成均,以及取爵于上尊也。

  

  始立学者,既兴器用币,然后释菜。不舞不授器,乃退,傧于东序。一献,无介语可也。教世子。

  

  凡三王教世子,必以礼乐。乐所以修内也,礼所以修外也。礼乐交错于中,发形于外,是故其成也怿,恭敬而温文。立大傅少傅以养之,欲其知父子君臣之道也。大傅审父子君臣之道以示之,少傅奉世子,以观大傅之德行而审喻之。大傅在前,少傅在后,入则有保,出则有师,是以教喻而德成也。师也者,教之以事,而喻诸德者也。保也者,慎其身以辅翼之,而归诸道者也。记曰:虞、夏、商、周有师保,有疑丞,设四辅,及三公,不必备,唯其人。语使能也。君子曰:德,德成而教尊,教尊而官正,官正而国治。君之谓也。仲尼曰:“昔者周公摄政,践阼而治,抗世子法于伯禽,所以善成王也。闻之曰:为人臣者,杀其身,有益于君,则为之。况于其身以善其君乎?周公优为之,是故知为人子,然后可以为人父,知为人臣,然后可以为人君,知事人,然后能使人。成王幼,不能莅阼,以为世子则无为也,是故抗世子法于伯禽,使之与成王居,欲令成王之知父子君臣长幼之义也。君之于世子也,亲则父也,尊则君也。有父之亲,有君之尊,然后兼天下而有之。是故养世子不可不慎也。行一物而三善皆得者,唯世子而已。”其齿于学之谓也。故世子齿于学,国人观之曰:“将君我,而与我齿让,何也?”曰:“有父在,则礼然。”然而众知父子之道矣。其二曰:“将君我。而与我齿让。何也?”曰:“有君在,则礼然。”然而众着于君臣之义也。其三曰:“将君我,而与我齿让,何也?”曰:“长长也。”然而众知长幼之节矣。故父在斯为子,君在斯谓之臣,居子与臣之节,所以尊君亲亲也。故学之为父子焉,学之为君臣焉,学之为长幼焉。父子君臣长幼之道得而国治。语曰:“乐正司业,父师司成,一有元良,万国以贞。”世子之谓也。周公践阼。

  

  庶子之正于公族者,教之以孝弟睦友子爱,明父子之义、长幼之序。其朝于公,内朝,则东面北上,臣有贵者以齿。其在外朝,则以官,司士为之。其在宗庙之中,则如外朝之位,宗人授事,以爵以官,其登馂献受爵,则以上嗣。庶子治之,虽有三命,不踰父兄。其公大事,则以其丧服之精麤为序,虽于公族之丧亦如之,以次主人。若公与族燕,则异姓为宾,膳宰为主人,公与父兄齿,族食世降一等。

  

  其在军,则守于公祢。公若有出疆之政,庶子以公族之无事者守于公宫,正室守大庙,诸父守贵宫贵室,诸子诸孙守下宫下室。

  

  五庙之孙,祖庙未毁,虽为庶人,冠、取妻必告,死必赴,练祥则告。族之相为也,宜吊不吊,宜免不免,有司罚之。至于赗赙承含,皆有正焉。公族其有死罪,则磬于甸人。其刑罪,则纤剸,亦告于甸人。公族无宫刑。狱成,有司谳于公,其死罪,则曰:“某之罪在大辟。”其刑罪,则曰:“某之罪在小辟。”公曰:“宥之。”有司又曰:“在辟。”公又曰:“宥之。”有司又曰:“在辟。”及三宥不对,走出,致刑于甸人。公又使人追之,曰:“虽然,必赦之。”有司对曰:“无及也。”反命于公,公素服不举,为之变。如其伦之丧,无服,亲哭之。

  

  公族朝于内朝,内亲也,虽有贵者以齿,明父子也。外朝以官,体异姓也。宗庙之中,以爵为位,崇德也。宗人授事以官,尊贤也。登馂受爵以上嗣,尊祖之道也。丧纪以服之轻重为序,不夺人亲也。公与族燕则以齿,而孝弟之道达矣。其族食世降一等,亲亲之杀也。战则守于公祢,孝爱之深也。正室守大庙,尊宗室,而君臣之道着矣。诸父诸兄守贵室,子弟守下室,而让道达矣。

  

  五庙之孙,祖庙未毁,虽及庶人,冠、取妻必告,死必赴,不忘亲也。亲未绝而列于庶人,贱无能也。敬吊临赙赗,睦友之道也。古者庶子之官治,而邦国有伦,邦国有伦,而众乡方矣。公族之罪,虽亲不以犯有司,正术也,所以体百姓也。刑于隐者,不与国人虑兄弟也。弗吊,弗为服,哭于异姓之庙,为忝祖,远之也。素服居外,不听乐,私丧之也,骨肉之亲无绝也。公族无宫刑,不翦其类也。

  

  天子视学,大昕鼓征,所以警众也。众至,然后天子至,乃命有司行事,兴秩节,祭先师先圣焉。有司卒事反命,始之养也。适东序,释奠于先老,遂设三老五更群老之席位焉。适馔省醴,养老之珍具,遂发咏焉。退修之,以孝养也。反,登歌清庙,既歌而语,以成之也。言父子君臣长幼之道,合德音之致,礼之大者也。下管象,舞大武,大合众以事,达有神,兴有德也,正君臣之位,贵贱之等焉,而上下之义行矣。有司告以乐阕,王乃命公、侯、伯、子、男及群吏曰:“反养老幼于东序。”终之以仁也。

  

  是故圣人之记事也,虑之以大,爱之以敬,行之以礼,修之以孝,养纪之以义,终之以仁。

  

  是故古之人一举事,而众皆知其德之备也。古之君子,举大事必慎其终始,而众安得不喻焉?兑命曰:念终始典于学。

  

  世子之记曰:朝夕至于大寝之门外,问于内竖曰:“今日安否?何如?”内竖曰:“今日安。”世子乃有喜色。其有不安节,则内竖以告世子,世子色忧不满容,内竖言复初,然后亦复初。朝夕之食上,世子必在视寒暖之节。食下,问所膳。羞必知所进,以命膳宰,然后退。若内竖言疾,则世子亲齐玄而养,膳宰之馔,必敬视之,疾之药,必亲尝之,尝馔善,则世子亦能食,尝馔寡,世子亦不能饱。以至于复初,然后亦复初。

 
 
  

  《礼记问丧》

  

  亲始死,鸡斯徒跣,扱上衽,交手哭。恻怛之心,痛疾之意,伤肾干肝焦肺。水浆不入口三日,不举火,故邻里为之糜粥以饮食之。夫悲哀在中,故形变于外也;痛疾在心,故口不甘味,身不安美也。

  

  三日而敛。在床曰尸,在棺曰柩。动尸举柩,哭踊无数。恻怛之心,痛疾之意,悲哀志懑气盛,故袒而踊之,所以动体安心下气也。妇人不宜袒,故发胸,击心,爵踊,殷殷田田,如坏墙然,悲哀痛疾之至也。故曰:辟踊哭泣,哀以送之。送形而往,迎精而反也。

  

  其往送也,望望然,汲汲然,如有追而弗及也。其反哭也,皇皇然,若有求而弗得也。故其往送也如慕,其反也如疑。

  

  求而无所得之也,入门而弗见也,上堂又弗见也,入室又弗见也,亡矣丧矣!不可复见已矣!故哭泣辟踊,尽哀而止矣。心怅焉怆焉,惚焉忾焉,心绝志悲而已矣。祭之宗庙,以鬼飨之,徼幸复反也。

  

  成圹而归,不敢入处室。居于倚庐,哀亲之在外也。寝苫枕块,哀亲之在土也。故哭泣无时,服勤三年。思慕之心,孝子之志也,人情之实也。

  

  或问曰:“死三日而后敛者,何也?”曰:“孝子亲死,悲哀志懑,故匍匐而哭之,若将复生然,安可得夺而敛之也?故曰:三日而后敛者,以俟其生也。三日而不生,亦不生矣。孝子之心,亦益衰矣。家室之计,衣服之具,亦可以成矣。亲戚之远者,亦可以至矣。是故圣人为之断决,以三日为之礼制也。”

  

  或问曰“冠者不肉袒。何也?”曰:“冠至尊也,不居肉袒之体也,故为之免以代之也。然则秃者不免,伛者不袒,跛者不踊,非不悲也,身有锢疾,不可以备礼也。故曰:丧礼唯哀为主矣。女子哭泣悲哀,击胸伤心;男子哭泣悲哀,稽颡触地无容。哀之至也。”

  

  或问曰:“者以何为也?”曰:“不冠者之所服也。礼曰:童子不缌,唯当室缌。缌者其免也,当室则免而杖矣。”

  

  或问曰:“杖者何也?”曰:“竹桐一也。故为父苴杖。苴杖,竹也。为母削杖。削杖,桐也。”

  

  或问曰:“杖者以何为也?”曰:“孝子丧亲,哭泣无数,服勤三年,身病体羸,以杖扶病也。则父在不敢杖矣,尊者在故也。堂上不杖,辟尊者之处也。堂上不趋,示不遽也。此孝子之志也,人情之实也,礼义之经也。非从天降也,非从地出也,人情而已矣。”
!![[诗经]]


!![[尚书]]

!![[礼记]]

!![[易经]]

!![[春秋]]

  僖公(元年~三十三年)

  

  !僖公元年

  【经】元年春王正月。齐师、宋师、曹伯次于聂北,救邢。夏六月,邢迁于夷仪。齐师、宋师、曹师城邢。秋七月戊辰,夫人姜氏薨于夷,齐人以归。楚人伐郑。八月,公会齐侯、宋公、郑伯、曹伯、邾人于柽。九月,公败邾师于偃。

  冬十月壬午,公子友帅师败莒于郦。获莒拏。十有二月丁巳,夫人氏之丧至自齐。

  

  【传】元年春,不称即位,公出故也。公出复入,不书,讳之也。讳国恶,礼也。

  诸侯救邢。邢人溃,出奔师。师遂逐狄人,具邢器用而迁之,师无私焉。

  夏,邢迁夷仪,诸侯城之,救患也。凡侯伯救患分灾讨罪,礼也。

  秋,楚人伐郑,郑即齐故也。盟于荦,谋救郑也。

  九月,公败邾师于偃,虚丘之戍将归者也。

  冬,莒人来求赂。公子友败诸郦,获莒子之弟拏。非卿也,嘉获之也。公赐季友汶阳之田及费。

  夫人氏之丧至自齐。君子以齐人杀哀姜也为已甚矣,女子,从人者也。

  

  

  !僖公二年

  【经】二年春王正月,城楚丘。夏五月辛巳,葬我小君哀姜。虞师、晋师灭下阳。秋九月,齐侯、宋公、江人、黄人盟于贯。冬十月,不雨。楚人侵郑。

  

  【传】二年春,诸侯城楚丘而封卫焉。不书所会,后也。

  晋荀息请以屈产之乘与垂棘之璧,假道于虞以伐虢。公曰:“是吾宝也。”

  对曰:“若得道于虞,犹外府也。”公曰:“宫之奇存焉。”对曰:“宫之奇之为人也,懦而不能强谏,且少长于君,君暱之,虽谏,将不听。”乃使荀息假道于虞,曰:“冀为不道,入自颠軨,伐鄍三门。冀之既病,则亦唯君故。

  今虢为不道,保于逆旅,以侵敝邑之南鄙。敢请假道以请罪于虢。”虞公许之,且请先伐虢。宫之奇谏,不听,遂起师。夏,晋里克、荀息帅师会虞师伐虢,灭下阳。先书虞,贿故也。

  秋,盟于贯,服江、黄也。

  齐寺人貂始漏师于多鱼。

  虢公败戎于桑田。晋卜偃曰:“虢必亡矣。亡下阳不惧,而又有功,是天夺之鉴,而益其疾也。必易晋而不抚其民矣,不可以五稔。”

  冬,楚人伐郑,斗章囚郑聃伯。

  

  

  !僖公三年

  【经】三年春王正月,不雨。夏四月不雨。徐人取舒。六月雨。秋,齐侯、宋公、江人、黄人会于阳谷。冬,公子友如齐涖盟。楚人伐郑。

  

  【传】三年春,不雨。夏六月,雨。自十月不雨至于五月,不曰旱,不为灾也。

  秋,会于阳谷,谋伐楚也。

  齐侯为阳谷之会,来寻盟。冬,公子友如齐涖盟。

  楚人伐郑,郑伯欲成。孔叔不可,曰:“齐方勤我,弃德不祥。”

  齐侯与蔡姬乘舟于囿,荡公。公惧,变色。禁之,不可。公怒,归之,未绝之也。蔡人嫁之。

  

  

  !僖公四年

  【经】四年春王正月,公会齐侯、宋公、陈侯、卫侯、郑伯,许男、曹伯侵蔡。蔡溃,遂伐楚,次于陉。夏,许男新臣卒。楚屈完来盟于师,盟于召陵。齐人执陈辕涛涂。秋,及江人、黄人伐陈。八月,公至自伐楚。葬许穆公。冬十有二月,公孙兹帅师会齐人、宋人、卫人、郑人、许人、曹人侵陈。

  

  【传】四年春,齐侯以诸侯之师侵蔡。蔡溃。遂伐楚。楚子使与师言曰:“君处北海,寡人处南海,唯是风马牛不相及也。不虞君之涉吾地也,何故?”管仲对曰:“昔召康公命我先君大公曰:‘五侯九伯,女实征之,以夹辅周室。’赐我先君履,东至于海,西至于河,南至于穆陵,北至于无棣。尔贡包茅不入,王祭不共,无以缩酒,寡人是征。昭王南征而不复,寡人是问。”对曰:“贡之不入,寡君之罪也,敢不共给。昭王之不复,君其问诸水滨。”师进,次于陉。

  夏,楚子使屈完如师。师退,次于召陵。

  齐侯陈诸侯之师,与屈完乘而观之。齐侯曰:“岂不谷是为?先君之好是继。

  与不谷同好,如何?”对曰:“君惠徼福于敝邑之社稷,辱收寡君,寡君之愿也。”

  齐侯曰:“以此众战,谁能御之?以此攻城,何城不克?”对曰:“君若以德绥诸侯,谁敢不服?君若以力,楚国方城以为城,汉水以为池,虽众,无所用之。”

  屈完及诸侯盟。

  陈辕涛涂谓郑申侯曰:“师出于陈、郑之间,国必甚病。若出于东方,观兵于东夷,循海而归,其可也。”申侯曰:“善。”涛涂以告,齐侯许之。申侯见,曰:“师老矣,若出于东方而遇敌,惧不可用也。若出于陈、郑之间,共其资粮屝屦,其可也。”齐侯说,与之虎牢。执辕涛涂。

  秋,伐陈,讨不忠也。

  许穆公卒于师,葬之以侯,礼也。凡诸侯薨于朝会,加一等;死王事,加二等。于是有以衮敛。

  冬,叔孙戴伯帅师,会诸侯之师侵陈。陈成,归辕涛涂。

  初,晋献公欲以骊姬为夫人,卜之,不吉;筮之,吉。公曰:“从筮。”卜人曰:“筮短龟长,不如从长。且其繇曰:‘专之渝,攘公之羭。一薰一莸,十年尚犹有臭。’必不可。”弗听,立之。生奚齐,其娣生卓子。及将立奚齐,既与中大夫成谋,姬谓大子曰:“君梦齐姜,必速祭之。”大子祭于曲沃,归胙于公。公田,姬置诸宫六日。公至,毒而献之。公祭之地,地坟。与犬,犬毙。

  与小臣,小臣亦毙。姬泣曰:“贼由大子。”大子奔新城。公杀其傅杜原款。或谓大子:“子辞,君必辩焉。”大子曰:“君非姬氏,居不安,食不饱。我辞,姬必有罪。君老矣,吾又不乐。”曰:“子其行乎!”大子曰:“君实不察其罪,被此名也以出,人谁纳我?”十二月戊申,缢于新城。姬遂谮二公子曰:“皆知之。”重耳奔蒲。夷吾奔屈。

  

  

  !僖公五年

  【经】五年春,晋侯杀其世子申生。杞伯姬来朝其子。夏,公孙兹如牟。公及齐侯、宋公、陈侯、卫侯、郑伯、许男、曹伯会王世子于首止。秋八月,诸侯盟于首止。郑伯逃归不盟。楚人灭弦,弦子奔黄。九月戊申朔,日有食之。冬,晋人执虞公。

  

  【传】五年春,王正月辛亥朔,日南至。公既视朔,遂登观台以望。而书,礼也。凡分、至、启、闭,必书云物,为备故也。

  晋侯使以杀大子申生之故来告。

  初,晋侯使士蒍为二公子筑蒲与屈,不慎,置薪焉。夷吾诉之。公使让之。

  士蒍稽首而对曰:“臣闻之,无丧而戚,忧必仇焉。无戎而城,仇必保焉。寇仇之保,又何慎焉!守官废命不敬,固仇之保不忠,失忠与敬,何以事君?《诗》云:‘怀德惟宁,宗子惟城。’君其修德而固宗子,何城如之?三年将寻师焉,焉用慎?”退而赋曰:“狐裘尨茸,一国三公,吾谁适从?”及难,公使寺人披伐蒲。重耳曰:“君父之命不校。”乃徇曰:“校者吾仇也。”逾垣而走。披斩其祛,遂出奔翟。

  夏,公孙兹如牟,娶焉。

  会于首止,会王大子郑,谋宁周也。

  陈辕宣仲怨郑申侯之反己于召陵,故劝之城其赐邑,曰:“美城之,大名也,子孙不忘。吾助子请。”乃为之请于诸侯而城之,美。遂谮诸郑伯,曰:“美城其赐邑,将以叛也。”申侯由是得罪。

  秋,诸侯盟。王使周公召郑伯,曰:“吾抚女以从楚,辅之以晋,可以少安。”

  郑伯喜于王命而惧其不朝于齐也,故逃归不盟。孔叔止之曰:“国君不可以轻,轻则失亲。失亲患必至,病而乞盟,所丧多矣,君必悔之。”弗听,逃其师而归。

  楚斗谷於菟灭弦,弦子奔黄。

  于是江、黄、道、柏方睦于齐,皆弦姻也。弦子恃之而不事楚,又不设备,故亡。

  晋侯复假道于虞以伐虢。宫之奇谏曰:“虢,虞之表也。虢亡,虞必从之。

  晋不可启,寇不可玩,一之谓甚,其可再乎?谚所谓‘辅车相依,唇亡齿寒’者,其虞、虢之谓也。”公曰:“晋,吾宗也,岂害我哉?”对曰:大伯、虞仲,大王之昭也。大伯不从,是以不嗣。虢仲、虢叔,王季之穆也,为文王卿士,勋在王室,藏于盟府。将虢是灭,何爱于虞?且虞能亲于桓,庄乎,其爱之也?桓、庄之族何罪,而以为戮,不唯逼乎?亲以宠逼,犹尚害之,况以国乎?”公曰:“吾享祀丰洁,神必据我。”对曰:“臣闻之,鬼神非人实亲,惟德是依。故《周书》曰:‘皇天无亲,惟德是辅。’又曰:‘黍稷非馨,明德惟馨。’又曰:‘民不易物,惟德繄物。’如是,则非德,民不和,神不享矣。神所冯依,将在德矣。若晋取虞而明德以荐馨香,神其吐之乎?”弗听,许晋使。宫之奇以其族行,曰:“虞不腊矣,在此行也,晋不更举矣。”

  八月甲午,晋侯围上阳。问于卜偃曰:“吾其济乎”?对曰:“克之。”公曰:“何时?”对曰:“童谣云:‘丙之晨,龙尾伏辰,均服振振,取虢之旂。

  鹑之贲贲,天策焞々,火中成军,虢公其奔。’其九月、十月之交乎。丙子旦,日在尾,月在策,鹑火中,必是时也。”

  冬十二月丙子朔,晋灭虢,虢公丑奔京师。师还,馆于虞,遂袭虞,灭之,执虞公及其大夫井伯,以媵秦穆姬。而修虞祀,且归其职贡于王。

  故书曰:“晋人执虞公。”罪虞,且言易也。

  

  

  !僖公六年

  【经】六年春王正月。夏,公会齐侯、宋公、陈侯、卫侯、曹伯伐郑,围新城。秋,楚人围许,诸侯遂救许。冬,公至自伐郑。

  

  【传】六年春,晋侯使贾华伐屈。夷吾不能守,盟而行。将奔狄,郤芮曰:“后出同走,罪也。不如之梁。梁近秦而幸焉。”乃之梁。

  夏,诸侯伐郑,以其逃首止之盟故也。围新密,郑所以不时城也。

  秋,楚子围许以救郑,诸侯救许,乃还。

  冬,蔡穆侯将许僖公以见楚子于武城。许男面缚,衔璧,大夫衰绖,士舆榇。

  楚子问诸逢伯,对曰:“昔武王克殷,微子启如是。武王亲释其缚,受其璧而祓之。焚其榇,礼而命之,使复其所。”楚子从之。

  

  

  !僖公七年

  【经】七年春,齐人伐郑。夏,小邾子来朝。郑杀其大夫申侯。秋七月,公会齐侯、宋公、陈世子款、郑世子华盟于宁母。曹伯班卒。公子友如齐。冬,葬曹昭公。

  

  【传】七年春,齐人伐郑。孔叔言于郑伯曰:“谚有之曰:‘心则不竞,何惮于病。’既不能强,又不能弱,所以毙也。国危矣,请下齐以救国。”公曰:“吾知其所由来矣。姑少待我。”对曰:“朝不及夕,何以待君?”夏,郑杀申侯以说于齐,且用陈辕涛涂之谮也。

  初,申侯,申出也,有宠于楚文王。文王将死,与之璧,使行,曰,“唯我知女,女专利而不厌,予取予求,不女疵瑕也。后之人将求多于女,女必不免。

  我死,女必速行。无适小国,将不女容焉。”既葬,出奔郑,又有宠于厉公。子文闻其死也,曰:“古人有言曰‘知臣莫若君。’弗可改也已。”

  秋,盟于宁母,谋郑故也。

  管仲言于齐侯曰:“臣闻之,招携以礼,怀远以德,德礼不易,无人不怀。”

  齐侯修礼于诸侯,诸侯官受方物。

  郑伯使大子华听命于会,言于齐侯曰:“泄氏、孔氏、子人氏三族,实违君命。若君去之以为成。我以郑为内臣,君亦无所不利焉。”齐侯将许之。管仲曰:“君以礼与信属诸侯,而以奸终之,无乃不可乎?子父不奸之谓礼,守命共时之谓信。违此二者,奸莫大焉。”公曰:“诸侯有讨于郑,未捷。今苟有衅,从之,不亦可乎?”对曰:“君若绥之以德,加之以训辞,而帅诸侯以讨郑,郑将覆亡之不暇,岂敢不惧?若总其罪人以临之,郑有辞矣,何惧?且夫合诸侯以崇德也,会而列奸,何以示后嗣?夫诸侯之会,其德刑礼义,无国不记。记奸之位,君盟替矣。作而不记,非盛德也。君其勿许,郑必受盟。夫子华既为大子而求介于大国,以弱其国,亦必不免。郑有叔詹、堵叔、师叔三良为政,未可间也。”齐侯辞焉。子华由是得罪于郑。

  冬,郑伯请盟于齐。

  闰月,惠王崩。襄王恶大叔带之难,惧不立,不发丧而告难于齐。

  

  

  !僖公八年

  【经】八年春王正月,公会王人、齐侯、宋公、卫侯、许男、曹伯、陈世子款盟于洮。郑伯乞盟。夏,狄伐晋。秋七月,禘于大庙,用致夫人。冬十有二月丁未,天王崩。

  

  【传】八年春,盟于洮,谋王室也。郑伯乞盟,请服也。襄王定位而后发丧。

  晋里克帅师,梁由靡御。虢射为右,以败狄于采桑。梁由靡曰:“狄无耻,从之必大克。”里克曰:“拒之而已,无速众狄。”虢射曰:“期年,狄必至,示之弱矣。”

  夏,狄伐晋,报采桑之役也。复期月。

  秋,禘而致哀姜焉,非礼也。凡夫人不薨于寝,不殡于庙,不赴于同,不祔于姑,则弗致也。

  冬,王人来告丧,难故也,是以缓。

  宋公疾,大子兹父固请曰:“目夷长,且仁,君其立之。”公命子鱼,子鱼辞,曰:“能以国让,仁孰大焉?臣不及也,且又不顺。”遂走而退。

  

  

  !僖公九年

  【经】九年春王三月丁丑,宋公御说卒。夏,公会宰周公、齐侯、宋子、卫侯、郑伯、许男、曹伯于葵丘。秋七月乙酉,伯姬卒。九月戊辰,诸侯盟于葵丘。

  甲子,晋侯佹诸卒。冬,晋里奚克杀其君之子奚齐。

  

  【传】九年春,宋桓公卒,未葬而襄公会诸侯,故曰子。凡在丧,王曰小童,公侯曰子。

  夏,会于葵丘,寻盟,且修好,礼也。

  王使宰孔赐齐侯胙,曰:“天子有事于文武,使孔赐伯舅胙。”齐侯将下拜。

  孔曰:“且有后命。天子使孔曰:‘以伯舅耋老,加劳,赐一级,无下拜’”。

  对曰:“天威不违颜咫尺,小白余敢贪天子之命无下拜?恐陨越于下,以遗天子羞。敢不下拜?”下,拜;登,受。

  秋,齐侯盟诸侯于葵丘,曰:“凡我同盟之人,既盟之后,言归于好。”宰孔先归,遇晋侯曰:“可无会也。齐侯不务德而勤远略,故北伐山戎,南伐楚,西为此会也。东略之不知,西则否矣。其在乱乎。君务靖乱,无勤于行。”晋侯乃还。

  九月,晋献公卒,里克、郑欲纳文公,故以三公子之徒作乱。

  初,献公使荀息傅奚齐,公疾,召之,曰:“以是藐诸孤,辱在大夫,其若之何?”稽首而对曰:“臣竭其股肱之力,加之以忠贞。其济,君之灵也;不济,则以死继之。”公曰:“何谓忠贞?”对曰:“公家之利,知无不为,忠也。送往事居,耦俱无猜。贞也。”及里克将杀奚齐,先告荀息曰:“三怨将作,秦、晋辅之,子将何如?”荀息曰:“将死之。”里克曰:“无益也。”荀叔曰:“吾与先君言矣,不可以贰。能欲复言而爱身乎?虽无益也,将焉辟之?且人之欲善,谁不如我?我欲无贰而能谓人已乎?”冬十月,里克杀奚齐于次。书曰:“杀其君之子。”未葬也。荀息将死之,人曰:“不如立卓子而辅之。”荀息立公子卓以葬。十一月,里克杀公子卓于朝,荀息死之。君子曰:“诗所谓‘白圭之玷,尚可磨也;斯言之玷,不可为也,’荀息有焉。”

  齐侯以诸侯之师伐晋,及高梁而还,讨晋乱也。令不及鲁,故不书。

  晋郤芮使夷吾重赂秦以求入,曰:“人实有国,我何爱焉。入而能民,土于何有。”从之。齐隰朋帅师会秦师,纳晋惠公。秦伯谓郤芮曰:“公子谁恃?”对曰:“臣闻亡人无党,有党必有仇。夷吾弱不好弄,能斗不过,长亦不改,不识其他。”公谓公孙枝曰:“夷吾其定乎?对曰:“臣闻之,唯则定国。《诗》曰:‘不识不知,顺帝之则。’文王之谓也。又曰:‘不僣不贼,鲜不为则。’无好无恶,不忌不克之谓也。今其言多忌克,难哉!”公曰:“忌则多怨,又焉能克?是吾利也。”

  宋襄公即位,以公子目夷为仁,使为左师以听政,于是宋治。故鱼氏世为左师。

  

  

  !僖公十年

  【经】十年春王正月,公如齐。狄灭温,温子奔卫。晋里克弑其君卓及其大夫荀息。夏,齐侯、许男伐北戎。晋杀其大夫里克。秋七月。冬,大雨雪。

  

  【传】十年春,狄灭温,苏子无信也。苏子叛王即狄,又不能于狄,狄人伐之,王不救,故灭。苏子奔卫。

  夏四月,周公忌父、王子党会齐隰朋立晋侯。晋侯杀里克以说。将杀里克,公使谓之曰:“微子则不及此。虽然,子弑二君与一大夫,为子君者不亦难乎?”对曰:“不有废也,君何以兴?欲加之罪,其无辞乎?臣闻命矣。”伏剑而死。

  于是郑聘于秦,且谢缓赂,故不及。

  晋侯改葬共大子。

  秋,狐突适下国,遇大子,大子使登,仆,而告之曰:“夷吾无礼,余得请于帝矣。将以晋畀秦,秦将祀余。”对曰:“臣闻之,神不歆非类,民不祀非族。

  君祀无乃殄乎?且民何罪?失刑乏祀,君其图之。”君曰:“诺。吾将复请。七日新城西偏,将有巫者而见我焉。”许之,遂不见。及期而往,告之曰:“帝许我罚有罪矣,敝于韩。”

  郑之如秦也,言于秦伯曰:“吕甥、郤称、冀芮实为不从,若重问以召之,臣出晋君,君纳重耳,蔑不济矣。”

  冬,秦伯使冷至报问,且召三子。郤芮曰:“币重而言甘,诱我也。”遂杀郑、祁举及七舆大夫:左行共华、右行贾华、叔坚、骓颛、累虎、特宫、山祁,皆里、之党也。豹奔秦,言于秦伯曰:“晋侯背大主而忌小怨,民弗与也,伐之必出。”公曰:“失众,焉能杀。违祸,谁能出君。”

  

  

  !僖公十一年

  【经】十有一年春。晋杀其大夫郑父。夏,公及夫人姜氏会齐侯于阳谷。

  秋八月,大雩。冬,楚人伐黄。

  

  【传】十一年春,晋侯使以郑之乱来告。

  天王使召武公、内史过赐晋侯命。受玉惰。过归,告王曰:“晋侯其无后乎。

  王赐之命而惰于受瑞,先自弃也已,其何继之有?礼,国之干也。敬,礼之舆也。

  不敬则礼不行,礼不行则上下昏,何以长世?”夏,扬、拒、泉、皋、伊、洛之戎同伐京师,入王城,焚东门,王子带召之也。秦、晋、伐戎以救周。秋,晋侯平戎于王。

  黄人不归楚贡。冬,楚人伐黄。

  

  

  !僖公十二年

  【经】十有二年春王三月庚午,日有食之。夏,楚人灭黄。秋七月。冬十有二月丁丑,陈侯杵臼卒。

  

  【传】十二年春,诸侯城卫楚丘之郛,惧狄难也。

  黄人恃诸侯之睦于齐也,不共楚职,曰:“自郢及我九百里,焉能害我?”夏,楚灭黄。

  王以戎难故,讨王子带。秋,王子带奔齐。

  冬,齐侯使管夷吾平戎于王,使隰朋平戎于晋。

  王以上卿之礼飨管仲,管仲辞曰:“臣,贱有司也,有天子之二守国、高在。

  若节春秋来承王命,何以礼焉?陪臣敢辞。”王曰:“舅氏,余嘉乃勋,应乃懿德,谓督不忘。往践乃职,无逆朕命。”管仲受下卿之礼而还。君子曰:“管氏之世祀也宜哉!让不忘其上。《诗》曰:‘恺悌君子,神所劳矣。’”

  

  !僖公十三年

  【经】十有三年春,狄侵卫。夏四月,葬陈宣公。公会齐侯、宋公、陈侯、郑伯、许男、曹伯于咸。秋九月,大雩。冬,公子友如齐。

  

  【传】十三年春,齐侯使仲孙湫聘于周,且言王子带。事毕,不与王言。归,复命曰:“未可。王怒未怠,其十年乎。不十年,王弗召也。”

  夏,会于咸,淮夷病杞故,且谋王室也。

  秋,为戎难故,诸侯戍周,齐仲孙湫致之。

  冬,晋荐饥,使乞籴于秦。秦伯谓子桑:“与诸乎?”对曰:“重施而报,君将何求?重施而不报,其民必携,携而讨焉,无众必败。”谓百里:“与诸乎?”对曰:“天灾流行,国家代有,救灾恤邻,道也。行道有福。”

  郑之子豹在秦,请伐晋。秦伯曰:“其君是恶,其民何罪?”秦于是乎输粟于晋,自雍及绛相继,命之曰泛舟之役。

  

  

  !僖公十四年

  【经】十有四年春,诸侯城缘陵。夏六月,季姬及鄫子遇于防。使鄫子来朝。秋八月辛卯,沙鹿崩。狄侵郑。冬,蔡侯肝卒。

  

  【传】十四年春,诸侯城缘陵而迁杞焉。不书其人,有阙也。

  鄫季姬来宁,公怒,止之,以鄫子之不朝也。夏,遇于防,而使来朝。

  秋八月辛卯,沙鹿崩。晋卜偃曰:“期年将有大咎,几亡国。”

  冬,秦饥,使乞籴于晋,晋人弗与。庆郑曰:“背施无亲,幸灾不仁,贪爱不祥,怒邻不义。四德皆失,何以守国?”虢射曰:“皮之不存,毛将安傅?”庆郑曰:“弃信背邻,患孰恤之?无信患作,失授必毙,是则然矣。”虢射曰:“无损于怨而厚于寇,不如勿与。”庆郑曰:“背施幸灾,民所弃也。近犹仇之,况怨敌乎?”弗听。退曰:“君其悔是哉!”

  

  !僖公十五年

  【经】十有五年春王正月,公如齐。楚人伐徐。三月,公会齐侯、宋公、陈侯、卫候、郑伯、许男、曹伯盟于牡丘,遂次于匡。公孙敖帅师及诸侯之大夫救徐。夏五月,日有食之。秋七月,齐师、曹师伐厉。八月,螽。九月,公至自会。

  季姬归于鄫。己卯晦,震夷伯之庙。冬,宋人伐曹。楚人败徐于娄林。十有一月壬戌,晋侯及秦伯战于韩,获晋侯。

  

  【传】十五年春,楚人伐徐,徐即诸夏故也。三月,盟于牡丘,寻蔡丘之盟,且救徐也。孟穆伯帅师及诸侯之师救徐,诸侯次于匡以待之。

  夏五月,日有食之。不书朔与日,官失之也。

  秋,伐厉,以救徐也。

  晋侯之入也,秦穆姬属贾君焉,且曰:“尽纳群公子。”晋侯烝于贾君,又不纳群公子,是以穆姬怨之。晋侯许赂中大夫,既而皆背之。赂秦伯以河外列城五,东尽虢略,南及华山,内及解梁城,既而不与。晋饥,秦输之粟;秦饥,晋闭之籴,故秦伯伐晋。

  卜徒父筮之,吉。涉河,侯车败。诘之,对曰:“乃大吉也,三败必获晋君。

  其卦遇《蛊》ⅶⅳ,曰:‘千乘三去,三去之余,获其雄狐。’夫狐蛊,必其君也。《蛊》之贞,风也;其悔,山也。岁云秋矣,我落其实而取其材,所以克也。

  实落材亡,不败何待?”三败及韩。晋侯谓庆郑曰:“寇深矣,若之何?”对曰:“君实深之,可若何?”公曰:“不孙。”卜右,庆郑吉,弗使。步扬御戎,家仆徒为右,乘小驷,郑入也。庆郑曰:“古者大事,必乘其产,生其水土而知其人心,安其教训而服习其道,唯所纳之,无不如志。今乘异产,以从戎事,及惧而变,将与人易。乱气狡愤,阴血周作,张脉偾兴,外强中干。进退不可,周旋不能,君必悔之。”

  弗听。

  九月,晋侯逆秦师,使韩简视师,复曰:“师少于我,斗士倍我。”公曰:“何故?”对曰:“出因其资,入用其宠,饥食其粟,三施而无报,是以来也。

  今又击之,我怠秦奋,倍犹未也。”公曰:“一夫不可狃,况国乎。”遂使请战,曰:“寡人不佞,能合其众而不能离也,君若不还,无所逃命。”秦伯使公孙枝对曰:“君之未入,寡人惧之,入而未定列,犹吾忧也。苟列定矣,敢不承命。”

  韩简退曰:“吾幸而得囚。”

  壬戌,战于韩原,晋戎马还泞而止。公号庆郑。庆郑曰:“愎谏违卜,固败是求,又何逃焉?”遂去之。梁由靡御韩简,虢射为右,辂秦伯,将止之。郑以救公误之,遂失秦伯。秦获晋侯以归。晋大夫反首拔舍从之。秦伯使辞焉,曰:“二三子何其戚也?寡人之从君而西也,亦晋之妖梦是践,岂敢以至。”晋大夫三拜稽首曰:“君履后土而戴皇天,皇天后土实闻君之言,群臣敢在下风。”

  穆姬闻晋侯将至,以大子荦、弘与女简、璧登台而履薪焉,使以免服衰绖逆,且告曰:“上天降灾,使我两君匪以玉帛相见,而以兴戎。若晋君朝以入,则婢子夕以死;夕以入,则朝以死。唯君裁之。”乃舍诸灵台。

  大夫请以入。公曰:“获晋侯,以厚归也。既而丧归,焉用之?大夫其何有焉?且晋人戚忧以重我,天地以要我。不图晋忧,重其怒也;我食吾言,背天地也。重怒难任,背天不祥,必归晋君。”公子絷曰:“不如杀之,无聚慝焉。”

  子桑曰:“归之而质其大子,必得大成。晋未可灭而杀其君,只以成恶。且史佚有言曰:‘无始祸,无怙乱,无重怒。’重怒难任,陵人不祥。”乃许晋平。

  晋侯使郤乞告瑕吕饴甥,且召之。子金教之言曰:“朝国人而以君命赏,且告之曰:‘孤虽归,辱社稷矣。其卜贰圉也。’”众皆哭。晋于是乎作爰田。吕甥曰:“君亡之不恤,而群臣是忧,惠之至也。将若君何?”众曰:“何为而可?”对曰:“征缮以辅孺子,诸侯闻之,丧君有君,群臣辑睦,甲兵益多,好我者劝,恶我者惧,庶有益乎!”众说。晋于是乎作州兵。

  初,晋献公筮嫁伯姬于秦,遇《归妹》ⅲⅷ之《睽》ⅵⅷ。史苏占之曰:“不吉。其繇曰:‘士刲羊,亦无{亡皿}也。女承筐,亦无贶也。西邻责言,不可偿也。《归妹》之《睽》,犹无相也。’《震》之《离》,亦《离》之《震》,为雷为火。为嬴败姬,车说其輹,火焚其旗,不利行师,败于宗丘。《归妹》《睽》孤,寇张之弧,侄其从姑,六年其逋,逃归其国,而弃其家,明年其死于高梁之虚。”及惠公在秦,曰:“先君若从史苏之占,吾不及此夫。”韩简侍,曰:“龟,象也;筮,数也。物生而后有象,象而后有滋,滋而后有数。先君之败德,及可数乎?史苏是占,勿从何益?《诗》曰:‘下民之孽,匪降自天,僔沓背憎,职竞由人。’”震夷伯之庙,罪之也,于是展氏有隐慝焉。

  冬,宋人伐曹,讨旧怨也。

  楚败徐于娄林,徐恃救也。

  十月,晋阴饴甥会秦伯,盟于王城。

  秦伯曰:“晋国和乎?”对曰:“不和。小人耻失其君而悼丧其亲,不惮征缮以立圉也,曰:‘必报仇,宁事戎狄。’君子爱其君而知其罪,不惮征缮以待秦命,曰:‘必报德,有死无二。’以此不和。”秦伯曰:“国谓君何?”对曰:“小人戚,谓之不免。君子恕,以为必归。小人曰:‘我毒秦,秦岂归君?’君子曰:‘我知罪矣,秦必归君。贰而执之,服而舍之,德莫厚焉,刑莫威焉。服者怀德,贰者畏刑。此一役也,秦可以霸。纳而不定,废而不立,以德为怨,秦不其然。’”秦伯曰:“是吾心也。”改馆晋侯,馈七牢焉。

  蛾析谓庆郑曰:“盍行乎?”对曰:“陷君于败,败而不死,又使失刑,非人臣也。臣而不臣,行将焉入?”十一月,晋侯归。丁丑,杀庆郑而后入。

  是岁,晋又饥,秦伯又饩之粟,曰:“吾怨其君而矜其民。且吾闻唐叔之封也,箕子曰:‘其后必大。’晋其庸可冀乎!姑树德焉以待能者。”于是秦始征晋河东,置官司焉。

  

  

  !僖公十六年

  【经】十有六年春王正月戊申朔,陨石于宋五。是月,六鹢退飞,过宋都。

  三月壬申,公子季友卒。夏四月丙申,鄫季姬卒。秋七月甲子,公孙兹卒。冬十有二月,公会齐侯、宋公、陈侯、卫侯、郑伯、许男、邢侯、曹伯于淮。

  

  【传】十六年春,陨石于宋五,陨星也。六鹢退飞过宋都,风也。周内史叔兴聘于宋,宋襄公问焉,曰;“是何祥也?吉凶焉在?”对曰:“今兹鲁多大丧,明年齐有乱,君将得诸侯而不终。”退而告人曰:“君失问。是阴阳之事,非吉凶所生也。吉凶由人,吾不敢逆君故也。”

  夏,齐伐厉不克,救徐而还。

  秋,狄侵晋,取狐、厨、受铎,涉汾,及昆都,因晋败也。

  王以戎难告于齐,齐征诸侯而戍周。

  冬,十一月乙卯,郑杀子华。

  十二月会于淮,谋郐,且东略也。城鄫,役人病。有夜登丘而呼曰:“齐有乱。”不果城而还。

  

  

  !僖公十七年

  【经】十有七年春,齐人、徐人伐英氏。夏,灭项。秋,夫人姜氏会齐侯于卞。九月,公至自会。冬十有二月乙亥,齐侯小白卒。

  

  【传】十七年春,齐人为徐伐英氏,以报娄林之役也。

  夏,晋大子圉为质于秦,秦归河东而妻之。惠公之在梁也,梁伯妻之。梁赢孕,过期,卜招父与其子卜之。其子曰:“将生一男一女。”招曰:“然。男为人臣,女为人妾。”故名男曰圉,女曰妾。及子圉西质,妾为宦女焉。

  师灭项。淮之会,公有诸侯之事,未归而取项。齐人以为讨,而止公。

  秋,声姜以公故,会齐侯于卞。九月,公至。书曰:“至自会。”犹有诸侯之事焉,且讳之也。

  齐侯之夫人三:王姬,徐嬴,蔡姬,皆无子。齐侯好内,多内宠,内嬖如夫人者六人:长卫姬,生武孟;少卫姬,生惠公;郑姬,生孝公;葛嬴,生昭公;密姬,生懿公;宋华子,生公子雍。公与管仲属孝公于宋襄公,以为太子。雍巫有宠于卫共姬,因寺人貂以荐羞于公,亦有宠,公许之立武孟。

  管仲卒,五公子皆求立。冬十月乙亥,齐桓公卒。易牙入,与寺人貂因内宠以杀群吏,而立公子无亏。孝公奔宋。十二月乙亥赴。辛巳夜殡。

  

  

  !僖公十八年

  【经】十有八年春王正月,宋公、曹伯、卫人、邾人伐齐。夏,师救齐。五月戊寅,宋师及齐师战于甗,齐师败绩。狄救齐。秋八月丁亥,葬齐桓公。冬,邢人,狄人伐卫。

  

  【传】十八年春,宋襄公以诸侯伐齐。三月,齐人杀无亏。

  郑伯始朝于楚,楚子赐之金,既而悔之,与之盟曰:“无以铸兵。”故以铸三钟。

  齐人将立孝公,不胜,四公子之徒遂与宋人战。夏五月,宋败齐师于甗,立孝公而还。

  秋八月,葬齐桓公。

  冬,邢人、狄人伐卫,围菟圃。卫侯以国让父兄子弟及朝众曰:“苟能治之,燬请从焉。”众不可,而后师于訾娄。狄师还。

  梁伯益其国而不能实也,命曰新里,秦取之。

  

  

  !僖公十九年

  【经】十有九年春王三月,宋人执滕子婴齐。夏六月,宋公、曹人、邾人盟于曹南。鄫子会盟于邾。己酉,邾人执郐子,用之。秋,宋人围曹。卫人伐邢。

  冬,会陈人、蔡人、楚人、郑人盟于齐。梁亡。

  

  【传】十九年春,遂城而居之。

  宋人执滕宣公。

  夏,宋公使邾文公用鄫子于次睢之社,欲以属东夷。司马子鱼曰:“古者六畜不相为用,小事不用大牲,而况敢用人乎?祭祀以为人也。民,神之主也。

  用人,其谁飨之?齐桓公存三亡国以属诸侯,义士犹曰薄德。今一会而虐二国之君,又用诸淫昏之鬼,将以求霸,不亦难乎?得死为幸!”秋,卫人伐邢,以报菟圃之役。于是卫大旱,卜有事于山川,不吉。宁庄子曰:“昔周饥,克殷而年丰。今邢方无道,诸侯无伯,天其或者欲使卫讨邢乎?”从之,师兴而雨。

  宋人围曹,讨不服也。子鱼言于宋公曰:“文王闻崇德乱而伐之,军三旬而不降,退修教而复伐之,因垒而降。《诗》曰:‘刑于寡妻,至于兄弟,以御于家邦。’今君德无乃犹有所阙,而以伐人,若之何?盍姑内省德乎?无阙而后动。”

  陈穆公请修好于诸侯,以无忘齐桓之德。冬,盟于齐,修桓公之好也。

  梁亡,不书其主,自取之也。初,梁伯好土功,亟城而弗处,民罢而弗堪,则曰:“某寇将至。”乃沟公宫,曰:“秦将袭我。”民惧而溃,秦遂取梁。

  

  

  !僖公二十年

  【经】二十年春,新作南门。夏,郜子来朝。五月乙巳,西宫灾。郑人入滑。

  秋,齐人、狄人盟于邢。冬,楚人伐随。

  

  【传】二十年春,新作南门。书,不时也。凡启塞从时。

  滑人叛郑而服于卫。夏,郑公子士、洩堵寇帅师入滑。

  秋,齐、狄盟于邢,为邢谋卫难也。于是卫方病邢。

  随以汉东诸侯叛楚。冬,楚斗穀於菟帅师伐随,取成而还。君子曰:“随之见伐,不量力也。量力而动,其过鲜矣。善败由己,而由人乎哉?《诗》曰:‘岂不夙夜,谓行多露。’”宋襄公欲合诸侯,臧文仲闻之,曰:“以欲从人,则可;以人从欲,鲜济。”

  

  

  !僖公二十一年

  【经】二十有一年春,狄侵卫。宋人、齐人、楚人盟于鹿上。夏,大旱。秋,宋公、楚子、陈侯、蔡侯、郑伯、许男、曹伯会于盂。执宋公以伐宋。冬,公伐邾。楚人使宜申来献捷。十有二月癸丑,公会诸侯盟于薄。释宋公。

  

  【传】二十一年春,宋人为鹿上之盟,以求诸侯于楚。楚人许之。公子目夷曰:“小国争盟,祸也。宋其亡乎,幸而后败。”

  夏,大旱。公欲焚巫兀。臧文仲曰:“非旱备也。修城郭,贬食省用,务穑劝分,此其务也。巫兀何为?天欲杀之,则如勿生;若能为旱,焚之滋甚。”公从之。是岁也,饥而不害。

  秋,诸侯会宋公于盂。子鱼曰:“祸其在此乎!君欲已甚,其何以堪之?”于是楚执宋公以伐宋。

  冬,会于薄以释之。子鱼曰:“祸犹未也,未足以惩君。”

  任、宿、须句、颛臾,风姓也。实司大皞与有济之祀,以服事诸夏。邾人灭须句,须句子来奔,因成风也。成风为之言于公曰:“崇明祀,保小寡,周礼也;蛮夷猾夏,周祸也。若封须句,是崇皞、济而修祀,纾祸也。”

  

  

  !僖公二十二年

  【经】二十有二年春,公伐邾,取须句。夏,宋公、卫侯、许男、滕子伐郑。

  秋八月丁未,及邾人战于升陉。冬十有一月己巳朔,宋公及楚人战于泓,宋师败绩。

  

  【传】二十二年春,伐邾,取须句,反其君焉,礼也。

  三月,郑伯如楚。

  夏,宋公伐郑。子鱼曰:“所谓祸在此矣。”

  初,平王之东迁也,辛有适伊川,见被发而祭于野者,曰:“不及百年,此其戎乎!其礼先亡矣。”秋,秦、晋迁陆浑之戎于伊川。

  晋大子圉为质于秦,将逃归,谓嬴氏曰:“与子归乎?”对曰:“子,晋大子,而辱于秦,子之欲归,不亦宜乎?寡君之使婢子侍执巾栉,以固子也。从子而归,弃君命也。不敢从,亦不敢言。”遂逃归。

  富辰言于王曰:“请召大叔。《诗》曰:‘协比其邻,昏姻孔云。’吾兄弟之不协,焉能怨诸侯之不睦?”王说。王子带自齐复归于京师,王召之也。

  邾人以须句故出师。公卑邾,不设备而御之。臧文仲曰:“国无小,不可易也。无备,虽众不可恃也。《诗》曰:‘战战兢兢,如临深渊,如履薄冰。’又曰:‘敬之敬之,天惟显思,命不易哉!’先王之明德,犹无不难也,无不惧也,况我小国乎!君其无谓邾小。蜂虿有毒,而况国乎?”弗听。

  八月丁未,公及邾师战于升陉,我师败绩。邾人获公胄,县诸鱼门。

  楚人伐宋以救郑。宋公将战,大司马固谏曰:“天之弃商久矣,君将兴之,弗可赦也已。”弗听,冬十一月己巳朔,宋公及楚人战于泓。宋人既成列,楚人未既济。司马曰:“彼众我寡,及其未既济也请击之。”公曰:“不可。”既济而未成列,又以告。

  公曰:“未可。”既陈而后击之,宋师败绩。公伤股,门官歼焉。

  国人皆咎公。公曰:“君子不重伤,不禽二毛。古之为军也,不以阻隘也。

  寡人虽亡国之余,不鼓不成列。”子鱼曰:“君未知战。勍敌之人隘而不列,天赞我也。阻而鼓之,不亦可乎?犹有惧焉。且今之勍者,皆吾敌也。虽及胡耇,获则取之,何有于二毛?明耻教战,求杀敌也,伤未及死,如何勿重?若爱重伤,则如勿伤;爱其二毛,则如服焉。三军以利用也,金鼓以声气也。利而用之,阻隘可也;声盛致志,鼓儳可也。”

  丙子晨,郑文夫人羋氏、姜氏劳楚子于柯泽。楚子使师缙示之俘馘。君子曰:“非礼也。妇人送迎不出门,见兄弟不逾阈,戎事不迩女器。”

  丁丑,楚子入飨于郑,九献,庭实旅百,加笾豆六品。飨毕,夜出,文羋送于军,取郑二姬以归。叔詹曰:“楚王其不没乎!为礼卒于无别,无别不可谓礼,将何以没?”诸侯是以知其不遂霸也。

  

  

  !僖公二十三年

  【经】二十有三年春,齐侯伐宋,围緍。夏五月庚寅,宋公兹父卒。秋,楚人伐陈。冬十有一月,杞子卒。

  

  【传】二十三年春,齐侯伐宋,围缗,以讨其不与盟于齐也。

  夏五月,宋襄公卒,伤于泓故也。

  秋,楚成得臣帅师伐陈,讨其贰于宋也。遂取焦、夷,城顿而还。子文以为之功,使为令尹。叔伯曰:“子若国何?”对曰:“吾以靖国也。夫有大功而无贵仕,其人能靖者与有几?”九月,晋惠公卒。怀公命无从亡人。期,期而不至,无赦。狐突之子毛及偃从重耳在秦,弗召。冬,怀公执狐突曰:“子来则免。”对曰:“子之能仕,父教之忠,古之制也。策名委质,贰乃辟也。今臣之子,名在重耳,有年数矣。若又召之,教之贰也。父教子贰,何以事君?刑之不滥,君之明也,臣之愿也。淫刑以逞,谁则无罪?臣闻命矣。”乃杀之。

  卜偃称疾不出,曰:“《周书》有之:‘乃大明服。’己则不明而杀人以逞,不亦难乎?民不见德而唯戮是闻,其何后之有?”十一月,杞成公卒。书曰“子”,杞,夷也。不书名,未同盟也。凡诸侯同盟,死则赴以名,礼也。赴以名,则亦书之,不然则否,辟不敏也。

  晋公子重耳之及于难也,晋人伐诸蒲城。蒲城人欲战。重耳不可,曰:“保君父之命而享其生禄,于是乎得人。有人而校,罪莫大焉。吾其奔也。”遂奔狄。

  从者狐偃、赵衰、颠颉、魏武子、司空季子。狄人伐廧咎如,获其二女:叔隗、季隗,纳诸公子。公子取季隗,生伯儵、叔刘,以叔隗妻赵衰,生盾。将适齐,谓季隗曰:“待我二十五年,不来而后嫁。”对曰:“我二十五年矣,又如是而嫁,则就木焉。请待子。”处狄十二年而行。

  过卫。卫文公不礼焉。出于五鹿,乞食于野人,野人与之块,公子怒,欲鞭之。子犯曰:“天赐也。”稽首,受而载之。

  及齐,齐桓公妻之,有马二十乘,公子安之。从者以为不可。将行,谋于桑下。蚕妾在其上,以告姜氏。姜氏杀之,而谓公子曰:“子有四方之志,其闻之者吾杀之矣。”公子曰:“无之。”姜曰:’行也。怀与安,实败名。”公子不可。姜与子犯谋,醉而遣之。醒,以戈逐子犯。

  及曹,曹共公闻其骈胁,欲观其裸。浴,薄而观之。僖负羁之妻曰:“吾观晋公子之从者,皆足以相国。若以相,夫子必反其国。反其国,必得志于诸侯。

  得志于诸侯而诛无礼,曹其首也。子盍蚤自贰焉。”乃馈盘飧,置璧焉。公子受飧反璧。

  及宋,宋襄公赠之以马二十乘。

  及郑,郑文公亦不礼焉。叔詹谏曰:“臣闻天之所启,人弗及也。晋公子有三焉,天其或者将建诸,君其礼焉。男女同姓,其生不蕃。晋公子,姬出也,而至于今,一也。离外之患,而天不靖晋国,殆将启之,二也。有三士足以上人而从之,三也。晋、郑同侪,其过子弟,固将礼焉,况天之所启乎?”弗听。

  及楚,楚之飨之,曰:“公子若反晋国,则何以报不谷?”对曰:“子女玉帛则君有之,羽毛齿革则君地生焉。其波及晋国者,君之余也,其何以报君?”曰:“虽然,何以报我?”对曰:“若以君之灵,得反晋国,晋、楚治兵,遇于中原,其辟君三舍。若不获命,其左执鞭弭、右属櫜鞬,以与君周旋。”子玉请杀之。楚子曰:“晋公子广而俭,文而有礼。其从者肃而宽,忠而能力。晋侯无亲,外内恶之。吾闻姬姓,唐叔之后,其后衰者也,其将由晋公子乎。天将兴之,谁能废之。违天必有大咎。”乃送诸秦。秦伯纳女五人,怀嬴与焉。奉匜沃盥,既而挥之。怒曰:“秦、晋匹也,何以卑我!”公子惧,降服而囚。

  他日,公享之。子犯曰:“吾不如衰之文也。请使衰从。公子赋《河水》,公赋《六月》。赵衰曰:“重耳拜赐。”公子降,拜,稽首,公降一级而辞焉。

  衰曰:“君称所以佐天子者命重耳,重耳敢不拜。”

  

  

  !僖公二十四年

  【经】二十有四年春王正月。夏,狄伐郑。秋七月。冬,天王出居于郑。晋侯夷吾卒。

  

  【传】二十四年春,王正月,秦伯纳之,不书,不告入也。

  及河,子犯以璧授公子,曰:“臣负羁绁从君巡于天下,臣之罪甚多矣。臣犹知之,而况君乎?请由此亡。”公子曰:“所不与舅氏同心者,有如白水。”

  投其璧于河。济河,围令狐,入桑泉,取臼衰。二月甲午,晋师军于庐柳。秦伯使公子絷如晋师,师退,军于郇。辛丑,狐偃及秦、晋之大夫盟于郇。壬寅,公子入于晋师。丙午,入于曲沃。丁未,朝于武宫。戊申,使杀怀公于高梁。不书,亦不告也。吕、郤畏逼,将焚公宫而弑晋侯。寺人披请见,公使让之,且辞焉,曰:“蒲城之役,君命一宿,女即至。其后余从狄君以田渭滨,女为惠公来求杀余,命女三宿,女中宿至。虽有君命,何其速也。夫祛犹在,女其行乎。”对曰:“臣谓君之入也,其知之矣。若犹未也,又将及难。君命无二,古之制也。除君之恶,唯力是视。蒲人、狄人,余何有焉。今君即位,其无蒲、狄乎?齐桓公置射钩而使管仲相,君若易之,何辱命焉?行者甚众,岂唯刑臣。”公见之,以难告。三月,晋侯潜会秦伯于王城。己丑晦,公宫火,瑕甥、郤芮不获公,乃如河上,秦伯诱而杀之。晋侯逆夫人嬴氏以归。秦伯送卫于晋三千人,实纪纲之仆。

  初,晋侯之竖头须,守藏者也。其出也,窃藏以逃,尽用以求纳之。及入,求见,公辞焉以沐。谓仆人曰:“沐则心覆,心覆则图反,宜吾不得见也。居者为社稷之守,行者为羁绁之仆,其亦可也,何必罪居者?国君而仇匹夫,惧者甚众矣。”仆人以告,公遽见之。

  狄人归季隗于晋而请其二子。文公妻赵衰,生原同、屏括、搂婴。赵姬请逆盾与其母,子余辞。姬曰:“得宠而忘旧,何以使人?必逆之!”固请,许之,来,以盾为才,固请于公以为嫡子,而使其三子下之,以叔隗为内子而己下之。

  晋侯赏从亡者,介之推不言禄,禄亦弗及。推曰“献公之子九人,唯君在矣。

  惠、怀无亲,外内弃之。天未绝晋,必将有主。主晋祀者,非君而谁?天实置之,而二三子以为己力,不亦诬乎?窃人之财,犹谓之盗,况贪天之功以为己力乎?下义其罪,上赏其奸,上下相蒙,难与处矣!”其母曰:“盍亦求之,以死谁怼?”对曰:“尤而效之,罪又甚焉,且出怨言,不食其食。”其母曰:“亦使知之若何?”对曰:“言,身之文也。身将隐,焉用文之?是求显也。”其母曰:“能如是乎?与女偕隐。”遂隐而死。晋侯求之,不获,以绵上为之田,曰:“以志吾过,且旌善人。”

  郑之入滑也,滑人听命。师还,又即卫。郑公子士、泄堵俞弥帅师伐滑。王使伯服、游孙伯如郑请滑。郑伯怨惠王之入而不与厉公爵也,又怨襄王之与卫、滑也,故不听王命而执二子。王怒,将以狄伐郑。富辰谏曰:“不可。臣闻之,大上以德抚民,其次亲亲以相及也。昔周公吊二叔之不咸,故封建亲戚以蕃屏周。

  管蔡郕霍,鲁卫毛聃,郜雍曹滕,毕原酆郇,文之昭也。邘晋应韩,武之穆也。凡蒋刑茅胙祭,周公之胤也。召穆公思周德之不类,故纠合宗族于成周而作诗,曰:‘常棣之华,鄂不<革韦>々,凡今之人,莫如兄弟。’其四章曰:‘兄弟阋于墙,外御其侮。’如是,则兄弟虽有小忿,不废懿亲。今天子不忍小忿以弃郑亲,其若之何?庸勋亲亲,暱近尊贤,德之大者也。即聋从昧,与顽用嚚,奸之大者也。弃德崇奸,祸之大者也。郑有平、惠之勋,又有厉、宣之亲,弃嬖宠而用三良,于诸姬为近,四德具矣。耳不听五声之和为聋,目不别五色之章为昧,心不则德义之经为顽,口不道忠信之言为嚚,狄皆则之,四奸具矣。周之有懿德也,犹曰‘莫如兄弟’,故封建之。其怀柔天下也,犹惧有外侮,扞御侮者莫如亲亲,故以亲屏周。召穆公亦云。今周德既衰,于是乎又渝周、召以从诸奸,无乃不可乎?民未忘祸,王又兴之,其若文、武何?”王弗听,使颓叔、桃子出狄师。夏,狄伐郑,取栎。

  王德狄人,将以其女为后。富辰谏曰:“不可。臣闻之曰:‘报者倦矣,施者未厌。’狄固贪惏,王又启之,女德无极,妇怨无终,狄必为患。”王又弗听。

  初,甘昭公有宠于惠后,惠后将立之,未及而卒。昭公奔齐,王复之,又通于隗氏。王替隗氏。颓叔、桃子曰:“我实使狄,狄其怨我。”遂奉大叔,以狄师攻王。王御士将御之。王曰:“先后其谓我何?宁使诸侯图之。王遂出。及坎欿,国人纳之。

  秋,颓叔、桃子奉大叔,以狄师伐周,大败周师,获周公忌父、原伯、毛伯、富辰。王出适郑,处于汜。大叔以隗氏居于温。

  郑子华之弟子臧出奔宋,好聚鹬冠。郑伯闻而恶之,使盗诱之。八月,盗杀之于陈、宋之间。君子曰:“服之不衷,身之灾也。《诗》曰:‘彼己之子,不称其服。’子臧之服,不称也夫。《诗》曰,‘自诒伊戚’,其子臧之谓矣。

  《夏书》曰,‘地平天成’,称也。”

  宋及楚平。宋成公如楚,还入于郑。郑伯将享之,问礼于皇武子。对曰:“宋,先代之后也,于周为客,天子有事膰焉,有丧拜焉,丰厚可也。”郑伯从之,享宋公有加,礼也。

  冬,王使来告难曰:“不谷不德,得罪于母弟之宠子带,鄙在郑地汜,敢告叔父。”臧文仲对曰:“天子蒙尘于外,敢不奔问官守。”王使简师父告于晋,使左鄢父告于秦。天子无出,书曰“天王出居于郑”,辟母弟之难也。天子凶服降名,礼也。郑伯与孔将鉏、石甲父、侯宣多省视官具于汜,而后听其私政,礼也。

  卫人将伐邢,礼至曰:“不得其守,国不可得也。我请昆弟仕焉。”乃往,得仕。

  

  

  !僖公二十五年

  【经】二十有五年春王正月,丙午,卫侯燬灭邢。夏四月癸酉,卫侯燬卒。宋荡伯姬来逆妇。宋杀其大夫。秋,楚人围陈,纳顿子于顿。葬卫文公。冬十有二月癸亥,公会卫子、莒庆盟于洮。

  

  【传】二十五年春,卫人伐邢,二礼从国子巡城,掖以赴外,杀之。正月丙午,卫侯燬灭邢,同姓也,故名。礼至为铭曰:“余掖杀国子,莫余敢止。”

  秦伯师于河上,将纳王。狐偃言于晋侯曰:“求诸侯,莫如勤王。诸侯信之,且大义也。继文之业而信宣于诸侯,今为可矣。”使卜偃卜之,曰:“吉。遇黄帝战于阪泉之兆。”公曰:“吾不堪也。”对曰:“周礼未改。今之王,古之帝也。”公曰:“筮之。”筮之,遇《大有》ⅵⅰ之《睽》ⅵⅷ,曰:“吉。遇‘公用享于天子’之卦也。战克而王飨,吉孰大焉,且是卦也,天为泽以当日,天子降心以逆公,不亦可乎?《大有》去《睽》而复,亦其所也。”晋侯辞秦师而下。三月甲辰,次于阳樊。右师围温,左师逆王。夏四月丁巳,王入于王城,取大叔于温,杀之于隰城。

  戊午,晋侯朝王,王飨醴,命之宥。请隧,弗许,曰:“王章也。未有代德而有二王,亦叔父之所恶也。”与之阳樊、温、原、欑茅之田。晋于是始启南阳。

  阳樊不服,围之。苍葛呼曰:“德以柔中国,刑以威四夷,宜吾不敢服也。

  此谁非王之亲姻,其俘之也!”乃出其民。

  秋,秦、晋伐鄀。楚斗克、屈御寇以申、息之师戍商密。秦人过析隈,入而系舆人以围商密,昏而傅焉。宵,坎血加书,伪与子仪、子边盟者。商密人惧曰:“秦取析矣,戍人反矣。”乃降秦师。囚申公子仪、息公子边以归。楚令尹子玉追秦师,弗及,遂围陈,纳顿子于顿。

  冬,晋侯围原,命三日之粮。原不降,命去之。谍出,曰:“原将降矣。”

  军吏曰:“请待之。”公曰:“信,国之宝也,民之所庇也,得原失信,何以庇之?所亡滋多。”退一舍而原降。迁原伯贯于冀。赵衰为原大夫,狐溱为温大夫。

  卫人平莒于我,十二月,盟于洮,修卫文公之好,且及莒平也。

  晋侯问原守于寺人勃鞮,对曰:“昔赵衰以壶飱从径,馁而弗食。”故使处原。

  

  

  !僖公二十六年

  【经】二十有六年春王正月,己未,公会莒子、卫宁速盟于向。齐人侵我西鄙,公追齐师,至酅,不及。夏,齐人伐我北鄙。卫人伐齐。公子遂如楚乞师。

  秋,楚人灭夔,以夔子归。冬,楚人伐宋,围緍。公以楚师伐齐,取谷。公至自伐齐。

  

  【传】二十六年春,王正月,公会莒兹公、宁庄子盟于向,寻洮之盟也。

  齐师侵我西鄙,讨是二盟也。夏,齐孝公伐我北鄙。卫人伐齐,洮之盟故也。公使展喜犒师,使受命于展禽。

  齐侯未入竟,展喜从之,曰:“寡君闻君亲举玉趾,将辱于敝邑,使下臣犒执事。”齐侯曰:“鲁人恐乎?”对曰:“小人恐矣,君子则否。”齐侯曰:“室如县罄,野无青草,何恃而不恐?”对曰:“恃先王之命。昔周公、大公股肱周室,夹辅成王。成王劳之而赐之盟,曰:‘世世子孙,无相害也。’载在盟府,大师职之。桓公是以纠合诸侯而谋其不协,弥缝其阙而匡救其灾,昭旧职也。

  及君即位,诸侯之望曰:‘其率桓之功。’我敝邑用不敢保聚,曰:‘岂其嗣世九年而弃命废职,其若先君何?’君必不然。恃此以不恐。”齐侯乃还。

  东门襄仲、臧文仲如楚乞师,臧孙见子玉而道之伐齐、宋,以其不臣也。

  夔子不祀祝融与鬻熊,楚人让之,对曰:“我先王熊挚有疾,鬼神弗赦而自窜于夔。吾是以失楚,又何祀焉?”秋,楚成得臣、斗宜申帅师灭夔,以夔子归。

  宋以其善于晋侯也,叛楚即晋。冬,楚令尹子玉、司马子西帅师伐宋,围缗。

  公以楚师伐齐,取谷。凡师能左右之曰以。置桓公子雍于谷,易牙奉之以为鲁援。楚申公叔侯戍之。桓公之子七人,为七大夫于楚。

  

  

  !僖公二十七年

  【经】二十有七年春,杞子来朝。夏六月庚寅,齐侯昭卒。秋八月乙未,葬齐孝公。乙巳,公子遂帅师入杞。冬,楚人、陈侯、蔡侯、郑伯、许男围宋。十有二月甲戌,公会诸侯,盟于宋。

  

  【传】二十七年春,杞桓公来朝,用夷礼,故曰子。公卑杞,杞不共也。

  夏,齐孝公卒。有齐怨,不废丧纪,礼也。

  秋,入杞,责无礼也。

  楚子将围宋,使子文治兵于睽,终朝而毕,不戮一人。子玉复治兵于蒍,终日而毕,鞭七人,贯三人耳。国老皆贺子文,子文饮之酒。蒍贾尚幼,后至,不贺。子文问之,对曰:“不知所贺。子之传政于子玉,曰:‘以靖国也。’靖诸内而败诸外,所获几何?子玉之败,子之举也。举以败国,将何贺焉?子玉刚而无礼,不可以治民。过三百乘,其不能以入矣。苟入而贺,何后之有?”冬,楚子及诸侯围宋,宋公孙固如晋告急。先轸曰:“报施救患,取威定霸,于是乎在矣。”狐偃曰:“楚始得曹而新昏于卫,若伐曹、卫,楚必救之,则齐、宋免矣。”于是乎蒐于被庐,作三军。谋元帅。赵衰曰:“郤縠可。臣亟闻其言矣,说礼乐而敦《诗》、《书》。《诗》、《书》,义之府也。礼乐,德之则也。

  德义,利之本也。《夏书》曰:‘赋纳以言,明试以功,车服以庸。’君其试之。”

  及使郤縠将中军,郤溱佐之;使狐偃将上军,让于狐毛,而佐之;命赵衰为卿,让于栾枝、先轸。使栾枝将下军,先轸佐之。荀林父御戎,魏准为右。

  晋侯始入而教其民,二年,欲用之。子犯曰:“民未知义,未安其居。”于是乎出定襄王,入务利民,民怀生矣,将用之。子犯曰:“民未知信,未宣其用。”

  于是乎伐原以示之信。民易资者不求丰焉,明征其辞。公曰:“可矣乎?”子犯曰:“民未知礼,未生其共。”于是乎大蒐以示之礼,作执秩以正其官,民听不惑而后用之。出谷戍,释宋围,一战而霸,文之教也。

  

  

  !僖公二十八年

  【经】二十有八年春,晋侯侵曹,晋侯伐卫。公子买戍卫,不卒戍,刺之。

  楚人救卫。三月丙午,晋侯入曹,执曹伯。畀宋人。夏四月己巳,晋侯、齐师、宋师、秦师及楚人战于城濮,楚师败绩。楚杀其大夫得臣。卫侯出奔楚。五月癸丑,公会晋侯、齐侯、宋公、蔡侯、郑伯、卫子、莒子,盟于践土。陈侯如会。

  公朝于王所。六月,卫侯郑自楚复归于卫。卫元咺出奔晋。陈侯款卒。秋,杞伯姬来。公子遂如齐。冬,公会晋侯、齐侯、宋公、蔡侯、郑伯、陈子、莒子、邾人、秦人于温。天王狩于河阳。壬申,公朝于王所。晋人执卫侯,归之于京师。

  卫元咺自晋复归于卫。诸侯遂围许。曹伯襄复归于曹,遂会诸侯围许。

  

  【传】二十八年春,晋侯将伐曹,假道于卫,卫人弗许。还,自南河济。侵曹伐卫。正月戊申,取五鹿。二月,晋郤縠卒。原轸将中军,胥臣佐下军,上德也。晋侯、齐侯盟于敛盂。卫侯请盟,晋人弗许。卫侯欲与楚,国人不欲,故出其君以说于晋。卫侯出居于襄牛。

  公子买戍卫,楚人救卫,不克。公惧于晋,杀子丛以说焉。谓楚人曰:“不卒戍也。”

  晋侯围曹,门焉,多死,曹人尸诸城上,晋侯患之,听舆人之谋曰:“称舍于墓。”师迁焉,曹人凶惧,为其所得者棺而出之,因其凶也而攻之。三月丙午,入曹。数之,以其不用僖负羁而乘轩者三百人也。且曰:“献状。”令无入僖负羁之宫而免其族,报施也。魏犨、颠颉怒曰:“劳之不图,报于何有!”蓺僖负羁氏。魏犨伤于胸,公欲杀之而爱其材,使问,且视之。病,将杀之。魏犨束胸见使者曰:“以君之灵,不有宁也。”距跃三百,曲踊三百。乃舍之。杀颠颉以徇于师,立舟之侨以为戎右。

  宋人使门尹般如晋师告急。公曰:“宋人告急,舍之则绝,告楚不许。我欲战矣,齐、秦未可,若之何?”先轸曰:“使宋舍我而赂齐、秦,藉之告楚。我执曹君而分曹、卫之田以赐宋人。楚爱曹、卫,必不许也。喜赂怒顽,能无战乎?”公说,执曹伯,分曹、卫之田以畀宋人。

  楚子入居于申,使申叔去谷,使子玉去宋,曰:“无从晋师。晋侯在外十九年矣,而果得晋国。险阻艰难,备尝之矣;民之情伪,尽知之矣。天假之年,而除其害。天之所置,其可废乎?《军志》曰:‘允当则归。’又曰:‘知难而退。’又曰:‘有德不可敌。’此三志者,晋之谓矣。”子玉使伯棼请战,曰:“非敢必有功也,愿以间执谗慝之口。”王怒,少与之师,唯西广、东宫与若敖之六卒实从之。

  子玉使宛春告于晋师曰:“请复卫侯而封曹,臣亦释宋之围。”子犯曰:“子玉无礼哉!君取一,臣取二,不可失矣。”先轸曰:“子与之。定人之谓礼,楚一言而定三国,我一言而亡之。我则无礼,何以战乎?不许楚言,是弃宋也。

  救而弃之,谓诸侯何?楚有三施,我有三怨,怨仇已多,将何以战?不如私许复曹、卫以携之,执宛春以怒楚,既战而后图之。”公说,乃拘宛春于卫,且私许复曹、卫。曹、卫告绝于楚。

  子玉怒,从晋师。晋师退。军吏曰:“以君辟臣,辱也。且楚师老矣,何故退?”子犯曰:“师直为壮,曲为老。岂在久乎?微楚之惠不及此,退三舍辟之,所以报也。背惠食言,以亢其仇,我曲楚直。其众素饱,不可谓老。我退而楚还,我将何求?若其不还,君退臣犯,曲在彼矣。”退三舍。楚众欲止,子玉不可。

  夏四月戊辰,晋侯、宋公、齐国归父、崔夭、秦小子慭次于城濮。楚师背酅而舍,晋侯患之,听舆人之诵,曰:“原田每每,舍其旧而新是谋。”公疑焉。

  子犯曰:“战也。战而捷,必得诸侯。若其不捷,表里山河,必无害也。”公曰:“若楚惠何?”栾贞子曰:“汉阳诸姬,楚实尽之,思小惠而忘大耻,不如战也。”

  晋侯梦与楚子搏,楚子伏己而盬其脑,是以惧。子犯曰:“吉。我得天,楚伏其罪,吾且柔之矣。”

  子玉使斗勃请战,曰:“请与君之士戏,君冯轼而观之,得臣与寓目焉。”

  晋侯使栾枝对曰:“寡君闻命矣。楚君之惠未之敢忘,是以在此。为大夫退,其敢当君乎?既不获命矣,敢烦大夫谓二三子,戒尔车乘,敬尔君事,诘朝将见。”

  晋车七百乘,<革显>、靷、鞅、靽。晋侯登有莘之虚以观师,曰:“少长有礼,其可用也。”遂伐其木以益其兵。己巳,晋师陈于莘北,胥臣以下军之佐当陈、蔡。子玉以若敖六卒将中军,曰:“今日必无晋矣。”子西将左,子上将右。胥臣蒙马以虎皮,先犯陈、蔡。陈、蔡奔,楚右师溃。狐毛设二旆而退之。

  栾枝使舆曳柴而伪遁,楚师驰之。原轸、郤溱以中军公族横击之。狐毛、狐偃以上军夹攻子西,楚左师溃。楚师败绩。子玉收其卒而止,故不败。

  晋师三日馆谷,及癸酉而还。甲午,至于衡雍,作王宫于践土。

  乡役之三月,郑伯如楚致其师,为楚师既败而惧,使子人九行成于晋。晋栾枝入盟郑伯。五月丙午,晋侯及郑伯盟于衡雍。丁未,献楚俘于王,驷介百乘,徒兵千。郑伯傅王,用平礼也。己酉,王享醴,命晋侯宥。王命尹氏及王子虎、内史叔兴父策命晋侯为侯伯,赐之大辂之服,戎辂之服,彤弓一,彤矢百,玈弓矢千,秬鬯一卣,虎贲三百人。曰:“王谓叔父,敬服王命,以绥四国。纠逖王慝。”晋侯三辞,从命。曰:“重耳敢再拜稽首,奉扬天子之丕显休命。”受策以出,出入三觐。

  卫侯闻楚师败,惧,出奔楚,遂适陈,使元咺奉叔武以受盟。癸亥,王子虎盟诸侯于王庭,要言曰:“皆奖王室,无相害也。有渝此盟,明神殛之,俾队其师,无克祚国,及而玄孙,无有老幼。”君子谓是盟也信,谓晋于是役也能以德攻。

  初,楚子玉自为琼弁玉缨,未之服也。先战,梦河神谓己曰:“畀余,余赐女孟诸之麋。”弗致也。大心与子西使荣黄谏,弗听。荣季曰:“死而利国。犹或为之,况琼玉乎?是粪土也,而可以济师,将何爱焉?”弗听。出,告二子曰:“非神败令尹,令尹其不勤民,实自败也。”既败,王使谓之曰:“大夫若入,其若申、息之老何?”子西、孙伯曰:“得臣将死,二臣止之曰:‘君其将以为戮。’”及连谷而死。晋侯闻之而后喜可知也,曰:“莫余毒也已!蒍吕臣实为令尹,奉己而已,不在民矣。”

  或诉元咺于卫侯曰:“立叔武矣。”其子角从公,公使杀之。咺不废命,奉夷叔以入守。

  六月,晋人复卫侯。宁武子与卫人盟于宛濮,曰:“天祸卫国,君臣不协,以及此忧也。今天诱其衷,使皆降心以相从也。不有居者,谁守社稷?不有行者,谁扞牧圉?不协之故,用昭乞盟于尔大神以诱天衷。自今日以往,既盟之后,行者无保其力,居者无惧其罪。有渝此盟,以相及也。明神先君,是纠是殛。”国人闻此盟也,而后不贰。卫侯先期入,宁子先,长佯守门,以为使也,与之乘而入。公子颛犬、华仲前驱。叔武将沐,闻君至,喜,捉发走出,前驱射而杀之。

  公知其无罪也,枕之股而哭之。颛犬走出,公使杀之。元咺出奔晋。

  城濮之战,晋中军风于泽,亡大旆之左旃。祁瞒奸命,司马杀之,以徇于诸侯,使茅茷代之。师还。壬午,济河。舟之侨先归,士会摄右。秋七月丙申,振旅,恺以入于晋。献俘授馘,饮至大赏,征会讨贰。杀舟之侨以徇于国,民于是大服。

  君子谓:“文公其能刑矣,三罪而民服。《诗》云:‘惠此中国,以绥四方。’不失赏刑之谓也。”

  冬,会于温,讨不服也。

  卫侯与元咺讼,宁武子为辅,鍼庄子为坐,士荣为大士。卫侯不胜。杀士荣,刖鍼庄子,谓宁俞忠而免之。执卫侯,归之于京师,置诸深室。宁子职纳橐饘焉。元咺归于卫,立公子瑕。

  是会也,晋侯召王,以诸侯见,且使王狩。仲尼曰:“以臣召君,不可以训。”

  故书曰:“天王狩于河阳。”言非其地也,且明德也。

  壬申,公朝于王所。

  丁丑,诸侯围许。

  晋侯有疾,曹伯之竖侯孺货筮史,使曰:“以曹为解。齐桓公为会而封异姓,今君为会而灭同姓。曹叔振铎,文之昭也。先君唐叔,武之穆也。且合诸侯而灭兄弟,非礼也。与卫偕命,而不与偕复,非信也。同罪异罚,非刑也。礼以行义,信以守礼,刑以正邪,舍此三者,君将若之何?”公说,复曹伯,遂会诸侯于许。

  晋侯作三行以御狄,荀林父将中行,屠击将右行,先蔑将左行。

  

  

  !僖公二十九年

  【经】二十有九年春,介葛卢来。公至自围许。夏六月,会王人、晋人、宋人、齐人、陈人、蔡人、秦人盟于翟泉。秋,大雨雹。冬,介葛卢来。

  

  【传】二十九年春,葛卢来朝,舍于昌衍之上。公在会,馈之刍米,礼也。

  夏,公会王子虎、晋狐偃、宋公孙固、齐国归父、陈辕涛涂、秦小子慭,盟于翟泉,寻践土之盟,且谋伐郑也。卿不书,罪之也。在礼,卿不会公、侯,会伯、子、男可也。

  秋,大雨雹,为灾也。

  冬,介葛卢来,以未见公,故复来朝,礼之,加燕好。

  介葛卢闻牛鸣,曰:“是生三犠,皆用之矣,其音云。”问之而信。

  

  

  !僖公三十年

  【经】三十年春王正月。夏,狄侵齐。秋,卫杀其大夫元咺及公子瑕。卫侯郑归于卫。晋人、秦人围郑。介人侵萧。冬,天王使宰周公来聘。公子遂如京师。遂如晋。

  

  【传】三十年春,晋人侵郑,以观其可攻与否。狄间晋之有郑虞也,夏,狄侵齐。

  晋侯使医衍鸩卫侯。宁俞货医,使薄其鸩,不死。公为之请,纳玉于王与晋侯。皆十瑴。王许之。秋,乃释卫侯。卫侯使赂周颛、冶廑,曰:“苟能纳我,吾使尔为卿。”周、冶杀元咺及子适、子仪。公入祀先君。周、冶既服将命,周颛先入,及门,遇疾而死。冶廑辞卿。

  九月甲午,晋侯、秦伯围郑,以其无礼于晋,且贰于楚也。晋军函陵,秦军汜南。佚之狐言于郑伯曰:“国危矣,若使烛之武见秦君,师必退。”公从之。

  辞曰:“臣之壮也,犹不如人,今老矣,无能为也已。”公曰:“吾不能早用子,今急而求子,是寡人之过也。然郑亡,子亦有不利焉。”许之,夜缒而出,见秦伯,曰:“秦、晋围郑,郑既知亡矣。若亡郑而有益于君,敢以烦执事。越国以鄙远,君知其难也,焉用亡郑以陪邻。邻之厚,君之薄也。若舍郑以为东道主,行李之往来,共其乏困,君亦无所害。且君尝为晋君赐矣,许君焦、瑕,朝济而夕设版焉,君之所知也。夫晋何厌之有?既东封郑,又欲肆其西封,不阙秦,将焉取之?阙秦以利晋,唯君图之。”秦伯说,与郑人盟,使杞子、逢孙、扬孙戍之,乃还。

  子犯请击之,公曰:“不可。微夫人力不及此。因人之力而敝之,不仁。失其所与,不知。以乱易整,不武。吾其还也。”亦去之。

  初,郑公子兰出奔晋,从于晋侯。伐郑,请无与围郑。许之,使待命于东。

  郑石甲父、侯宣多逆以为大子,以求成于晋,晋人许之。

  冬,王使周公阅来聘,飨有昌歜、白、黑、形盐。辞曰:“国君,文足昭也,武可畏也,则有备物之飨以象其德。荐五味,羞嘉谷,盐虎形,以献其功。

  吾何以堪之?”东门襄仲将聘于周,遂初聘于晋。

  

  

  !僖公三十一年

  【经】三十有一年春,取济西田。公子遂如晋。夏四月,四卜郊,不从,乃免牲。犹三望。秋七月。冬,杞伯姬来求妇。狄围卫。十有二月,卫迁于帝丘。

  

  【传】三十一年春,取济西田,分曹地也。使臧文仲往,宿于重馆。重馆人告曰:“晋新得诸侯,必亲其共,不速行,将无及也。”从之,分曹地,自洮以南,东傅于济,尽曹地也。

  襄仲如晋,拜曹田也。

  夏四月,四卜郊,不从,乃免牲,非礼也。犹三望,亦非礼也。礼不卜常祀,而卜其牲、日,牛卜日曰牲。牲成而卜郊,上怠慢也。望,郊之细也。不郊,亦无望可也。

  秋,晋搜于清原,作五军御狄。赵衰为卿。

  冬,狄围卫,卫迁于帝丘。卜曰三百年。卫成公梦康叔曰:“相夺予享。”

  公命祀相。宁武子不可,曰:“鬼神非其族类,不歆其祀。杞、鄫何事?相之不享于此。久矣,非卫之罪也,不可以间成王、周公之命祀。请改祀命。”

  郑泄驾恶公子瑕,郑伯亦恶之,故公子瑕出奔楚。

  

  

  !僖公三十二年

  【经】三十有二年春王正月。夏四月己丑,郑伯捷卒。卫人侵狄。秋,卫人及狄盟。冬十有二月己卯,晋侯重耳卒。

  

  【传】三十二年春,楚斗章请平于晋,晋阳处父报之。晋、楚始通。

  夏,狄有乱。卫人侵狄,狄请平焉。秋,卫人及狄盟。

  冬,晋文公卒。庚辰,将殡于曲沃,出绛,柩有声如牛。卜偃使大夫拜。曰:“君命大事。将有西师过轶我,击之,必大捷焉。”杞子自郑使告于秦,曰:“郑人使我掌其北门之管,若潜师以来,国可得也。”穆公访诸蹇叔,蹇叔曰:“劳师以袭远,非所闻也。师劳力竭,远主备之,无乃不可乎!师之所为,郑必知之。勤而无所,必有悖心。且行千里,其谁不知?”公辞焉。召孟明、西乞、白乙,使出师于东门之外。蹇叔哭之,曰:“孟子,吾见师之出而不见其入也。”

  公使谓之曰:“尔何知?中寿,尔墓之木拱矣。”蹇叔之子与师,哭而送之,曰:“晋人御师必于殽。殽有二陵焉。其南陵,夏后皋之墓也;其北陵,文王之所辟风雨也。必死是间,余收尔骨焉。”秦师遂东。

  

  

  !僖公三十三年

  【经】三十有三年春王二月,秦人入滑。齐侯使国归父来聘。夏四月辛巳,晋人及姜戎败秦师于殽。癸巳,葬晋文公。狄侵齐。公伐邾,取訾娄。秋,公子遂帅师伐邾。晋人败狄于箕。冬十月,公如齐。十有二月,公至自齐。乙巳,公薨于小寝。陨霜不杀草。李梅实。晋人、陈人、郑人伐许。

  

  【传】三十三年春,秦师过周北门,左右免胄而下。超乘者三百乘。王孙满尚幼,观之,言于王曰:“秦师轻而无礼,必败。轻则寡谋,无礼则脱。入险而脱。又不能谋,能无败乎?”及滑,郑商人弦高将市于周,遇之。以乘韦先,牛十二犒师,曰:“寡君闻吾子将步师出于敝邑,敢犒从者,不腆敝邑,为从者之淹,居则具一日之积,行则备一夕之卫。”且使遽告于郑。郑穆公使视客馆,则束载、厉兵、秣马矣。使皇武子辞焉,曰:“吾子淹久于敝邑,唯是脯资饩牵竭矣。为吾子之将行也,郑之有原圃,犹秦之有具囿也。吾子取其麋鹿以闲敝邑,若何?”杞子奔齐,逢孙、扬孙奔宋。孟明曰:“郑有备矣,不可冀也。

  攻之不克,围之不继,吾其还也。”灭滑而还。

  齐国庄子来聘,自郊劳至于赠贿,礼成而加之以敏。臧文仲言于公曰:“国子为政,齐犹有礼,君其朝焉。臣闻之,服于有礼,社稷之卫也。”

  晋原轸曰:“秦违蹇叔,而以贪勤民,天奉我也。奉不可失,敌不可纵。纵敌患生,违天不祥。必伐秦师。”栾枝曰:“未报秦施而伐其师,其为死君乎?”先轸曰:“秦不哀吾丧而伐吾同姓,秦则无礼,何施之为?吾闻之,一日纵敌,数世之患也。谋及子孙,可谓死君乎?”遂发命,遽兴姜戎。子墨衰绖,梁弘御戎,莱驹为右。

  夏四月辛巳,败秦师于殽,获百里孟明视、西乞术、白乙丙以归,遂墨以葬文公。晋于是始墨。

  文嬴请三帅,曰:“彼实构吾二君,寡君若得而食之,不厌,君何辱讨焉!使归就戮于秦,以逞寡君之志,若何?”公许之,先轸朝。问秦囚。公曰:“夫人请之,吾舍之矣。”先轸怒曰:“武夫力而拘诸原,妇人暂而免诸国。堕军实而长寇仇,亡无日矣。”不顾而唾。公使阳处父追之,及诸河,则在舟中矣。释左骖,以公命赠孟明。孟明稽首曰:“君之惠,不以累臣衅鼓,使归就戮于秦,寡君之以为戮,死且不朽。若从君惠而免之,三年将拜君赐。”

  秦伯素服郊次,乡师而哭曰:“孤违蹇叔以辱二三子,孤之罪也。不替孟明,孤之过也。大夫何罪?且吾不以一眚掩大德。”

  狄侵齐,因晋丧也。

  公伐邾,取訾娄,以报升陉之役。邾人不设备。秋,襄仲复伐邾。

  狄伐晋,及箕。八月戊子,晋侯败狄于箕。郤缺获白狄子。先轸曰:“匹夫逞志于君而无讨,敢不自讨乎?”免胄入狄师,死焉。狄人归其元,面如生。

  初,臼季使过冀,见冀缺耨,其妻馌之。敬,相待如宾。与之归,言诸文公曰:“敬,德之聚也。能敬必有德,德以治民,君请用之。臣闻之,出门如宾,承事如祭,仁之则也。”公曰:“其父有罪,可乎?”对曰:“舜之罪也殛鲧,其举也兴禹。管敬仲,桓之贼也,实相以济。《康诰》曰:‘父不慈,子不祗,兄不友,弟不共,不相及也。’《诗》曰:‘采葑采菲,无以下体。’君取节焉可也。”文公以为下军大夫。反自箕,襄公以三命命先且居将中军,以再命命先茅之县赏胥臣曰:“举郤缺,子之功也。”以一命命郤缺为卿,复与之冀,亦未有军行。

  冬,公如齐,朝,且吊有狄师也。反,薨于小寝,即安也。

  晋、陈、郑伐许,讨其贰于楚也。

  楚令尹子上侵陈、蔡。陈、蔡成,遂伐郑,将纳公子瑕,门于桔柣之门。

  瑕覆于周氏之汪,外仆髡屯禽之以献。文夫人敛而葬之郐城之下。

  晋阳处父侵蔡,楚子上救之,与晋师夹泜而军。阳子患之,使谓子上曰:“吾闻之,文不犯顺,武不违敌。子若欲战,则吾退舍,子济而陈,迟速唯命,不然纾我。老师费财,亦无益也。”乃驾以待。子上欲涉,大孙伯曰:“不可。

  晋人无信,半涉而薄我,悔败何及,不如纾之。”乃退舍。阳子宣言曰:“楚师遁矣。”遂归。楚师亦归。大子商臣谮子上曰:“受晋赂而辟之,楚之耻也,罪莫大焉。”王杀子上。

  葬僖公,缓作主,非礼也。凡君薨,卒哭而祔,祔而作主,特祀于主,烝尝禘于庙。

  系辞

  

  上天尊地卑,乾坤定矣。卑高以陈,贵贱位矣。动静有常,刚柔断矣。方以类聚,物以群分,吉凶生矣。在天成象,在地成形,变化见矣。是故刚柔相摩,八卦相荡,鼓之以雷霆,润之以风雨;日月运行,一寒一暑。乾道成男,坤道成女。

  乾知大始,坤作成物。乾以易知,坤以简能;易则易知,简则易从;易知则有亲,易从则有功;有亲则可久,有功则可大;可久则贤人之德,可大则贤人之业。易简而天下之理得矣。天下之理得,而成位乎其中矣。

  圣人设卦观象,系辞焉而明吉凶,刚柔相推而生变化。是故吉凶者,失得之象也;悔吝者,忧虞之象也;变化者,进退之象也;刚柔者,昼夜之象也。六爻之动,三极之道也。是故君子所居而安者,《易》之序也;所乐而玩者,爻之辞也。是故君子居则观其象而玩其辞,动则观其变而玩其占,是以自天祐之,吉无不利。

  彖者,言乎象者也;爻者,言乎变者也。吉凶者,言乎其失得也;悔吝者,言乎其小疵也。无咎者,善补过者也。是故列贵贱者存乎位,齐小大者存乎卦,辩吉凶者存乎辞,忧悔吝者存乎介,震无咎者存乎悔。是故卦有小大,辞有险易;辞也者,各指其所之。

  《易》与天地准,故能弥纶天地之道。仰以观于天文,俯以察于地理,是故知幽明之故;原始反终,故知死生之说;精气为物,游魂为变,是故知鬼神之情状。与天地相似,故不违;知周乎万物,而道济天下,故不过;旁行而不流,乐天知命,故不忧;安土敦乎仁,故能爱。范围天地之化而不过,曲成万物而不遗,通乎昼夜之道而知,故神无方而《易》无体。

  一阴一阳之谓道,继之者善也,成之者性也。仁者见之谓之仁,知者见之谓之知,百姓日用而不知,故君子之道鲜矣。显诸仁,藏诸用,鼓万物而不与圣人同忧,盛德大业至矣哉!富有之谓大业,日新之谓盛德。生生之谓易,成象之谓乾,效法之谓坤,极数知来之谓占,通变之谓事,阴阳不测之谓神。

  夫《易》广矣大矣,以言乎远则不御,以言乎迩则静而正,以言乎天地之间则备矣。夫乾,其静也专,其动也直,是以大生焉。夫坤,其静也翕,其动也辟,是以广生焉。广大配天地,变通配四时,阴阳之义配日月,易简之善配至德。

  子曰:“《易》,其至矣乎!夫《易》,圣人所以崇德而广业也。知崇礼卑,崇效天,卑法地。天地设位,而《易》行乎其中矣。成性存存,道义之门。”

  圣人有以见天下之赜,而拟诸其形容,象其物宜,是故谓之象。圣人有以见天下之动,而观其会通,以行其典礼,系辞焉以断其吉凶,是故谓之爻,言天下之至赜而不可恶也。言天下之至动而不可乱也。拟之而后言,议之而后动,拟议以成其变化。

  “鸣鹤在阴,其子和之。我有好爵,吾与尔靡之。”子曰:“君子居其室,出其言善,则千里之外应之,况其迩者乎?居其室,出其言不善,则千里之外违之,况其迩者乎?言出乎身,加乎民;行发乎迩,见乎远。言行,君子之枢机。

  枢机之发,荣辱之主也。言行,君子之所以动天地也,可不慎乎!”

  “《同人》:先号咷而后笑。”子曰:“君子之道,或出或处,或默或语。

  二人同心,其利断金。同心之言,其臭如兰。”

  “初六,藉用白茅,无咎。”子曰:“苟错诸地而可矣,藉之用茅,何咎之有?慎之至也。夫茅之为物薄,而用可重也。慎斯术也以往,其无所失矣。”

  “劳谦,君子有终,吉。”子曰:“劳而不伐,有功而不德,厚之至也。语以其功下人者也。德言盛,礼言恭;谦也者,致恭以存其位者也。”

  “亢龙有悔。”子曰:“贵而无位,高而无民,贤人在下位而无辅,是以动而有悔也。”

  “不出户庭,无咎。”子曰:“乱之所生也,则言语以为阶。君不密则失臣,臣不密则失身,几事不密则害成。是以君子慎密而不出也。”

  子曰:“作《易》者,其知盗乎?《易》曰‘负且乘,致寇至。’负也者,小人之事也。乘也者,君子之器也。小人而乘君子之器,盗思夺之矣。上慢下暴,盗思伐之矣。慢藏诲盗,冶容诲淫。《易》曰:‘负且乘,致寇至。’盗之招也。”

  大衍之数五十,其用四十有九。分而为二以象两,挂一以象三,揲之以四以象四时,归奇于扐以象闰;五岁再闰,故再扐而后挂。天数五,地数五。五位相得而各有合,天数二十有五,地数三十,凡天地之数五十有五,此所以成变化而行鬼神也。《乾》之策二百一十有六,《坤》之策百四十有四,凡三百六十,当期之日。二篇之策,万有一千五百二十,当万物之数也。是故四营而成《易》,十有八变而成卦,八卦而小成。引而伸之,触类而长之,天下之能事毕矣。显道神德行,是故可与酬酢,可与祐神矣。子曰:“知变化之道者,其知神之所为乎。”

  《易》有圣人之道四焉:以言者尚其辞,以动者尚其变,以制器者尚其象,以卜筮者尚其占。是以君子将有为也,将有行也,问焉而以言,其受命也如响。

  无有远近幽深,遂知来物。非天下之至精,其孰能与于此。参伍以变,错综其数。

  通其变,遂成天下之文;极其数,遂定天下之象。非天下之至变,其孰能与于此。

  《易》无思也,无为也,寂然不动,感而遂通天下之故。非天下之至神,其孰能与于此。夫《易》,圣人之所以极深而研几也。唯深也,故能通天下之志;唯几也,故能成天下之务;唯神也,故不疾而速,不行而至。子曰:“《易》有圣人之道四焉”者,此之谓也。

  天一,地二;天三,地四;天五,地六;天七,地八;天九,地十。子曰:“夫《易》何为者也?夫《易》开物成务,冒天下之道,如斯而已者也。”是故圣人以通天下之志,以定天下之业,以断天下之疑。是故蓍之德圆而神,卦之德方以知,六爻之义易以贡。圣人以此洗心,退藏于密,吉凶与民同患。神以知来,知以藏往,其孰能与此哉!古之聪明睿知,神武而不杀者夫。是以明于天之道,而察于民之故,是兴神物以前民用。圣人以此斋戒,以神明其德夫。是故阖户谓之坤,辟户谓之乾,一阖一辟谓之变,往来不穷谓之通,见乃谓之象,形乃谓之器,制而用之谓之法,利用出入,民咸用之谓之神。

  是故《易》有大极,是生两仪。两仪生四象。四象生八卦。八卦定吉凶,吉凶生大业。是故法象莫大乎天地;变通莫大乎四时;县象著明莫大乎日月;崇高莫大乎富贵;备物致用,立成器以为天下利,莫大乎圣人探赜索隐,钩深致远,以定天下之吉凶,成天下之亹亹者,莫大乎蓍龟。是故天生神物,圣人则之;天地变化,圣人效之;天垂象,见吉凶,圣人象之;河出图,洛出书,圣人则之。

  《易》有四象,所以示也。系辞焉,所以告也;定之以吉凶,所以断也。

  《易》曰:“自天祐之,吉无不利。”子曰:“祐者,助也。天之所助者,顺也;人之所助者,信也。履信思乎顺,又以尚贤也。是以‘自天祐之,吉无不利’也。”子曰:“书不尽言,言不尽意。”然则圣人之意,其不可见乎?子曰:“圣人立象以尽意,设卦以尽情伪,系辞焉以尽其言。变而通之以尽利,鼓之舞之以尽神。”乾坤,其《易》之缊邪?乾坤成列,而《易》立乎其中矣。乾坤毁,则无以见《易》。《易》不可见,则乾坤或几乎息矣。是故形而上者谓之道,形而下者谓之器。化而裁之谓之变,推而行之谓之通,举而错之天下之民谓之事业。

  是故夫象,圣人有以见天下之赜,而拟诸其形容,象其物宜,是故谓之象。圣人有以见天下之动,而观其会通,以行其典礼,系辞焉以断其吉凶,是故谓之爻。

  极天下之赜者存乎卦,鼓天下之动者存乎辞;化而裁之存乎变;推而行之存乎通;神而明之存乎其人;默而成之,不言而信,存乎德行。

  
  系辞下

  

  八卦成列,象在其中矣;因而重之,爻在其中矣;刚柔相推,变在其中焉;系辞焉而命之,动在其中矣。吉凶悔吝者,生乎动者也;刚柔者,立本者也;变通者,趣时者也。吉凶者,贞胜者也;天地之道,贞观者也;日月之道,贞明者也;天下之动,贞夫一者也。夫乾,确然示人易矣;夫坤,隤然示人简矣。爻也者,效此者也。象也者,像此者也;爻象动乎内,吉凶见乎外,功业见乎变,圣人之情见乎辞。天地之大德曰生,圣人之大宝曰位。何以守位?曰仁。何以聚人?曰财。理财正辞、禁民为非曰义。

  古者包犠氏之王天下也,仰则观象于天,俯则观法于地,观鸟兽之文与地之宜,近取诸身,远取诸物,于是始作八卦,以通神明之德,以类万物之情。作结绳而为网罟,以佃以渔,盖取诸《离》。包犠氏没,神农氏作,斫木为耜,揉木为耒,耒耨之利,以教天下,盖取诸《益》。日中为市,致天下之民,聚天下之货,交易而退,各得其所,盖取诸《噬嗑》。神农氏没,黄帝、尧、舜氏作,通其变,使民不倦,神而化之,使民宜之。《易》穷则变,变则通,通则久。是以“自天祐之,吉无不利”。黄帝、尧、舜垂衣裳而天下治,盖取诸《乾》、《坤》。

  刳木为舟,剡木为楫,舟楫之利,以济不通,致远以利天下,盖取诸《涣》。服牛乘马,引重致远,以利天下,盖取诸《随》。重门击柝,以待暴客,盖取诸《豫》。断木为杵,掘地为臼,杵臼之利,万民以济,盖取诸《小过》。弦木为弧,剡木为矢,弧矢之利,以威天下,盖取诸《睽》。上古穴居而野处,后世圣人易之以宫室,上栋下宇,以待风雨,盖取诸《大壮》。古之葬者,厚衣之以薪,葬之中野,不封不树,丧期无数。后世圣人易之以棺椁,盖取诸《大过》。上古结绳而治,后世圣人易之以书契,百官以治,万民以察,盖取诸《夬》。

  是故《易》者,象也;象也者,像也。彖者,材也;爻也者,效天下之动者也。是故吉凶生而悔吝著也。

  阳卦多阴,阴卦多阳,其故何也?阳卦奇,阴卦耦。其德行何也?阳一君而二民,君子之道也。阴二君而一民,小人之道也。

  《易》曰“憧憧往来,朋从尔思。”子曰:“天下何思何虑?天下同归而殊途,一致而百虑。天下何思何虑?日往则月来,月往则日来,日月相推而明生焉。

  寒往则暑来,暑往则寒来,寒暑相推而岁成焉。往者屈也,来者信也,屈信相感而利生焉。尺蠖之屈,以求信也;龙蛇之蛰,以存身也。精义入神,以致用也;利用安身,以崇德也。过此以往,未之或知也;穷神知化,德之盛也。”

  《易》曰:“困于石,据于蒺藜,入于其宫,不见其妻,凶。”子曰:“非所困而困焉,名必辱。非所据而据焉,身必危。既辱且危,死期将至,妻其可得见耶!”

  《易》曰:“公用射隼于高墉之上,获之,无不利。”子曰:“隼者,禽也;弓矢者,器也;射之者,人也。君子藏器于身,待时而动,何不利之有?动而不括,是以出而有获,语成器而动者也。”

  子曰:“小人不耻不仁,不畏不义,不见利不劝,不威不惩。小惩而大诫,此小人之福也。《易》曰:‘履校灭趾,无咎。’此之谓也。”

  “善不积不足以成名,恶不积不足以灭身。小人以小善为无益而弗为也,以小恶为无伤而弗去也,故恶积而不可掩,罪大而不可解。《易》曰:‘何校灭耳,凶。’”子曰:“危者,安其位者也;亡者,保其存者也;乱者,有其治者也。是故君子安而不忘危,存而不忘亡,治而不忘乱,是以身安而国家可保也。《易》曰:‘其亡其亡,系于苞桑。’”子曰:“德薄而位尊,知小而谋大,力少而任重,鲜不及矣。《易》曰:‘鼎折足,覆公餗,其形渥,凶。’言不胜其任也。”

  子曰:“知几其神乎!君子上交不谄,下交不渎,其知几乎?几者,动之微,吉之先见者也。君子见几而作,不俟终日。《易》曰:‘介于石,不终日,贞吉。’介如石焉,宁用终日?断可识矣。君子知微知彰,知柔知刚,万夫之望。”

  子曰:“颜氏之子,其殆庶几乎?有不善未尝不知,知之未尝复行也。《易》曰:‘不远复,无祗悔,元吉。’”天地絪温,万物化醇。男女构精,万物化生。《易》曰:‘三人行则损一人,一人行则得其友。’言致一也。

  子曰:“君子安其身而后动,易其心而后语,定其交而后求。君子修此三者,故全也。危以动,则民不与也;惧以语,则民不应也;无交而求,则民不与也;莫之与,则伤之者至矣。《易》曰:‘莫益之,或击之,立心勿恒,凶。’”子曰:“乾坤,其《易》之门耶?”乾,阳物也;坤,阴物也。阴阳合德,而刚柔有体。以体天地之撰,以通神明之德。其称名也,杂而不越。于稽其类,其衰世之意邪?夫《易》,彰往而察来,而微显阐幽,开而当名,辨物正言断辞,则备矣。其称名也小,其取类也大。其旨远,其辞文,其言曲而中,其事肆而隐。

  因贰以济民行,以明失得之报。

  《易》之兴也,其于中古乎?作《易》者,其有忧患乎?是故《履》,德之基也,《谦》,德之柄也,《复》,德之本也,《恒》,德之固也,《损》,德之修也,《益》,德之裕也,《困》,德之辨也,《井》,德之地也,《巽》,德之制也。《履》,和而至。《谦》,尊而光,《复》,小而辨于物,《恒》,杂而不厌,《损》,先难而后易,《益》,长裕而不设,《困》,穷而通,《井》,居其所而迁,《巽》,称而隐。《履》以和行,《谦》以制礼,《复》以自知,《恒》以一德,《损》以远害,《益》以兴利,《困》以寡怨,《井》以辨义,《巽》以行权。

  《易》之为书也不可远,为道也屡迁,变动不居,周流六虚,上下无常,刚柔相易,不可为典要,唯变所适。其出入以度外内,使知惧。又明于忧患与故。

  无有师保,如临父母。初率其辞而揆其方,既有典常。苟非其人,道不虚行。

  《易》之为书也,原始要终,以为质也。六爻相杂,唯其时物也。其初难知,其上易知,本末也。初辞拟之,卒成之终。若夫杂物撰德,辩是与非,则非其中爻不备。噫!亦要存亡吉凶,则居可知矣。知者观其彖辞,则思过半矣。二与四同功而异位,其善不同;二多誉,四多惧,近也。柔之为道,不利远者;其要无咎。其用柔中也。三与五同功而异位,三多凶,五多功,贵贱之等也。其柔危,其刚胜耶?《易》之为书也,广大悉备。有天道焉,有人道焉,有地道焉。兼三才而两之,故六。六者非它也,三材之道也。道有变动,故曰爻;爻有等,故曰物;物相杂,故曰文;文不当,故吉凶生焉。

  《易》之兴也,其当殷之末世,周之盛德耶?当文王与纣之事耶?是故其辞危。危者使平,易者使倾。其道甚大,百物不废。惧以终始,其要无咎,此之谓《易》之道也。

  夫乾,天下之至健也,德行恒易以知险。夫坤,天下之至顺也,德行恒简以知阻。能说诸心,能研诸侯之虑,定天下之吉凶,成天下之亹亹者。是故变化云为,吉事有祥。象事知器,占事知来。天地设位,圣人成能。人谋鬼谋,百姓与能。八卦以象告,爻彖以情言,刚柔杂居,而吉凶可见矣。变动以利言,吉凶以情迁。是故爱恶相攻而吉凶生,远近相取而悔吝生,情伪相感而利害生。凡《易》之情,近而不相得则凶,或害之,悔且吝。将叛者其辞惭,中心疑者其辞枝,吉人之辞寡,躁人之辞多,诬善之人其辞游,失其守者其辞屈。
  下经

  

  

1. 咸(卦三十一)
   (艮下兑上)


```
        咸:亨。利贞。取女吉。
        《彖》曰:咸,感也。柔上而刚下,二气感应以相与。止而说,男下女,是以“亨利贞,取女吉”也。天地感而万物化生,圣人感人心而天下和平。观其所
        感,而天地万物之情可见矣。
        《象》曰:山上有泽,咸。君子以虚受人。
        初六,咸其拇。
        《象》曰“咸其拇”,志在外也。
        六二,咸其腓,凶。居吉。
        《象》曰虽“凶居吉”,顺不害也。
        九三,咸其股,执其随,往吝。
        《象》曰:“咸其股”,亦不处也。志在随人,所执下也。
        九四,贞吉。悔亡。憧憧往来,朋从尔思。
        《象》曰:“贞吉悔亡”,未感害也。“憧憧往来”,未光大也。
        九五,咸其脢,无悔。
        《象》曰:“咸其脢”,志末也。
        上六,咸其辅颊舌。
        《象》曰:“咸其辅颊舌”,滕口说也。


```


2. 恒(卦三十二)
   (巽下震上)


```

        恒:亨。无咎。利贞。利有攸往。
        《彖》曰:恒,久也。刚上而柔下。雷风相与,巽而动,刚柔皆应,恒。“恒亨无咎利贞”,久于其道也。天地之道恒久而不已也。“利有攸往”,终则
        有始也。日月得天而能久照,四时变化而能久成。圣人久于其道而天下化成。观其所恒,而天地万物之情可见矣。
        《象》曰:雷风,恒。君子以立不易方。
        初六,浚恒,贞凶,无攸利。
        《《象》曰:“浚恒”之“凶”,始求深也。
        九二,悔亡。
        《象》曰:九二“悔亡”,能久中也。
        九三,不恒其德,或承之羞,贞吝。
        《象》曰:“不恒其德”,无所容也。
        九四,田无禽。
        《象》曰:久非其位,安得禽也。
        六五,恒其德,贞,妇人吉,夫子凶。
        《象》曰:妇人贞吉,从一而终也。夫子制义,从妇凶也。
        上六,振恒,凶。
        《象》曰:振恒在上,大无功也。


```

3. 遯(卦三十三)
   (艮下乾上)


```

        《遯》:亨。小利贞。
        《彖》曰:“遯亨”,遯而亨也。刚当位而应,与时行也。“小利贞”,浸而长也。遯之时义大矣哉!
        《象》曰:天下有山,遯。君子以远小人,不恶而严。
        初六,遯尾,厉,勿用有攸往。
        《象》曰:“遯尾”之“厉”,不往何灾也?
        六二,执之用黄牛之革,莫之胜说。
        《象》曰:“执用黄牛”,固志也。
        九三,系遯,有疾厉,畜臣妾吉。
        《象》曰:“系遯”之“厉”,有疾惫也。“畜臣妾吉”,不可大事也。
        九四,好遯,君子吉,小人否。
        《象》曰:“君子好遯,小人否”也。
        九五,嘉遯,贞吉。
        《象》曰:“嘉遯贞吉”,以正志也。
        上九,肥遯,无不利。
        《象》曰:“肥遯无不利”,无所疑也。


```

4. 大壮(卦三十四)
   (乾下震上)


```

        《大壮》:利贞。
        《彖》曰:大壮,大者壮也。刚以动,故壮。“大壮利贞”,大者正也。正大,而天地之情可见矣。
        《象》曰:雷在天上,大壮。君子以非礼弗履。
        初九,壮于趾,征凶,有孚。
        《象》曰:“壮于趾”,其孚穷也。
        九二,贞吉。
        《象》曰:九二“贞吉”,以中也。
        九三,小人用壮,君子用罔,贞厉。羝羊触藩,羸其角。
        《象》曰:“小人用壮”,君子以罔也。
        九四,贞吉,悔亡。藩决不羸,壮于大舆之輹。
        《象》曰:“藩决不羸”,尚往也。
        六五,丧羊于易,无悔。
        《象》曰:“丧羊于易”,位不当也。
        上六,羝羊触藩,不能退,不能遂,无攸利,艰则吉。
        《象》曰:“不能退,不能遂”,不详也。“艰则吉”,咎不长也。


```

5. 晋(卦三十五)
   (坤下离上)


```

        《晋》:康侯用锡马蕃庶,昼日三接。
        《彖》曰:晋,进也,明出地上。顺而丽乎大明,柔进而上行,是以“康侯用锡马蕃庶,昼日三接”也。
        《象》曰:明出地上,《晋》。君子以自昭明德。
        初六,晋如摧如,贞吉。罔孚,裕无咎。
        《象》曰:“晋如摧如”,独行正也。“裕无咎”。未受命也。
        六二,晋如,愁如,贞吉。受兹介福于,其王母。
        《象》曰:“受兹介福”,以中正也。
        六三,众允,悔亡。
        《象》曰:“众允”之志,上行也。
        九四,晋如鼫鼠,贞厉。
        《象》曰:“鼫鼠贞厉”,位不当也。
        六五,悔亡,失得,勿恤。往吉,无不利。
        《象》曰:“失得勿恤”,往有庆也。
        上九,晋其角,维用伐邑,厉吉,无咎,贞吝。
        《象》曰:“维用伐邑”,道未光也。


```

6. 明夷(卦三十六)
   (离下坤上)


```

        《明夷》:利艰贞。
        《彖》曰:明入地中,“明夷”。内文明而外柔顺,以蒙大难,文王以之。
        “利艰贞”,晦其明也,内难而能正其志,箕子以之。
        《象》曰:明入地中,“明夷”。君子以莅众用晦而明。
        初九,明夷,于飞垂其翼。君子于行,三日不食。有攸往,主人有言。
        《象》曰:“君子于行”,义不食也。
        六二,明夷夷于左股,用拯马壮,吉。
        《象》曰:六二之吉,顺以则也。
        九三,明夷于南狩,得其大首,不可疾贞。
        《象》曰:“南狩”之志,乃得大也。
        六四,入于左腹,获明夷之心,于出门庭。
        《象》曰:“入于左腹”,获心意也。
        六五,箕子之明夷,利贞。
        《象》曰:箕子之贞,明不可息也。
        上六,不明,晦,初登于天,后入于地。
        《象》曰:“初登于天”,照四国也。“后入天地”,失则也。


```

7. 家人(卦三十七)
   (离下巽上)


```

        《家人》:利女贞。
        《彖》曰:家人,女正位乎内,男正位乎外。男女正,天地之大义也。家人有严君焉,父母之谓也。父父,子子,兄兄,弟弟,夫夫,妇妇,而家道正。正
        家而天下定矣。
        《象》曰:风自火出,家人。君子以言有物而行有恒。
        初九,闲有家,悔亡。
        《象》曰:“闲有家”,志未变也。
        六二,无攸遂,在中馈,贞吉。
        《象》曰:六二之吉,顺以巽也。
        九三,家人嗃々,悔厉吉;妇子嘻嘻,终吝。
        《象》曰:“家人嗃々”,未失也。“妇子嘻嘻”,失家节也。
        九四,富家,大吉。
        《象》曰:“富家大吉”,顺在位也。
        九五,王假有家,勿恤,吉。
        《象》曰:“王假有家”,交相爱也。
        上九,有孚威如,终吉。
        《象》曰:威如之吉,反身之谓也。


```

8. 睽(卦三十八)
   (兑下离上)


```

        《睽》:小事吉。
        《彖》曰:睽,火动而上,泽动而下。二女同居,其志不同行。说而丽乎明,柔进而上行,得中而应乎刚,是以小事吉。天地睽而其事同也。男女睽而其志通
        也。万物睽而其事类也,睽之时用大矣哉!
        《象》曰:上火下泽,睽。君子以同而异。
        初九,悔亡。丧马勿逐自复。见恶人无咎。
        《象》曰:“见恶人”,以辟咎也。
        九二,遇主于巷,无咎。
        《象》曰:“遇主于巷”,未失道也。
        六三,见舆曳,其牛掣,其人天且劓,无初有终。
        《象》曰:“见舆曳”,位不当也。“无初有终”,遇刚也。
        九四,睽孤遇元夫,交孚,厉,无咎。
        《象》曰:“交孚无咎”,志行也。
        六五,悔亡。厥宗噬肤,往何咎?
        《象》曰:“厥宗噬肤”,往有庆也。
        上九,睽孤见豕负途,载鬼一车,先张之弧,后说之弧,匪寇,婚媾。往遇
        雨则吉。
        《象》曰:“遇雨之吉”,群疑亡也。


```

9. 蹇(卦三十九)
   (艮下坎上)
 

```

       《蹇》:利西南,不利东北。利见大人。贞吉。
        《彖》曰:蹇,难也,险在前也。见险而能止,知矣哉!蹇,利西南”,往得中也。“不利东北”,其道穷也。“利见大人”,往有功也。当位”贞吉”,
        以正邦也。蹇之时用大矣哉!
        《象》曰:山上有水,蹇。君子以反身修德。
        初六,往蹇来誉。
        《象》曰:“往蹇来誉”,宜待也。
        六二,王臣蹇蹇,匪躬之故。
        《象》曰:“王臣蹇蹇”,终无尤也。
        九三,往蹇来反。
        《象》曰:“往蹇来反”,内喜之也。
        六四,往蹇来连。
        《象》曰:“往蹇来连”,当位实也。
        九五,大蹇朋来。
        《象》曰:“大蹇朋来”,以中节也。
        上六,往蹇来硕,吉,利见大人。
        《象》曰:“往蹇来硕”,志在内也。“利见大人”,以从贵也。


```

10. 解(卦四十)
    (坎下震上)


```

      《解》:利西南。无所往,其来复吉。有攸往,夙吉。
      《彖》曰:解,险以动,动而免乎险,解。“解,利西南”,往得众也。
      “其来复吉”,乃得中也。“有攸往夙吉。”,往有功也。天地解而雷雨作,雷雨作而百果草木皆甲坼。解之时大矣哉!
      《象》曰:雷雨作,解。君子以赦过宥罪。
      初六,无咎。
      《象》曰:刚柔之际,义无咎也。
      九二,田获三狐,得黄矢,贞吉。
      《象》曰:九二贞吉,得中道也。
      六三,负且乘,致寇至,贞吝。
      《象》曰:“负且乘”,亦可丑也。自我致戎,又谁咎也?
      九四,解而拇,朋至斯孚。
      《象》曰:“解而拇”,未当位也。
      六五,君子维有解,吉,有孚于小人。
      《象》曰:君子有解,小人退也。
      上六,公用射隼于高墉之上,获之,无不利。
      《象》曰:“公用射隼”,以解悖也。


```

11. 损(卦四十一)
    (兑下艮上)


```

       《损》:有孚,元吉,无咎。可贞,利有攸往。曷之用?二簋可用享。
       《彖》曰:损,损下益上,其道上行。损而有孚,元吉,无咎,可贞,利有攸往,曷之用?二簋可用享。二簋应有时。损刚益柔有时,损益盈虚,与时偕行。
       《象》曰:山下有泽,损。君子以惩忿窒欲。
       初九,已事遄往,无咎。酌损之。
       《象》曰:“已事遄往”,尚合志也。
       九二,利贞。征凶,弗损,益之。
       《象》曰:“九二利贞”,中以为志也。
       六三,三人行则损一人,一人行则得其友。
       《象》曰:“一人行”,“三”则疑也。
       六四,损其疾,使遄有喜,无咎。
       《象》曰:“损其疾”,亦可喜也。
       六五,或益之十朋之龟,弗克违,元吉。
       《象》曰:六五元吉,自上祐也。
       上九,弗损,益之,无咎,贞吉,利有攸往,得臣无家。
       《象》曰:“弗损,益之”,大得志也。


```

12. 益(卦四十二)
    (震下巽上)
 

```

      《益》:利有攸往。利涉大川。
       《彖》曰:“益”,损上益下,民说无疆。自上下下,其道大光。“利有攸往”,中正有庆。“利涉大川”,木道乃行。益动而巽,日进无疆。天施地生,
       其益无方。凡益之道,与时偕行。
       《象》曰:风雷,益。君子以见善则迁,有过则改。
       初九,利用为大作,元吉,无咎。
       《象》曰:“元吉无咎”,下不厚事也。
       六二,或益之十朋之龟,弗克违。永贞吉。王用享于帝,吉。
       《象》曰:“或益之”,自外来也。
       六三,益之用凶事,无咎。有孚。中行告公用圭。
       《象》曰:“益用凶事”,固有之也。
       六四,中行告公,从,利用为依迁国。
       《象》曰:“告公从”,以益志也。
       九五,有孚惠心,勿问,元吉。有孚,惠我德。
       《象》曰:“有孚惠心”,勿问之矣。“惠我德”,大得志也。
       上九,莫益之,或击之,立心勿恒,凶。
       《象》曰:“莫益之”,偏辞也。“或击之”,自外来也。


```

13. 夬(卦四十三)
    (乾下兑上)


```

       《夬》:扬于王庭,孚号。有厉,告自邑。不利即戎,利有攸往。
       《彖》曰:“夬”,决也,刚决柔也。健而说,决而和。“扬于王庭”,柔乘五刚也。“孚号有厉”,其危乃光也。“告自邑,不利即戎”,所尚乃穷也。
       “利有攸往”,刚长乃终也。
       《象》曰:泽上于天,夬。君子以施禄及下,居德则忌。
       初九,壮于前趾,往不胜,为咎。
       《象》曰:不胜而往,咎也。
       九二,惕号,莫夜有戎,勿恤。
       《象》曰:“有戎勿恤”,得中道也。
       九三,壮于頄,有凶。君子夬夬独行,遇雨若濡,有愠无咎。
       《象》曰:“君子夬夬”,终无咎也。
       九四,臀无肤,其行次且。牵羊悔亡,闻言不信。
       《象》曰:“其行次且”,位不当也。“闻言不信”,聪不明也。
       九五,苋陆夬夬中行,无咎。
       《象》曰:“中行无咎”,中未光也。
       上六,无号,终有凶。
       《象》曰:“无号之凶”,终不可长也。


```

14. 姤(卦四十四)
    (巽下乾上)


```

       《姤》:女壮,勿用取女。
       《彖》曰:姤,遇也,柔遇刚也。勿用取女”,不可与长也。天地相遇,品物咸章也。刚遇中正,天下大行也。姤之时义大矣哉!
       《象》曰:天下有风,姤。后以施命诰四方。
       初六,系于金柅,贞吉。有攸往,见凶,羸豕孚蹢躅。
       《象》曰:“系于金柅”,柔道牵也。
       九二,包有鱼,无咎,不利宾。
       《象》曰:“包有鱼”,义不及宾也。
       九三,臀无肤,其行次且,厉,无大咎。
       《象》曰:“其行次且”,行未牵也。
       九四,包无鱼,起凶。
       《象》曰:“无鱼之凶”,远民也。
       九五,以杞包瓜,含章,有陨自天。
       《象》曰:九五含章,中正也。有陨自天,志不舍命也。
       上九,姤其角,吝,无咎。
       《象》曰:“姤其角”,上穷吝也。


```

15. 萃(卦四十五)
    (坤下兑上)


```

       《萃》:亨,王假有庙。利见大人。亨,利贞,用大牲吉。利有攸往。
       《彖》曰:“萃”,聚也。顺以说,刚中而应,故聚也。“王假有庙”,致孝享也。“利见大人亨”,聚以正也。“用大牲吉,利有攸往”,顺天命也。观
       其所聚,而天地万物之情可见矣。
       《象》曰:泽上于地,萃。君子以除戎器,戒不虞。
       初六,有孚不终,乃乱乃萃,若号,一握为笑,勿恤,往无咎。
       《象》曰:“乃乱乃萃”,其志乱也。
       六二,引吉,无咎,孚乃利用禴。
       《象》曰:“引吉无咎”,中未变也。
       六三,萃如嗟如,无攸利,往无咎,小吝。
       《象》曰:“往无咎”,上巽也。
       九四,大吉无咎。
       《象》曰:“大吉无咎”,位不当也。
       九五,萃有位,无咎。匪孚,元永贞,悔亡。
       《象》曰:“萃有位”,志未光也。
       上六,赍咨涕洟,无咎。
       《象》曰:“赍咨涕洟”,未安上也。


```

16. 升(卦四十六)
    (巽下坤上)


```

       《升》:元亨。用见大人,勿恤。南征吉。
       《彖》曰:柔以时升,巽而顺,刚中而应,是以大亨,“用见大人勿恤”,有庆也。“南征吉”,志行也。
       《象》曰:地中生木,升。君子以顺德,积小以高大。
       初六,允升,大吉。
       《象》曰:“允升大吉”,上合志也。
       九二,孚乃利用禴,无咎。
       《象》曰:九二之孚,有喜也。
       九三,升虚邑。
       《象》曰:“升虚邑”,无所疑也。
       六四,王用亨于岐山,吉,无咎。
       《象》曰:“王用亨于岐山”,顺事也。
       六五,贞吉,升阶。
       《象》曰:“贞吉升阶”,大得志也。
       上六,冥升,利于不息之贞。
       《象》曰:冥升在上,消不富也。


```

17. 困(卦四十七)
    (坎下兑上)


```

       《困》:亨。贞大人吉,无咎。有言不信。
       《彖》曰:“困”,刚揜也。险以说,因而不失其所,亨,其唯君子乎。“贞大人吉”,以刚中也。“有言不信”,尚口乃穷也。
       《象》曰:泽无水,困。君子以致命遂志。
       初六,臀困于株木,入于幽谷,三岁不觌。
       《象》曰:“入于幽谷”,幽不明也。
       九二,困于酒食,朱绂方来。利用享祀。征凶,无咎。
       《象》曰:“困于酒食”,中有庆也。
       六三,困于石,据于蒺藜,入于其宫,不见其妻,凶。
       《象》曰:“据于蒺藜”,乘刚也。“入于其宫,不见其妻”,不祥也。
       九四,来徐徐,困于金车,吝,有终。
       《象》曰:“来徐徐”,志在下也。虽不当位,有与也。
       九五,劓刖,困于赤绂,乃徐有说,利用祭祀。
       《象》曰:“劓刖”,志未得也。“乃徐有说”,以中直也。“利用祭祀”,
       受福也。
       上六,困于葛藟,于臲,曰动悔有悔,征吉。
       《象》曰:“困于葛藟”,未当也。“动悔有悔”,吉行也。


```

18. 井(卦四十八)
    (巽下坎上)


```

       《井》:改邑不改井,无丧无得。往来井井。汔至,亦未繘井,羸其瓶,凶。
       《彖》曰:巽乎水而上水,井。井养而不穷也。“改邑不改井,”乃以刚中也。“汔至,亦未繘井”,未有功也。“羸其瓶”,是以凶也。
       《象》曰:木上有水,井。君子以劳民劝相。
       初六,井泥不食。旧井无禽。
       《象》曰:“井泥不食”,下也。“旧井无禽”,时舍也。
       九二,井谷射鲋,瓮敝漏。
       《象》曰:“井谷射鲋”,无与也。
       九三,井渫不食,为我心恻。可用汲,王明并受其福。
       《象》曰:“井渫不食”,行恻也。求“王明”,受福也。
       六四,井甃,无咎。
       《象》曰:“井甃无咎”,修井也。
       九五,井洌,寒泉食。
       《象》曰:“寒泉之食”,中正也。
       上六,井收勿幕,有孚元吉。
       《象》曰:“元吉”在“上”,大成也。


```

19. 革(卦四十九)
    (离下兑上)


```

       《革》:已日乃孚。元亨。利贞,悔亡。
       《彖》曰:革,水火相息,二女同居,其志不相得曰革。“已日乃孚”,革而信之。文明以说,大亨以正。革而当,其悔乃亡。天地革而四时成,汤武革命,
       顺乎天而应乎人。革之时大矣哉!
       《象》曰:泽中有火,革。君子以治历明时。
       初九,巩用黄牛之革。
       《象》曰:“巩用黄牛”,不可以有为也。
       六二,巳日乃革之,征吉,无咎。
       《象》曰:“巳日革之”,行有嘉也。
       九三,征凶。贞厉。革言三就,有孚。
       《象》曰:“革言三就”,又何之矣。
       九四,悔亡。有孚改命,吉。
       《象》曰:“改命之吉”,信志也。
       九五,大人虎变,未占有孚。
       《象》曰:“大人虎变”,其文炳也。
       上六,君子豹变,小人革面,征凶,居贞吉。
       《象》曰:“君子豹变”,其文蔚也。“小人革面”,顺以从君也。


```

20. 鼎(卦五十)
    (巽下离上)


```

         《鼎》:元吉,亨。
         《彖》曰:鼎,象也。以木巽火,亨饪也。圣人亨以享上帝,而大亨以养圣贤。巽而耳目聪明,柔进而上行,得中而应乎刚,是以元亨。
         《象》曰:木上有火,鼎。君子以正位凝命。
         初六,鼎颠趾,利出否。得妾以其子,无咎。
         《象》曰:“鼎颠趾”,未悖也。“利出否”,以从贵也。
         九二,鼎有实,我仇有疾,不我能即,吉。
         《象》曰:“鼎有实”,慎所之也。“我仇有疾”,终无尤也。
         九三,鼎耳革,其行塞,雉膏不食,方雨,亏悔,终吉。
         《象》曰:“鼎耳革”,失其义也。
         九四,鼎折足,覆公餗,其形渥,凶。
         《象》曰:“覆公餗”,信如何也。
         六五,鼎黄耳金铉,利贞。
         《象》曰:“鼎黄耳”,中以为实也。
         上九,鼎玉铉,大吉,无不利。
         《象》曰:玉铉在上,刚柔节也。


```

21. 震(卦五十一)
    (震下震上)
 

```

      《震》:亨。震来虩虩,笑言哑哑,震惊百里,不丧匕鬯。
       《彖》曰:震,亨。“震来虩虩”,恐致福也。“笑言哑哑”,后有则也。
       “震惊百里”,惊远而惧迩也。“不丧匕鬯”,出可以守宗庙社稷,以为祭主也。
       《象》曰:洊雷,震。君子以恐惧修省。
       初九,震来虩虩,后笑言哑哑,吉。
       《象》曰:“震来虩虩”,恐致福也。“笑言哑哑”,后有则也。
       六二,震来厉,亿丧贝,跻于九陵,勿逐,七日得。
       《象》曰:“震来厉”,乘刚也。
       六三,震苏苏,震行无眚。
       《象》曰:“震苏苏”,位不当也。
       九四,震遂泥。
       《象》曰:“震遂泥”,未光也。
       六五,震往来,厉,意无丧,有事。
       《象》曰:“震往来厉”,危行也。其事在中,大无丧也。
       上六,震索索,视矍矍,征凶。震不于其躬,于其邻,无咎。婚媾有言。
       《象》曰:“震索索”,中未得也。虽凶无咎,畏邻戒也。


```

22. 艮(卦五十二)
    (艮下艮上)


```

       《艮》:艮其背,不获其身,行其庭,不见其人,无咎。
       《彖》曰:艮,止也。时止则止,时行则行,动静不失其时,其道光明。
       “艮其止”,止其所也。上下敌应,不相与也。是以“不获其身,行其庭,不见其人,无咎”也。
       《象》曰:兼山,艮。君子以思不出其位。
       初六,艮其趾,无咎。利永贞。
       《象》曰:“艮其趾”,未失正也。
       六二,艮其腓,不拯其随,其心不快。
       《象》曰:“不拯其随”,未退听也。
       九三,艮其限,列其夤,厉,熏心。
       《象》曰:“艮其限”,危熏心也。
       六四,艮其身,无咎。
       《象》曰:“艮其身”,止诸躬也。
       六五,艮其辅,言有序,悔亡。
       《象》曰:“艮其辅”,以中正也。
       上九,敦艮,吉。
       《象》曰:“敦艮之吉”,以厚终也。


```

23. 渐(卦五十三)
    (艮下巽上)


```

       《渐》:女归吉,利贞。
       《彖》曰:渐之进也,女归吉也。进得位,往有功也。进以正,可以正邦也。其位刚得中也。止而巽,动不穷也。
       《象》曰:山上有木,渐。君子以居贤德善俗。
       初六,鸿渐于干。小子厉,有言,无咎。
       《象》曰:“小子之厉”,义无咎也。
       六二,鸿渐于磐,饮食衎衎,吉。
       《象》曰:“饮食衎衎”,不素饱也。
       九三,鸿渐于陆。夫征不复,妇孕不育,凶。利御寇。
       《象》曰:“夫征不复”,离群丑也。“妇孕不育”,失其道也。“利用御寇”,顺相保也。
       六四,鸿渐于木,或得其桷,无咎。
       《象》曰:“或得其桷”,顺以巽也。
       九五,鸿渐于陵,妇三岁不孕,终莫之胜,吉。
       《象》曰:“终莫之胜吉”,得所愿也。
       上九,鸿渐于陆,其羽可用为仪,吉。
       《象》曰:“其羽可用为仪,吉”,不可乱也。


```

24. 归妹(卦五十四)
    (兑下震上)


```

       《归妹》:征凶,无攸利。
       《彖》曰:归妹,天地之大义也。天地不交而万物不兴。归妹,人之终始也。说以动,所归妹也。“征凶”,位不当也。“无攸利”,柔乘刚也。
       《象》曰:泽上有雷,归妹。君子以永终知敝。
       初九,归妹以娣。跛能履,征吉。
       《象》曰:“归妹以娣”,以恒也。“跛能履吉”,相承也。
       九二,眇能视,利幽人之贞。
       《象》曰:“利幽人之贞”,未变常也。
       六三,归妹以须,反归以娣。
       《象》曰:“归妹以须”,未当也。
       九四,归妹愆期,迟归有时。
       象曰:“愆期”之志,有待而行也。
       六五,帝乙归妹,其君之袂不如其娣之袂良。月几望,吉。
       《象》曰:“帝乙归妹,不如其娣之袂良”也。其位在中,以贵行也。
       上六,女承筐无实,士刲羊无血,无攸利。
       《象》曰:上六无实,承虚筐也。


```


25. 丰(卦五十五)
    (离下震上)


```

       《丰》:亨,王假之。勿忧,宜日中。
       《彖》曰:丰,大也。明以动,故丰。“王假之”,尚大也。“勿忧宜日中”,宜照天下也。日中则昃,月盈则食,天地盈虚,与时消息,而况于人乎,况于鬼
       神乎?
       《象》曰:雷电皆至,丰。君子以折狱致刑。
       初九,遇其配主,虽旬无咎,往有尚。
       《象》曰:“虽旬无咎”,过旬灾也。
       六二,丰其蔀,日中见斗。往得疑疾,有孚发若,吉。
       《象》曰:“有孚发若”,信以发志也。
       九三,丰其沛,日中见沫,折其右肱,无咎。
       《象》曰:“丰其沛”,不可大事也。“折其右肱”,终不可用也。
       九四,丰其蔀,日中见斗,遇其夷主,吉。
       《象》曰:“丰其蔀”,位不当也。“日中见斗”,幽不明也。“遇其夷主”,吉行也。
       六五,来章有庆誉,吉。
       《象》曰:六五之吉,有庆也。
       上六,丰其屋,蔀其家,窥其户,阒其无人,三岁不觌,凶。
       《象》曰:“丰其屋”,天际翔也。“窥其户,阒其无人”,自藏也。


```

26. 旅(卦五十六)
    (艮下离上)
 

```

        《旅》:小亨。旅贞吉。
         《彖》曰:“旅小亨”,柔得中乎外,而顺乎刚,止而丽乎明,是以“小亨旅贞吉”也。旅之时义大矣哉!
         《象》曰:山上有火,旅。君子以明慎用刑而不留狱。
         初六,旅琐琐,斯其所取灾。
         《象》曰:“旅琐琐”,志穷灾也。
         六二,旅即次,怀其资,得童仆,贞。
         《象》曰:“得童仆贞”,终无尤也。
         九三,旅焚其次,丧其童仆,贞厉。
         《象》曰:“旅焚其次”,亦以伤矣。以旅与下,其义丧也。
         九四,旅于处,得其资斧,我心不快。
         《象》曰:“旅于处”,未得位也。“得其资斧”,心未快也。
         六五,射雉,一矢亡,终以誉命。
         《象》曰:“终以誉命”,上逮也。
         上九,鸟焚其巢,旅人先笑后号咷。丧牛于易,凶。
         《象》曰:以旅在上,其义焚也。“丧牛于易”,终莫之闻也。

```


27. 巽(卦五十七)
    (巽下巽上)

```


       《巽》:小亨。利有攸往。利见大人。
       《彖》曰:重巽以申命。刚巽乎中正而志行。柔皆顺乎刚,是以“小亨,利有攸往,利见大人”。
       《象》曰:随风,巽。君子以申命行事。
       初六,进退,利武人之贞。
       《象》曰:“进退”,志疑也。“利武人之贞”,志治也。
       九二,巽在床下,用史巫纷若,吉,无咎。
       《象》曰:“纷若之吉”,得中也。
       九三,频巽,吝。
       《象》曰:“频巽之吝”,志穷也。
       六四,悔亡,田获三品。
       《象》曰:“田获三品”,有功也。
       九五,贞吉,悔亡,无不利,无初有终。先庚三日,后庚三日,吉。
       《象》曰:九五之吉,位正中也。
       上九,巽在床下,丧其资斧,贞凶。
       《象》曰:“巽在床下”,上穷也。“丧其资斧”,正乎凶也。

```


28. 兑(卦五十八)
    (兑下兑上)

```


       《兑》:亨。利贞。
       《彖》曰:兑,说也。刚中而柔外,说以利贞,是以顺乎天而应乎人。说以先民,民忘其劳。说以犯难,民忘其死。说之大,民劝矣哉!
       《象》曰:丽泽,兑。君子以朋友讲习。
       初九,和兑,吉。
       《象》曰:“和兑之吉”,行未疑也。
       九二,孚兑,吉,悔亡。
       《象》曰:“孚兑之吉”,信志也。
       六三,来兑,凶。
       《象》曰:“来兑之凶”,位不当也。
       九四,商兑未宁,介疾有喜。
       《象》曰:“九四之喜”,有庆也。
       九五,孚于剥,有厉。
       《象》曰:“孚于剥”,位正当也。
       上六,引兑。
       《象》曰:上六“引兑”,未光也。

```


29. 涣(卦五十九)
    (坎下巽上)

```


       《涣》:亨。王假有庙。利涉大川,利贞。
       《彖》曰:“涣,亨”,刚来而不穷,柔得位乎外而上同。“王假有庙”,王乃在中也。“利涉大川”,乘木有功也。
       《象》曰:风行水上,涣。先王以享于帝,立庙。
       初六,用拯马壮,吉。
       《象》曰:初六之吉顺也。
       九二,涣奔其机,悔亡。
       《象》曰:“涣奔其机”,得愿也。
       六三,涣其躬,无悔。
       《象》曰:“涣其躬”,志在外也。
       六四,涣其群,元吉。涣有丘,匪夷所思。
       《象》曰:“涣其群元吉”,光大也。
       九五,涣汗其大号,涣王居,无咎。
       《象》曰:“王居无咎”,正位也。
       上九,涣其血,去逖出,无咎。
       《象》曰:“涣其血”,远害也。

```


30. 节(卦六十)
    (兑下坎上)



```

《节》:亨。苦节,不可贞。
       《彖》曰:“节亨”。刚柔分而刚得中。“苦节不可贞”,其道穷也。说以行险,当位以节,中正以通。天地节而四时成。节以制度,不伤财,不害民。
       《象》曰:泽上有水,节。君子以制数度,议德行。
       初九,不出户庭,无咎。
       《象》曰:“不出户庭”,知通塞也。
       九二,不出门庭,凶。
       《象》曰:“不出门庭凶”,失时极也。
       六三,不节若,则嗟若,无咎。
       《象》曰:“不节之嗟”,又谁咎也。
       六四,安节。亨。
       《象》曰:“安节之亨”,承上道也。
       九五,甘节,吉,往有尚。
       《象》曰:“甘节之吉”,居位中也。
       上六,苦节,贞凶,悔亡。
       《象》曰:“苦节贞凶”,其道穷也。


```


31. 中孚(卦六十一)
    (兑下巽上)


```
       《中孚》:豚鱼,吉。利涉大川,利贞。
       《彖》曰:“中孚”,柔在内而刚得中,说而巽,孚乃化邦也。“豚鱼吉”,信及豚鱼也。“利涉大川”,乘木舟虚也。中孚以利贞,乃应乎天也。
       《象》曰:泽上有风,中孚。君子以议狱缓死。
       初九,虞吉,有它不燕。
       《象》曰:初九“虞吉”,志未变也。
       九二,鸣鹤在阴,其子和之。我有好爵,吾与尔靡之。
       《象》曰:“其子和之”,中心愿也。
       六三,得敌,或鼓或罢,或泣或歌。
       《象》曰:“或鼓或罢”,位不当也。
       六四,月几望,马匹亡,无咎。
       《象》曰:“马匹亡”,绝类上也。
       九五,有孚挛如,无咎。
       《象》曰:“有孚挛如”,位正当也。
       上九,翰音登于天,贞凶。
       《象》曰:“翰音登于天”,何可长也?
```

32. 小过(卦六十二)
    (艮下震上)

```
       《小过》:亨。利贞。可小事,不可大事。飞鸟遗之音,不宜上,宜下,大吉。
       《彖》曰:小过,小者过而亨也。过以利贞,与时行也。柔得中,是以小事吉也。刚失位而不中,是以不可大事也。有飞鸟之象焉,“飞鸟遗之音,不宜上,
       宜下,大吉”,上逆而下顺也。
       《象》曰:山上有雷,小过。君子以行过乎恭,丧过乎哀,用过乎俭。
       初六,飞鸟以凶。
       《象》曰:“飞鸟以凶”,不可如何也。
       六二,过其祖,遇其妣。不及其君,遇其臣。无咎。
       《象》曰:“不及其君”,臣不可过也。
       九三,弗过防之,从或戕之,凶。
       《象》曰:“从或戕之”,凶如何也?
       九四,无咎。弗过遇之,往厉必戒,勿用永贞。
       《象》曰:“弗过遇之”,位不当也。“往厉必戒”,终不可长也。
       六五,密云不雨,自我西郊。公弋取彼在穴。
       《象》曰:“密云不雨”,已上也。
       上六,弗遇过之,飞鸟离之,凶,是谓灾眚。
       《象》曰:“弗遇过之”,已亢也。
```

33. 既济(卦六十三)
    (离下坎上)

```
       《既济》:亨小,利贞。初吉终乱。
       《彖》曰:“既济,亨”,小者亨也。“利贞”。刚柔正而位当也。“初吉”,柔得中也。“终止则乱”,其道穷也。
       《象》曰:水在火上,既济。君子以思患而豫防之。
       初九,曳其轮,濡其尾,无咎。
       《象》曰:“曳其轮”,义无咎也。
       六二,“妇丧其茀,勿逐,七日得。
       《象》曰:“七日得”,以中道也。
       九三,高宗伐鬼方,三年克之,小人勿用。
       《象》曰:“三年克之”,惫也。
       六四,繻有衣袽,终日戒。
       《象》曰:“终日戒”,有所疑也。
       九五,东邻杀牛,不如西邻之禴祭,实受其福。
       《象》曰:“东邻杀牛”,不如西邻之时也。“实受其福”,吉大来也。
       上六,濡其首,厉。
       《象》曰:“濡其首厉”,何可久也?

```

34. 未济(卦六十四)
    (坎下离上)

```
         《未济》:亨。小狐汔济,濡其尾,无攸利。
         《彖》曰:“未济,亨”,柔得中也。“小狐汔济”,未出中也。“濡其尾,无攸利”,不续终也。虽不当位,刚柔应也。
         《象》曰:火在水上,未济。君子以慎辨物居方。
         初六,濡其尾,吝。
         《象》曰:“濡其尾”,亦不知极也。
         九二,曳其轮,贞吉。
         《象》曰:九二贞吉,中以行正也。
         六三,未济,征凶。利涉大川。
         《象》曰:“未济征凶”,位不当也。
         九四,贞吉,悔亡,震用伐鬼方,三年,有赏于大国。
         《象》曰:“贞吉悔亡”,志行也。
         六五,贞吉,无悔。君子之光,有孚吉。
         《象》曰:“君子之光”,其辉吉也。
         上九,有孚于饮酒,无咎。濡其首,有孚失是。
         《象》曰:“饮酒濡首”,亦不知节也。

!夏书 禹贡第一

  禹别九州,随山浚川,任土作贡。禹敷土,随山刊木,奠高山大川。

  冀州:既载壶口,治梁及岐。既修太原,至于岳阳;覃怀厎绩,至于衡漳。

  厥土惟白壤,厥赋惟上上错,厥田惟中中。恒、卫既从,大陆既作。岛夷皮服,夹右碣石入于河。

  济河惟兖州。九河既道,雷夏既泽,灉、沮会同。桑土既蚕,是降丘宅土。

  厥土黑坟,厥草惟繇,厥木惟条。厥田惟中下,厥赋贞,作十有三载乃同。厥贡漆丝,厥篚织文。浮于济、漯,达于河。

  海岱惟青州。嵎夷既略,濰、淄其道。厥土白坟,海滨广斥。厥田惟上下,厥赋中上。厥贡盐絺,海物惟错。岱畎丝、枲、铅、松、怪石。莱夷作牧。厥篚檿丝。浮于汶,达于济。

  海、岱及淮惟徐州。淮、沂其乂,蒙、羽其艺,大野既猪,东原厎平。厥土赤埴坟,草木渐包。厥田惟上中,厥赋中中。厥贡惟土五色,羽畎夏翟,峄阳孤桐,泗滨浮磬,淮夷蠙珠暨鱼。厥篚玄纤、缟。浮于淮、泗,达于河。

  淮海惟扬州。彭蠡既猪,阳鸟攸居。三江既入,震泽厎定。筱簜既敷,厥草惟夭,厥木惟乔。厥土惟涂泥。厥田唯下下,厥赋下上,上错。厥贡惟金三品,瑶、琨筱、簜、齿、革、羽、毛惟木。岛夷卉服。厥篚织贝,厥包桔柚,锡贡。

  沿于江、海,达于淮、泗。

  荆及衡阳惟荆州。江、汉朝宗于海,九江孔殷,沱、潜既道,云土、梦作乂。

  厥土惟涂泥,厥田惟下中,厥赋上下。厥贡羽、毛、齿、革惟金三品,杶、榦、栝、柏,砺、砥、砮、丹惟菌簵、楛,三邦厎贡厥名。包匦菁茅,厥篚玄纁玑组,九江纳锡大龟。浮于江、沱、潜、汉,逾于洛,至于南河。

  荆河惟豫州。伊、洛、瀍、涧既入于河,荥波既猪。导菏泽,被孟猪。厥土惟壤,下土坟垆。厥田惟中上,厥赋错上中。厥贡漆、枲,絺、纻,厥篚纤、纩,锡贡磬错。浮于洛,达于河。

  华阳、黑水惟梁州。岷、嶓既艺,沱、潜既道。蔡、蒙旅平,和夷厎绩。厥土青黎,厥田惟下上,厥赋下中,三错。厥贡璆、铁、银、镂、砮磬、熊、罴、狐、狸、织皮,西倾因桓是来,浮于潜,逾于沔,入于渭,乱于河。

  黑水、西河惟雍州。弱水既西,泾属渭汭,漆沮既从,沣水攸同。荆、岐既旅,终南、惇物,至于鸟鼠。原隰厎绩,至于猪野。三危既宅,三苗丕叙。厥土惟黄壤,厥田惟上上,厥赋中下。厥贡惟球、琳、琅玕。浮于积石,至于龙门、西河,会于渭汭。织皮昆仑、析支、渠搜,西戎即叙。

  导岍及岐,至于荆山,逾于河;壶口、雷首至于太岳;厎柱、析城至于王屋;太行、恒山至于碣石,入于海。

  西倾、朱圉、鸟鼠至于太华;熊耳、外方、桐柏至于陪尾。

  导嶓冢,至于荆山;内方,至于大别。

  岷山之阳,至于衡山,过九江,至于敷浅原。

  导弱水,至于合黎,馀波入于流沙。

  导黑水,至于三危,入于南海。

  导河、积石,至于龙门;南至于华阴,东至于厎柱,又东至于孟津,东过洛汭,至于大伾;北过降水,至于大陆;又北,播为九河,同为逆河,入于海。

  嶓冢导漾,东流为汉,又东,为沧浪之水,过三澨,至于大别,南入于江。

  东,汇泽为彭蠡,东,为北江,入于海。

  岷山导江,东别为沱,又东至于澧;过九江,至于东陵,东迆北,会于汇;东为中江,入于海。

  导沇水,东流为济,入于河,溢为荥;东出于陶丘北,又东至于菏,又东北,会于汶,又北,东入于海。

  导淮自桐柏,东会于泗、沂,东入于海。

  导渭自鸟鼠同穴,东会于沣,又东会于泾,又东过漆沮,入于河。

  导洛自熊耳,东北,会于涧、瀍;又东,会于伊,又东北,入于河。

  九州攸同,四隩既宅,九山刊旅,九川涤源,九泽既陂,四海会同。六府孔修,庶土交正,厎慎财赋,咸则三壤成赋。中邦锡土、姓,祗台德先,不距朕行。

  五百里甸服:百里赋纳緫,二百里纳铚,三百里纳秸服,四百里粟,五百里米。

  五百里侯服:百里采,二百里男邦,三百里诸侯。

  五百里绥服:三百里揆文教,二百里奋武卫。

  五百里要服:三百里夷,二百里蔡。

  五百里荒服:三百里蛮,二百里流。

  东渐于海,西被于流沙,朔南暨声教讫于四海。禹锡玄圭,告厥成功。






  !夏书 甘誓第二

  启与有扈战于甘之野,作《甘誓》。

  大战于甘,乃召六卿。

  王曰:“嗟!六事之人,予誓告汝:有扈氏威侮五行,怠弃三正,天用剿绝其命,今予惟恭行天之罚。左不攻于左,汝不恭命;右不攻于右,汝不恭命;御非其马之正,汝不恭命。用命,赏于祖;弗用命,戮于社,予则孥戮汝。”






  !夏书 五子之歌第三

  太康失邦,昆弟五人须于洛汭,作《五子之歌》。

  太康尸位,以逸豫灭厥德,黎民咸贰,乃盘游无度,畋于有洛之表,十旬弗反。有穷后羿因民弗忍,距于河,厥弟五人御其母以从,徯于洛之汭。五子咸怨,述大禹之戒以作歌。

  其一曰:“皇祖有训,民可近,不可下,民惟邦本,本固邦宁。予视天下愚夫愚妇一能胜予,一人三失,怨岂在明,不见是图。予临兆民,懔乎若朽索之驭六马,为人上者,奈何不敬?”其二曰:“训有之,内作色荒,外作禽荒。甘酒嗜音,峻宇雕墙。有一于此,未或不亡。”

  其三曰:“惟彼陶唐,有此冀方。今失厥道,乱其纪纲,乃厎灭亡。”

  其四曰:“明明我祖,万邦之君。有典有则,贻厥子孙。关石和钧,王府则有。荒坠厥绪,覆宗绝祀!”其五曰:“呜呼曷归?予怀之悲。万姓仇予,予将畴依?郁陶乎予心,颜厚有忸怩。弗慎厥德,虽悔可追?”夏书 胤征第四

  羲和湎淫,废时乱日,胤往征之,作《胤征》。

  惟仲康肇位四海,胤侯命掌六师。羲和废厥职,酒荒于厥邑,胤后承王命徂征。告于众曰:“嗟予有众,圣有谟训,明征定保,先王克谨天戒,臣人克有常宪,百官修辅,厥后惟明明,每岁孟春,遒人以木铎徇于路,官师相规,工执艺事以谏,其或不恭,邦有常刑。”“惟时羲和颠覆厥德,沈乱于酒,畔官离次,俶扰天纪,遐弃厥司,乃季秋月朔,辰弗集于房,瞽奏鼓,啬夫驰,庶人走,羲和尸厥官罔闻知,昏迷于天象,以干先王之诛,《政典》曰:‘先时者杀无赦,不及时者杀无赦。’今予以尔有众,奉将天罚。尔众士同力王室,尚弼予钦承天子威命。火炎昆冈,玉石俱焚。天吏逸德,烈于猛火。歼厥渠魁,胁从罔治,旧染污俗,咸与惟新。呜呼!威克厥爱,允济;爱克厥威,允罔功。其尔众士懋戒哉!”〖帝告釐沃〗自契至于成汤八迁,汤始居亳,从先王居。作《帝告》、《釐沃》。

  〖汤征〗汤征诸侯,葛伯不祀,汤始征之,作《汤征》。

  〖汝鸠 汝方〗伊尹去亳适夏,既丑有夏,复归于亳。入自北门,乃遇汝鸠、汝方。作《汝鸠》、《汝方》。
  

  先进第十一

  

  子曰:“先进于礼乐,野人也;后进于礼乐,君子也。如用之,则吾从先进。”

  子曰:“从我于陈、蔡者,皆不及门也。”

  德行:颜渊、闵子骞、冉伯牛、仲弓。言语:宰我、子贡。政事:冉有、季路。文学:子游、子夏。

  子曰:“回也,非助我者也,于吾言无所不说。”

  子曰:“孝哉,闵子骞!人不间于其父母昆弟之言。”

  南容三复白圭,孔子以其兄之子妻之。

  季康子问:“弟子孰为好学?”孔子对曰:“有颜回者好学,不幸短命死矣,今也则亡。”

  颜渊死,颜路请子之车以为之椁。子曰:“才不才,亦各言其子也。鲤也死,有棺而无椁。吾不徒行以为之椁,以吾从大夫之后,不可徒行也。”

  颜渊死。子曰:“噫!天丧予!天丧予!”颜渊死,子哭之恸。从者曰:“子恸矣!”曰:“有恸乎?非夫人之为恸而谁为?”颜渊死,门人欲厚葬之,子曰:“不可。”

  门人厚葬之。子曰:“回也视予犹父也,予不得视犹子也。非我也,夫二三子也!”季路问事鬼神。子曰:“未能事人,焉能事鬼?”曰:“敢问死。”曰:“未知生,焉知死?”闵子侍侧,訚訚如也;子路,行行如也;冉有、子贡、侃侃如也,子乐。

  “若由也,不得其死然。”

  鲁人为长府。闵子骞曰:“仍旧贯,如之何?何必改作?”子曰:“夫人不言,言必有中。”

  子曰:“由之瑟,奚为于丘之门?”门人不敬子路。子曰:“由也升堂矣,未入于室也。”

  子贡问:“师与商也孰贤?”子曰:“师也过,商也不及。”

  曰:“然则师愈与?”子曰:“过犹不及。”

  季氏富于周公,而求也为之聚敛而附益之。子曰:“非吾徒也,小子鸣鼓而攻之,可也。”柴也愚,参也鲁,师也辟,由也喭。

  子曰:“回也其庶乎,屡空。赐不受命,而货殖焉,亿则屡中。”

  子张问善人之道。子曰:“不践迹,亦不入于室。”

  子曰:“论笃是与,君子者乎?色庄者乎?”子路问:“闻斯行诸?”子曰:“有父兄在,如之何其闻斯行之?”冉有问:“闻斯行诸?”子曰:“闻斯行之。

  公西华曰:“由也问闻斯行诸,子曰:‘有父兄在’;求也问闻斯行诸,子曰:‘闻斯行之’。赤也惑,敢问。”子曰:“求也退,故进之;由也兼人,故退之。”

  子畏于匡,颜渊后。子曰:“吾以女为死矣!”曰:“子在,回何敢死!”季子然问:“仲由、冉求,可谓大臣与?”子曰:“吾以子为异之问,曾由与求之问。所谓大臣者,以道事君,不可则止。今由与求也,可谓具臣矣。”

  曰:“然则从之者与?”子曰:“弑父与君,亦不从也。”

  子路使子羔为费宰。子曰:“贼夫人之子。”子路曰:“有民人焉,有社稷焉,何必读书,然后为学。”子曰:“是故恶夫佞者。”

  子路、曾皙、冉有、公西华侍坐。

  子曰:“以吾一日长乎尔,毋吾以也。居则曰:‘不吾知也!’如或知尔,则何以哉?”子路率尔而对曰:“千乘之国,摄乎大国之间,加之以师旅,因之以饥馑。

  由也为之,比及三年,可使有勇,且知方也。”夫子哂之。

  “求!尔何如?”对曰:“方六七十,如五六十,求也为之,比及三年,可使足民。如其礼乐,以俟君子。”

  “赤!尔何如?”对曰:“非曰能之,愿学焉。宗庙之事,如会同,端章甫,愿为小相焉。”

  “点!尔何如?”鼓瑟希,铿尔,舍瑟而作,对曰:“异乎三子者之撰。”

  子曰:“何伤乎?亦各言其志也。”

  曰:“莫春者,春服既成,冠者五六人,童子六七人,浴乎沂,风乎舞雩,咏而归。”夫子喟然叹曰:“吾与点也!”三子者出,曾皙后。曾皙曰:“夫三子者之言何如?”子曰:“亦各言其志也已矣。”

  曰:“夫子何哂由也?”曰:“为国以礼,其言不让,是故哂之。”

  “唯求则非邦也与?”“安见方六七十,如五六十,而非邦也者?”“唯赤则非邦也与?”“宗庙会同,非诸侯而何?赤也为之小,孰能为之大?”

  

  颜渊第十二

  

  颜渊问仁。子曰:“克己复礼为仁。一日克己复礼,天下归仁焉。为仁由己,而由人乎哉?”颜渊曰:“请问其目?”子曰:“非礼勿视,非礼勿听,非礼勿言,非礼勿动。”

  颜渊曰:“回虽不敏,请事斯语矣。”

  仲弓问仁。子曰:“出门如见大宾,使民如承大祭。己所不欲,勿施于人。

  在邦无怨,在家无怨。”

  仲弓曰:“雍虽不敏,请事斯语矣。”

  司马牛问仁。子曰:“仁者,其言也讱。”

  曰:“其言也讱,斯谓之仁已乎?”子曰:“为之难,言之得无讱乎?”司马牛问君子。子曰:“君子不忧不惧。”

  曰:“不忧不惧,斯谓之君子已乎?”子曰:“内省不疚,夫何忧何惧?”司马牛忧曰:“人皆有兄弟,我独亡!”子夏曰:“商闻之矣,死生有命,富贵在天。君子敬而无失,与人恭而有礼。四海之内皆兄弟也,君子何患乎无兄弟也?”子张问明。子曰:“浸润之谮,肤受之愬,不行焉,可谓明也已矣。浸润之谮,肤受之愬,不行焉,可谓远也已矣。”

  子贡问政。子曰:“足食,足兵,民信之矣。”

  子贡曰:“必不得已而去,于斯三者何先?”曰:“去兵。”

  子贡曰:“必不得已而去,于斯二者何先?”曰:“去食。自古皆有死,民无信不立。”

  棘子成曰:“君子质而已矣,何以文为?”子贡曰:“惜乎,夫子之说君子也,驷不及舌。文犹质也,质犹文也。虎豹之鞟犹犬羊之鞟。”

  哀公问于有若曰:“年饥,用不足,如之何?”有若对曰:“盍彻乎?”曰:“二,吾犹不足,如之何其彻也?”对曰:“百姓足,君孰与不足?百姓不足,君孰与足?”子张问崇德辨惑。子曰:“主忠信,徙义,崇德也。爱之欲其生,恶之欲其死。既欲其生,又欲其死,是惑也。‘诚不以富,亦祇以异。’”齐景公问政于孔子。孔子对曰:“君君、臣臣、父父、子子。”

  公曰:“善哉!信如君不君、臣不臣、父不父、子不子,虽有粟,吾得而食诸?”子曰:“片言可以折狱者,其由也与?”子路无宿诺。

  子曰:“听讼,吾犹人也,必也使无讼乎。”

  子张问政。子曰:“居之无倦,行之以忠。”

  子曰:“博学于文,约之以礼,亦可以弗畔矣夫!”子曰:“君子成人之美,不成人之恶。小人反是。”

  季康子问政于孔子。孔子对曰:“政者,正也。子帅以正,孰敢不正?”季康子患盗,问于孔子。孔子对曰:“苟子之不欲,虽赏之不窃。”

  季康子问政于孔子曰:“如杀无道,以就有道,何如?”孔子对曰:“子为政,焉用杀?子欲善而民善矣。君子之德风,小人之德草,草上之风,必偃。”

  子张问:“士何如斯可谓之达矣?”子曰:“何哉,尔所谓达者?”子张对曰:“在邦必闻,在家必闻。”子曰:“是闻也,非达也。夫达也者,质直而好义,察言而观色,虑以下人。在邦必达,在家必达。夫闻也者,色取仁而行违,居之不疑。在邦必闻,在家必闻。”

  樊迟从游于舞雩之下,曰:“敢问崇德,修慝,辨惑。”子曰:“善哉问!先事后得,非崇德与?攻其恶,勿攻人之恶,非修慝与?一朝之忿,忘其身以及其亲,非惑与?”樊迟问仁。子曰:“爱人。”问知。子曰:“知人。”

  樊迟未达。子曰:“举直错诸枉,能使枉者直。”

  樊迟退,见子夏曰:“乡也吾见于夫子而问知,子曰:‘举直错诸枉,能使枉者直。’何谓也?”子夏曰:“富哉,言乎!舜有天下,选于众,举皋陶,不仁者远矣。汤有天下,选于众,举伊尹,不仁者远矣。”

  子贡问友。子曰:“忠告而善道之,不可则止,毋自辱焉。”

  曾子曰:“君子以文会友,以友辅仁。”

  

  子路第十三

  

  子路问政。子曰:“先之劳之。”

  请益。曰:“无倦。”

  仲弓为季氏宰。问政。子曰:“先有司,赦小过,举贤才。”

  曰:“焉知贤才而举之?”曰:“举尔所知,尔所不知,人其舍诸?”子路曰:“卫君待子而为政,子将奚先?”子曰:“必也正名乎!”子路曰:“有是哉,子之迂也!奚其正?”子曰:“野哉,由也!君子于其所不知,盖阙如也。名不正,则言不顺;言不顺,则事不成;事不成,则礼乐不兴;礼乐不兴,则刑罚不中;刑罚不中,则民无所错手足。故君子名之必可言也,言之必可行也。君子于其言,无所苟而已矣。”

  樊迟请学稼。子曰:“吾不如老农。”

  请学为圃。曰:“吾不如老圃。”

  樊迟出。子曰:“小人哉,樊须也!上好礼,则民莫敢不敬;上好义,则民莫敢不服;上好信,则民莫敢不用情。夫如是,则四方之民襁负其子而至矣,焉用稼?”子曰:“诵《诗》三百,授之以政,不达;使于四方,不能专对;虽多,亦奚以为?”子曰:“其身正,不令而行;其身不正,虽令不从。”

  子曰:“鲁、卫之政,兄弟也。”

  子谓卫公子荆:“善居室。始有,曰:‘苟合矣。’少有,曰:‘苟完矣。’富有,曰:‘苟美矣。’”子适卫,冉有仆。子曰:“庶矣哉!”冉有曰:“既庶矣,又何加焉?”曰:“富之。”

  曰:“既富矣,又何加焉?”曰:“教之。”

  子曰:“苟有用我者,期月而已可也,三年有成。”

  子曰:“‘善人为邦百年,亦可以胜残去杀矣。’诚哉是言也!”子曰:“如有王者,必世而后仁。”

  子曰:“苟正其身矣,于从政乎何有?不能正其身,如正人何?”冉子退朝。子曰:“何晏也?”对曰:“有政。”子曰:“其事也,如有政,虽不吾以,吾其与闻之。”

  定公问:“一言而可以兴邦,有诸?”孔子对曰:“言不可以若是其几也。人之言曰:‘为君难,为臣不易。’如知为君之难也,不几乎一言而兴邦乎?”曰:“一言而丧邦,有诸?”孔子对曰:“言不可以若是其几也。人之言曰:‘予无乐乎为君,唯其言而莫予违也。’如其善而莫之违也,不亦善乎?如不善而莫之违也,不几乎一言而丧邦乎?”叶公问政。子曰:“近者说,远者来。”

  子夏为莒父宰,问政。子曰:“无欲速,无见小利。欲速则不达,见小利则大事不成。”

  叶公语孔子曰:“吾党有直躬者,其父攘羊,而子证之。”孔子曰:“吾党之直者异于是,父为子隐,子为父隐。直在其中矣。”

  樊迟问仁。子曰:“居处恭,执事敬,与人忠。虽之夷狄,不可弃也。”

  子贡问曰:“何如斯可谓之士矣?”子曰:“行己有耻,使于四方,不辱君命,可谓士矣。”

  曰:“敢问其次。”曰:“宗族称孝焉,乡党称弟焉。”

  曰:“敢问其次。”曰:“言必信,行必果,硁硁然,小人哉!抑亦可以为次矣。”

  曰:“今之从政者何如?”子曰:“噫!斗筲之人,何足算也?”子曰:“不得中行而与之,必也狂狷乎。狂者进取,狷者有所不为也。”

  子曰:“南人有言曰:‘人而无恒,不可以作巫医。’善夫!”“不恒其德,或承之羞。”子曰:“不占而已矣。”

  子曰:“君子和而不同,小人同而不和。”

  子贡问曰:“乡人皆好之,何如?”子曰:“未可也。”“乡人皆恶之,何如?”子曰:“未可也。不如乡人之善者好之,其不善者恶之。”

  子曰:“君子易事而难说也。说之不以道,不说也;及其使人也,器之。小人难事而易说也。说之虽不以道,说也;及其使人也,求备焉。”

  子曰:“君子泰而不骄,小人骄而不泰。”

  子曰:“刚、毅、木、讷,近仁。”

  子路问曰:“何如斯可谓之士矣?”子曰:“切切偲偲,怡怡如也,可谓士矣。朋友切切偲偲,兄弟怡怡。”

  子曰:“善人教民七年,亦可以即戎矣。”

  子曰:“以不教民战,是谓弃之。”

  
  宪问第十四

  

  宪问耻。子曰:“邦有道,谷;邦无道,谷,耻也。”

  “克、伐、怨、欲不行焉,可以为仁矣?”子曰:“可以为难矣,仁则吾不知也。”

  子曰:“士而怀居,不足以为士矣。”

  子曰:“邦有道,危言危行;邦无道,危行言孙。”

  子曰:“有德者必有言,有言者不必有德。仁者必有勇,勇者不必有仁。”

  南宫适问于孔子曰:“羿善射,奡荡舟,俱不得其死然。禹、稷躬稼而有天下。”夫子不答。

  南宫适出,子曰:“君子哉若人!尚德哉若人!”子曰:“君子而不仁者有矣夫,未有小人而仁者也。”

  子曰:“爱之,能勿劳乎?忠焉,能勿诲乎?”子曰:“为命,裨谌草创之,世叔讨论之,行人子羽修饰之,东里子产润色之。”

  或问子产。子曰:“惠人也。”

  问子西。曰:“彼哉!彼哉!”问管仲。曰:“人也。夺伯氏骈邑三百,饭疏食,没齿无怨言。”

  子曰:“贫而无怨难,富而无骄易。”

  子曰:“孟公绰为赵、魏老则优,不可以为滕、薛大夫。”

  子路问成人。子曰:“若臧武仲之知,公绰之不欲,卞庄子之勇,冉求之艺,文之以礼乐,亦可以为成人矣。”曰:“今之成人者何必然?见利思义,见危授命,久要不忘平生之言,亦可以为成人矣。”

  子问公叔文子于公明贾曰:“信乎,夫子不言,不笑,不取乎?”公明贾对曰:“以告者过也。夫子时然后言,人不厌其言;乐然后笑,人不厌其笑;义然后取,人不厌其取。”

  子曰:“其然?岂其然乎?”子曰:“臧武仲以防求为后于鲁,虽曰不要君,吾不信也。”

  子曰:“晋文公谲而不正,齐桓公正而不谲。”

  子路曰:“桓公杀公子纠,召忽死之,管仲不死。”曰:“未仁乎?”子曰:“桓公九合诸侯,不以兵车,管仲之力也。如其仁!如其仁!”子贡曰:“管仲非仁者与?桓公杀公子纠,不能死,又相之。”子曰:“管仲相桓公,霸诸侯,一匡天下,民到于今受其赐。微管仲,吾其被发左衽矣。岂若匹夫匹妇之为谅也,自经于沟渎而莫之知也。”

  公叔文子之臣大夫僎,与文子同升诸公。子闻之曰:“可以为‘文’矣!”子言卫灵公之无道也,康子曰:“夫如是,奚而不丧?”孔子曰:“仲叔圉治宾客,祝鮀治宗庙,王孙贾治军旅。夫如是,奚其丧?”子曰:“其言之不怍,则为之也难。”

  陈成子弑简公。孔子沐浴而朝,告于哀公曰:“陈恒弑其君,请讨之。”

  公曰:“告夫三子。”

  孔子曰:“以吾从大夫之后,不敢不告也。君曰‘告夫三子’者。”

  之三子告,不可。孔子曰:“以吾从大夫之后,不敢不告也。”

  子路问事君。子曰:“勿欺也,而犯之。”

  子曰:“君子上达,小人下达。”

  子曰:“古之学者为己,今之学者为人。”

  蘧伯玉使人于孔子,孔子与之坐而问焉,曰:“夫子何为?”对曰:“夫子欲寡其过而未能也。”

  使者出,子曰:“使乎!使乎!”子曰:“不在其位,不谋其政。”

  曾子曰:“君子思不出其位。”

  子曰:“君子耻其言而过其行。”

  子曰:“君子道者三,我无能焉:仁者不忧,知者不惑,勇者不惧。”子贡曰:“夫子自道也。”

  子贡方人。子曰:“赐也,贤乎哉?夫我则不暇。”

  子曰:“不患人之不己知,患其不能也。”

  子曰:“不逆诈,不亿不信,抑亦先觉者,是贤乎!”微生亩谓孔子曰:“丘何为是栖栖者与?无乃为佞乎?”孔子曰:“非敢为佞也,疾固也。”

  子曰:“骥不称其力,称其德也!”或曰:“以德报怨,何如?”子曰:“何以报德?以直报怨,以德报德。”

  子曰:“莫我知也夫!”子贡曰:“何为其莫知子也?”子曰:“不怨天,不尤人,下学而上达。知我者其天乎!”公伯寮愬子路于季孙。子服景伯以告,曰:“夫子固有惑志于公伯寮,吾力犹能肆诸市朝。”

  子曰:“道之将行也与,命也;道之将废也与,命也。公伯寮其如命何!”子曰:“贤者辟世,其次辟地,其次辟色,其次辟言。”

  子曰:“作者七人矣。”

  子路宿于石门。晨门曰:“奚自?”子路曰:“自孔氏。”曰:“是知其不可而为之者与?”子击磬于卫,有荷蕢而过孔氏之门者,曰:“有心哉,击磬乎!”既而曰:“鄙哉,硁硁乎,莫己知也,斯己而已矣。深则厉,浅则揭。”

  子曰:“果哉!末之难矣。”

  子张曰:“《书》云,‘高宗谅阴,三年不言。’何谓也?”子曰:“何必高宗,古之人皆然。君薨,百官总己以听于冢宰,三年。”

  子曰:“上好礼,则民易使也。”

  子路问君子。子曰:“修己以敬。”

  曰:“如斯而已乎?”曰:“修己以安人。”

  曰:“如斯而已乎?”曰:“修己以安百姓。修己以安百姓,尧、舜其犹病诸。”

  原壤夷俟。子曰:“幼而不孙弟,长而无述焉,老而不死,是为贼。”以杖叩其胫。

  阙党童子将命。或问之曰:“益者与?”子曰:“吾见其居于位也,见其与先生并行也,非求益者也,欲速成者也。”

 
  乡党第十

  

  孔子于乡党,恂恂如也,似不能言者。

  其在宗庙朝廷,便便言,唯谨尔。

  朝,与下大夫言,侃侃如也;与上大夫言,訚訚如也。君在,踧如也,与与如也。

  君召使摈,色勃如也,足躩如也。揖所与立,左右手,衣前后,襜如也。趋进,翼如也。宾退,必复命曰:“宾不顾矣。”

  入公门,鞠躬如也,如不容。立不中门,行不履阈。过位,色勃如也,足躩如也,其言似不足者。摄齐升堂,鞠躬如也,屏气似不息者。出,降一等,逞颜色,怡怡如也。没阶,趋进,翼如也。复其位,踧如也。

  执圭,鞠躬如也,如不胜。上如揖,下如授。勃如战色,足蹜々如有循。

  享礼,有容色。私觌,愉愉如也。

  君子不以绀緅饰,红紫不以为亵服。当暑,袗絺绤,必表而出之。缁衣,羔裘;素衣,麑裘;黄衣,狐裘。亵裘长,短右袂。必有寝衣,长一身有半。狐貉之厚以居。去丧,无所不佩。非帷裳,必杀之。羔裘玄冠不以吊。吉月必朝服而朝。

  齐,必有明衣,布。齐必变食,居必迁坐。

  食不厌精,脍不厌细。

  食饐而餲,鱼馁而肉败,不食。色恶,不食。臭恶,不食。失饪,不食。不时,不食。割不正,不食。不得其酱,不食。

  肉虽多,不使胜食气。唯酒无量,不及乱。沽酒市脯不食。不撤姜食,不多食。

  祭于公,不宿肉。祭肉不出三日。出三日,不食之矣。

  食不语,寝不言。虽疏食菜羹,瓜祭,必齐如也。席不正,不坐。

  乡人饮酒,杖者出,斯出矣。乡人傩,朝服而立于阼阶。

  问人于他邦,再拜而送之。

  康子馈药,拜而受之。曰:“丘未达,不敢尝。”

  厩焚。子退朝,曰:“伤人乎?”不问马。

  君赐食,必正席先尝之;君赐腥,必熟而荐之;君赐生,必畜之。

  侍食于君,君祭,先饭。疾,君视之,东首,加朝服,拖绅。

  君命召,不俟驾行矣。入太庙,每事问。

  朋友死,无所归,曰:“于我殡。”

  朋友之馈,虽车马,非祭肉,不拜。寝不尸,居不容。

  见齐衰者,虽狎,必变。见冕者与瞽者,虽亵,必以貌。凶服者式之,式负版者。

  有盛馔,必变色而作。迅雷风烈必变。

  升车,必正立执绥。车中不内顾,不疾言,不亲指。

  色斯举矣,翔而后集。曰:“山梁雌雉,时哉时哉!”子路共之,三嗅而作。

 

  《礼记乡饮酒义》

  

  乡饮酒之义,主人拜迎宾于庠门之外,入,三揖而后至阶,三让而后升,所以致尊让也。盥洗扬觯,所以致絜也。拜至,拜洗,拜受,拜送,拜既,所以致敬也。尊让絜敬也者,君子之所以相接也。君子尊让则不争,絜敬则不慢,不慢不争,则远于斗辨矣,不斗辨则无暴乱之祸矣,斯君子所以免于人祸也。故圣人制之以道。

  

  乡人,士君子,尊于房中之间,宾主共之也。尊有玄酒,贵其质也。羞出自东房,主人共之也。洗当东荣,主人之所以自絜而以事宾也。

  

  宾主象天地也,介僎象阴阳也,三宾象三光也,让之三也象月之三日而成魄也,四面之坐象四时也。天地严凝之气始于西南而盛于西北,此天地之尊严气也,此天地之义气也。天地温厚之气始于东北而盛于东南,此天地之盛德气也,此天地之仁气也。主人者尊宾,故坐宾于西北,而坐介于西南以辅宾。宾者,接人以义者也,故坐于西北。主人者,接人以德厚者也,故坐于东南,而坐僎于东北以辅主人也。仁义接,宾主有事,俎豆有数,曰圣。圣立而将之以敬,曰礼。礼以体长幼,曰德。德也者,得于身也。故曰:古之学术道者,将以得身也。是故圣人务焉。

  

  祭荐,祭酒,敬礼也。哜肺,尝礼也。啐酒,成礼也。于席末,言是席之正,非专为饮食也,为行礼也,此所以贵礼而贱财也。卒觯致实于西阶上,言是席之上,非专为饮食也,此先礼而后财之义也。先礼而后财,则民作敬让而不争矣。

  

  乡饮酒之礼,六十者坐,五十者立侍,以听政役,所以明尊长也。六十者三豆,七十者四豆,八十者五豆,九十者六豆,所以明养老也。民知尊长养老,而后乃能入孝弟。民入孝弟,出尊长养老,而后成教,成教而后国可安也。君子之所谓孝者,非家至而日见之也,合诸乡射,教之乡饮酒之礼,而孝弟之行立矣。

  

  孔子曰:吾观于乡而知王道之易易也。

  

  主人亲速宾及介,而众宾自从之。至于门外,主人拜宾及介,而众宾自入。贵贱之义别矣。

  

  三揖至于阶,三让以宾升,拜至献酬辞让之节繁,及介,省矣。至于众宾,升受,坐祭,立饮,不酢而降,隆杀之义别矣。

  

  工入,升歌三终,主人献之。笙入三终,主人献之。间歌三终,合乐三终,工告乐备,遂出,一人扬觯,乃立司正焉,知其能和乐而不流也。

  

  宾酬主人,主人酬介,介酬众宾。少长以齿,终于沃洗者焉,知其能弟长而无遗矣。

  

  降说屦升坐,修爵无数,饮酒之节,朝不废朝,莫不废夕。宾出,主人拜送,节文终遂焉,知其能安燕而不乱也。

  

  贵贱明,隆杀辨,和乐而不流,弟长而无遗,安燕而不乱,此五行者,足以正身安国矣,彼国安而天下安。故曰:吾观于乡而知王道之易易也。

  

  乡饮酒之义,立宾以象天,立主以象地,设介僎以象日月,立三宾以象三光。古之制礼也,经之以天地,纪之以日月,参之以三光,政教之本也。

  

  亨狗于东方,祖阳气之发于东方也。洗之在阼,其水在洗东,祖天地之左海也。尊有玄酒,教民不忘本也。

  

  宾必南乡。东方者春,春之为言蠢也,产万物者,圣也。南方者夏,夏之为言假也,养之长之假之,仁也。西方者秋,秋之为言愁也,愁之以时察,守义者也。北方者冬,冬之为言中也,中者,藏也。是以天子之立也,左圣,乡仁,右义,偝藏也。

  

  介必东乡,介宾主也。主人必居东方,东方者春,春之为言蠢也,产万物者也。主人者造之,产万物者也。月者三日则成魄,三月则成时,是以礼有三让。建国必立三卿,三宾者,政教之本,礼之大参也。

  

  襄公(元年~三十一年)

  

  !襄公元年

  【经】元年春王正月,公即位。仲孙蔑会晋栾黡、宋华元、卫宁殖、曹人、莒人、邾人、滕人、薛人围宋彭城。夏,晋韩厥帅师伐郑,仲孙蔑会齐崔杼、曹人、邾人、杞人次于鄫。秋,楚公子壬夫帅师侵宋。九月辛酉,天王崩。邾子来朝。冬,卫侯使公孙剽来聘。晋侯使荀罃来聘。

  

  【传】元年春己亥,围宋彭城。非宋地,追书也。于是为宋讨鱼石,故称宋,且不登叛人也,谓之宋志。彭城降晋,晋人以宋五大夫在彭城者归,置诸瓠丘。

  齐人不会彭城,晋人以为讨。二月,齐大子光为质于晋。

  夏五月,晋韩厥、荀偃帅诸侯之师伐郑,入其郛,败其徒兵于洧上。于是东诸侯之师次于鄫,以待晋师。晋师自郑以鄫之师侵楚焦夷及陈,晋侯、卫侯次于戚,以为之援。

  秋,楚子辛救郑,侵宋吕、留。郑子然侵宋,取犬丘。

  九月,邾子来朝,礼也。

  冬,卫子叔、晋知武子来聘,礼也。凡诸侯即位,小国朝之,大国聘焉,以继好结信,谋事补阙,礼之大者也。

  

  

  !襄公二年

  【经】二年春王正月,葬简王。郑师伐宋。夏五月庚寅,夫人姜氏薨。六月庚辰,郑伯仑卒。晋师、宋师、卫宁殖侵郑。秋七月,仲孙蔑会晋荀罃、宋华元、卫孙林父、曹人、邾人于戚。己丑,葬我小君齐姜。叔孙豹如宋。冬,仲孙蔑会晋荀罃、齐崔杼、宋华元、卫孙林父、曹人、邾人、滕人、薛人、小邾人于戚,遂城虎牢。楚杀其大夫公子申。

  

  【传】二年春,郑师侵宋,楚令也。

  齐侯伐莱,莱人使正舆子赂夙沙卫以索马牛,皆百匹,齐师乃还。君子是以知齐灵公之为“灵”也。

  夏,齐姜薨。初,穆姜使择美槚,以自为榇与颂琴。季文子取以葬。君子曰:“非礼也。礼无所逆,妇,养姑者也,亏姑以成妇,逆莫大焉。《诗》曰:‘其惟哲人,告之话言,顺德之行。’季孙于是为不哲矣。且姜氏,君之妣也。

  《诗》曰:‘为酒为醴,烝畀祖妣,以洽百礼,降福孔偕。’”齐侯使诸姜宗妇来送葬。召莱子,莱子不会,故晏弱城东阳以逼之。

  郑成公疾,子驷请息肩于晋。公曰:“楚君以郑故,亲集矢于其目,非异人任,寡人也。若背之,是弃力与言,其谁昵我?免寡人,唯二三子!”秋七月庚辰,郑伯仑卒。于是子罕当国,子驷为政,子国为司马。晋师侵郑,诸大夫欲从晋。子驷曰:“官命未改。”

  会于戚,谋郑故也。孟献子曰:“请城虎牢以逼郑。”知武子曰:“善。鄫之会,吾子闻崔子之言,今不来矣。滕、薛、小邾之不至,皆齐故也。寡君之忧不唯郑。罃将复于寡君,而请于齐。得请而告,吾子之功也。若不得请,事将在齐。君子之请,诸侯之福也,岂唯寡君赖之。”

  穆叔聘于宋,通嗣君也。

  冬,复会于戚,齐崔武子及滕、薛、小邾之大夫皆会,知武子之言故也。遂城虎牢,郑人乃成。

  楚公子申为右司马,多受小国之赂,以逼子重、子辛,楚人杀之。故书曰:“楚杀其大夫公子申。”

  

  

  !襄公三年

  【经】三年春,楚公子婴齐帅师伐吴。公如晋。夏四月壬戌,公及晋侯盟于长樗。公至自晋。六月,公会单子、晋侯、宋公、卫侯、郑伯、莒子、邾子、齐世子光。己未,同盟于鸡泽。陈侯使袁侨如会。戊寅,叔孙豹及诸侯之大夫及陈袁侨盟。秋,公至自会。冬,晋荀罃帅师伐许。

  

  【传】三年春,楚子重伐吴,为简之师,克鸠兹,至于衡山。使邓廖帅组甲三百、被练三千以侵吴。吴人要而击之,获邓廖。其能免者,组甲八十、被练三百而已。子重归,既饮至,三日,吴人伐楚,取驾。驾,良邑也。邓廖,亦楚之良也。君子谓:“子重于是役也,所获不如所亡。”楚人以是咎子重。子重病之,遂遇心病而卒。

  公如晋,始朝也。夏,盟于长樗。孟献子相,公稽首。知武子曰:“天子在,而君辱稽首,寡君惧矣。”孟献子曰:“以敝邑介在东表,密迩仇雠,寡君将君是望,敢不稽首?”晋为郑服故,且欲修吴好,将合诸侯。使士匄告于齐曰:“寡君使匄,以岁之不易,不虞之不戒,寡君愿与一二兄弟相见,以谋不协,请君临之,使匄乞盟。”

  齐侯欲勿许,而难为不协,乃盟于耏外。

  祁奚请老,晋侯问嗣焉。称解狐,其仇也,将立之而卒。又问焉,对曰:“午也可。”于是羊舌职死矣,晋侯曰:“孰可以代之?”对曰:“赤也可。”

  于是使祁午为中军尉,羊舌赤佐之。君子谓:“祁奚于是能举善矣。称其仇,不为谄。立其子,不为比。举其偏,不为党。《商书》曰:‘无偏无党,王道荡荡。’其祁奚之谓矣!解狐得举,祁午得位,伯华得官,建一官而三物成,能举善也夫!唯善,故能举其类。《诗》云:‘惟其有之,是以似之。’祁奚有焉。”

  六月,公会单顷公及诸侯。己未,同盟于鸡泽。

  晋侯使荀会逆吴子于淮上,吴子不至。

  楚子辛为令尹,侵欲于小国。陈成公使袁侨如会求成,晋侯使和组父告于诸侯。秋,叔孙豹及诸侯之大夫及陈袁侨盟,陈请服也。

  晋侯之弟扬干乱行于曲梁,魏绛戮其仆。晋侯怒,谓羊舌赤曰:“合诸侯以为荣也,扬干为戮,何辱如之?必杀魏绛,无失也!”对曰:“绛无贰志,事君不辟难,有罪不逃刑,其将来辞,何辱命焉?”言终,魏绛至,授仆人书,将伏剑。士鲂、张老止之。公读其书曰:“日君乏使,使臣斯司马。臣闻师众以顺为武,军事有死无犯为敬。君合诸侯,臣敢不敬?君师不武,执事不敬,罪莫大焉。

  臣惧其死,以及扬干,无所逃罪。不能致训,至于用钺。臣之罪重,敢有不从,以怒君心,请归死于司寇。”公跣而出,曰:“寡人之言,亲爱也。吾子之讨,军礼也。寡人有弟,弗能教训,使干大命,寡人之过也。子无重寡人之过,敢以为请。”

  晋侯以魏绛为能以刑佐民矣,反役,与之礼食,使佐新军。张老为中军司马,士富为候奄。

  楚司马公子何忌侵陈,陈叛故也。

  许灵公事楚,不会于鸡泽。冬,晋知武子帅师伐许。

  

  

  !襄公四年

  【经】四年春王三月己酉,陈侯午卒。夏,叔孙豹如晋。秋七月戊子,夫人姒氏薨。葬陈成公。八月辛亥,葬我小君定姒。冬,公如晋。陈人围顿。

  

  【传】四年春,楚师为陈叛故,犹在繁阳。韩献子患之,言于朝曰:“文王帅殷之叛国以事纣,唯知时也。今我易之,难哉!”三月,陈成公卒。楚人将伐陈,闻丧乃止。陈人不听命。臧武仲闻之,曰:“陈不服于楚,必亡。大国行礼焉而不服,在大犹有咎,而况小乎?”夏,楚彭名侵陈,陈无礼故也。

  穆叔如晋,报知武子之聘也,晋侯享之。金奏《肆夏》之三,不拜。工歌《文王》之三,又不拜。歌《鹿鸣》之三,三拜。韩献子使行人子员问之,曰:“子以君命,辱于敝邑。先君之礼,藉之以乐,以辱吾子。吾子舍其大,而重拜其细,敢问何礼也?”对曰:“三《夏》,天子所以享元侯也,使臣弗敢与闻。

  《文王》,两君相见之乐也,使臣不敢及。《鹿鸣》,君所以嘉寡君也,敢不拜嘉。?《四牡》,君所以劳使臣也,敢不重拜?《皇皇者华》,君教使臣曰:‘必咨于周。’臣闻之:‘访问于善为咨,咨亲为询,咨礼为度,咨事为诹,咨难为谋。’臣获五善,敢不重拜?”秋,定姒薨。不殡于庙,无榇,不虞。匠庆谓季文子曰:“子为正卿,而小君之丧不成,不终君也。君长,谁受其咎?”初,季孙为己树六槚于蒲圃东门之外。匠庆请木,季孙曰:“略。”匠庆用蒲圃之槚,季孙不御。君子曰:“《志》所谓‘多行无礼,必自及也’,其是之谓乎!”冬,公如晋听政,晋侯享公。公请属鄫,晋侯不许。孟献子曰:“以寡君之密迩于仇雠,而愿固事君,无失官命。鄫无赋于司马,为执事朝夕之命敝邑,敝邑褊小,阙而为罪,寡君是以愿借助焉!”晋侯许之。

  楚人使顿间陈而侵伐之,故陈人围顿。

  无终子嘉父使孟乐如晋,因魏庄子纳虎豹之皮,以请和诸戎。晋侯曰:“戎狄无亲而贪,不如伐之。”魏绛曰:“诸侯新服,陈新来和,将观于我,我德则睦,否则携贰。劳师于戎,而楚伐陈,必弗能救,是弃陈也,诸华必叛。戎,禽兽也,获戎失华,无乃不可乎?《夏训》有之曰:‘有穷后羿。’”公曰:“后羿何如?”对曰:“昔有夏之方衰也,后羿自鉏迁于穷石,因夏民以代夏政。恃其射也,不修民事而淫于原兽。弃武罗、伯困、熊髡、龙圉而用寒浞。寒浞,伯明氏之谗子弟也。伯明后寒弃之,夷羿收之,信而使之,以为己相。浞行媚于内而施赂于外,愚弄其民而虞羿于田,树之诈慝以取其国家,外内咸服。羿犹不悛,将归自田,家众杀而亨之,以食其子。其子不忍食诸,死于穷门。靡奔有鬲氏。

  浞因羿室,生浇及豷,恃其谗慝诈伪而不德于民。使浇用师,灭斟灌及斟寻氏。

  处浇于过,处豷于戈。靡自有鬲氏,收二国之烬,以灭浞而立少康。少康灭浇于过,后杼灭豷于戈。有穷由是遂亡,失人故也。昔周辛甲之为大史也,命百官,官箴王阙。于《虞人之箴》曰:‘芒芒禹迹,画为九州,经启九道。民有寝庙,兽有茂草,各有攸处,德用不扰。在帝夷羿,冒于原兽,忘其国恤,而思其麀牡。

  武不可重,用不恢于夏家。兽臣司原,敢告仆夫。’《虞箴》如是,可不惩乎?”于是晋侯好田,故魏绛及之。

  公曰:“然则莫如和戎乎?”对曰:“和戎有五利焉:戎狄荐居,贵货易土,土可贾焉,一也。边鄙不耸,民狎其野,穑人成功,二也。戎狄事晋,四邻振动,诸侯威怀,三也。以德绥戎,师徒不勤,甲兵不顿,四也。鉴于后羿,而用德度,远至迩安,五也。君其图之!”公说,使魏绛盟诸戎,修民事,田以时。

  冬十月,邾人、莒人伐鄫。臧纥救鄫,侵邾,败于狐骀。国人逆丧者皆髽。鲁于是乎始髽,国人诵之曰:“臧之狐裘,败我于狐骀。我君小子,朱儒是使。朱儒!朱儒!使我败于邾。”

  

  

  !襄公五年

  【经】五年春,公至自晋。夏,郑伯使公子发来聘。叔孙豹、鄫世子巫如晋。仲孙蔑、卫孙林父子会吴于善道。秋,大雩。楚杀其大夫公子壬夫。公会晋侯、宋公、陈侯、卫侯、郑伯、曹伯、莒子、邾子、滕子、薛伯、齐世子光、吴人、鄫人于戚。公至自会。冬,戍陈。楚公子贞帅师伐陈。公会晋侯、宋公、卫侯、郑伯、曹伯、齐世子光救陈。十有二月,公至自救陈。辛未,季孙行父卒。

  

  【传】五年春,公至自晋。

  王使王叔陈生愬戎于晋,晋人执之。士鲂如京师,言王叔之贰于戎也。

  夏,郑子国来聘,通嗣君也。

  穆叔觌鄫大子于晋,以成属鄫。书曰:“叔孙豹、鄫大子巫如晋。”

  言比诸鲁大夫也。

  吴子使寿越如晋,辞不会于鸡泽之故,且请听诸侯之好。晋人将为之合诸侯,使鲁、卫先会吴,且告会期。故孟献子、孙文子会吴于善道。

  秋,大雩,旱也。

  楚人讨陈叛故,曰:“由令尹子辛实侵欲焉。”乃杀之。书曰:“楚杀其大夫公子壬夫。”贪也。君子谓:“楚共王于是不刑。《诗》曰:‘周道挺挺,我心扃扃,讲事不令,集人来定。’己则无信,而杀人以逞,不亦难乎?《夏书》曰:‘成允成功。’”九月丙午,盟于戚,会吴,且命戍陈也。穆叔以属鄫为不利,使鄫大夫听命于会。

  楚子囊为令尹。范宣子曰:“我丧陈矣!楚人讨贰而立子囊,必改行而疾讨陈。陈近于楚,民朝夕急,能无往乎?有陈,非吾事也,无之而后可。”

  冬,诸侯戍陈。子囊伐陈。十一月甲午,会于城棣以救之。

  季文子卒。大夫入敛,公在位。宰庀家器为葬备,无衣帛之妾,无食粟之马,无藏金玉,无重器备。君子是以知季文子之忠于公室也。相三君矣,而无私积,可不谓忠乎?

  

  !襄公六年

  【经】六年春王三月,壬午,杞伯姑容卒。夏,宋华弱来奔。秋,杞葬桓公。

  滕子来朝。莒人灭鄫。冬,叔孙豹如邾,季孙宿如晋。十有二月,齐侯灭莱。

  

  【传】六年春,杞桓公卒,始赴以名,同盟故也。

  宋华弱与乐辔少相狎,长相优,又相谤也。子荡怒,以弓梏华弱于朝。平公见之,曰:“司武而梏于朝,难以胜矣!”遂逐之。夏,宋华弱来奔。司城子罕曰:“同罪异罚,非刑也。专戮于朝,罪孰大焉!”亦逐子荡。子荡射子罕之门,曰:“几日而不我从!”子罕善之如初。

  秋,滕成公来朝,始朝公也。

  莒人灭鄫,鄫恃赂也。

  冬,穆叔如邾,聘,且修平。

  晋人以鄫故来讨,曰:“何故亡鄫?”季武子如晋见,且听命。

  十一月,齐侯灭莱,莱恃谋也。于郑子国之来聘也,四月,晏弱城东阳,而遂围莱。甲寅,堙之环城,傅于堞。及杞桓公卒之月,乙未,王湫帅师及正舆子、棠人军齐师,齐师大败之。丁未,入莱。莱共公浮柔奔棠。正舆子、王湫奔莒,莒人杀之。四月,陈无宇献莱宗器于襄宫。晏弱围棠,十一月丙辰,而灭之。迁莱于郳。高厚、崔杼定其田。

  

  

  !襄公七年

  【经】七年春,郯子来朝。夏四月,三卜郊,不从,乃免牲。小邾子来朝。

  城费。秋,季孙宿如卫。八月,螽。冬十月,卫侯使孙林父来聘。壬戌,及孙林父盟。楚公子贞帅师围陈。十有二月,公会晋侯、宋公、陈侯、卫侯、曹伯、莒子、邾子于鄬。郑伯髡顽如会,未见诸侯,丙戌,卒于鄵。陈侯逃归。

  

  【传】七年春,郯子来朝,始朝公也。

  夏四月,三卜郊,不从,乃免牲。孟献子曰:“吾乃今而后知有卜筮。夫郊,祀后稷以祈农事也。是故启蛰而郊,郊而后耕。今既耕而卜郊,宜其不从也。”

  南遗为费宰。叔仲昭伯为隧正,欲善季氏而求媚于南遗,谓遗:“请城费,吾多与而役。”故季氏城费。

  小邾穆公来朝,亦始朝公也。

  秋,季武子如卫,报子叔之聘,且辞缓报,非贰也。

  冬十月,晋韩献子告老。公族穆子有废疾,将立之。辞曰:“《诗》曰:‘岂不夙夜,谓行多露。’又曰:‘弗躬弗亲,庶民弗信。’无忌不才,让,其可乎?请立起也!与田苏游,而曰好仁。《诗》曰:‘靖共尔位,好是正直。神之听之,介尔景福。’恤民为德,正直为正,正曲为直,参和为仁。如是,则神听之,介福降之。立之,不亦可乎?”庚戌,使宣子朝,遂老。晋侯谓韩无忌仁,使掌公族大夫。

  卫孙文子来聘,且拜武子之言,而寻孙桓子之盟。公登亦登。叔孙穆子相,趋进曰:“诸侯之会,寡君未尝后卫君。今吾子不后寡君,寡君未知所过。吾子其少安!”孙子无辞,亦无悛容。

  穆叔曰:“孙子必亡。为臣而君,过而不悛,亡之本也。《诗》曰:‘退食自公,委蛇委蛇。’谓从者也。衡而委蛇必折。”

  楚子囊围陈,会于鄬以救之。

  郑僖公之为大子也,于成之十六年,与子罕适晋,不礼焉。又与子丰适楚,亦不礼焉。及其元年,朝于晋。子丰欲愬诸晋而废之,子罕止之。及将会于鄬,子驷相,又不礼焉。侍者谏,不听,又谏,杀之。及鄵,子驷使贼夜弑僖公,而以疟疾赴于诸侯。简公生五年,奉而立之。

  陈人患楚。庆虎、庆寅谓楚人曰:“吾使公子黄往而执之。”楚人从之。二庆使告陈侯于会,曰:“楚人执公子黄矣!君若不来,群臣不忍社稷宗庙,惧有二图。”陈侯逃归。

  

  

  !襄公八年

  【经】八年春王正月,公如晋。夏,葬郑僖公。郑人侵蔡,获蔡公子燮。季孙宿会晋侯、郑伯、齐人、宋人、卫人、邾人于邢丘。公至自晋。莒人伐我东鄙。

  秋九月,大雩。冬,楚公子贞帅师伐郑。晋侯使士匄来聘。

  

  【传】八年春,公如晋,朝,且听朝聘之数。

  郑群公子以僖公之死也,谋子驷。子驷先之。夏四月庚辰,辟杀子狐、子熙、子侯、子丁。孙击、孙恶出奔卫。

  庚寅,郑子国、子耳侵蔡,获蔡司马公子燮。郑人皆喜,唯子产不顺,曰:“小国无文德,而有武功,祸莫大焉。楚人来讨,能勿从乎?从之,晋师必至。

  晋、楚伐郑,自今郑国不四五年,弗得宁矣。”子国怒之曰:“尔何知?国有大命,而有正卿。童子言焉,将为戮矣。”

  五月甲辰,会于邢丘,以命朝聘之数,使诸侯之大夫听命。季孙宿、齐高厚、宋向戌、卫宁殖、邾大夫会之。郑伯献捷于会,故亲听命。大夫不书,尊晋侯也。

  莒人伐我东鄙,以疆鄫田。

  秋九月,大雩,旱也。

  冬,楚子囊伐郑,讨其侵蔡也。

  子驷、子国、子耳欲从楚,子孔、子蟜、子展欲待晋。子驷曰:“《周诗》有之曰:‘俟河之清,人寿几何?兆云询多,职竞作罗。’谋之多族,民之多违,事滋无成。民急矣,姑从楚以纾吾民。晋师至,吾又从之。敬共币帛,以待来者,小国之道也。犠牲玉帛,待于二竞,以待强者而庇民焉。寇不为害,民不罢病,不亦可乎?”子展曰:“小所以事大,信也。小国无信,兵乱日至,亡无日矣。

  五会之信,今将背之,虽楚救我,将安用之?亲我无成,鄙我是欲,不可从也。

  不如待晋。晋君方明,四军无阙,八卿和睦,必不弃郑。楚师辽远,粮食将尽,必将速归,何患焉?舍之闻之:‘杖莫如信。’完守以老楚,杖信以待晋,不亦可乎?”子驷曰:“《诗》云:‘谋夫孔多,是用不集。发言盈庭,谁敢执其咎?如匪行迈谋,是用不得于道。’请从楚,騑也受其咎。”乃及楚平。

  使王子伯骈告于晋,曰:“君命敝邑:‘修而车赋,儆而师徒,以讨乱略。’蔡人不从,敝邑之人,不敢宁处,悉索敝赋,以讨于蔡,获司马燮,献于邢丘。

  今楚来讨曰:‘女何故称兵于蔡?’焚我郊保,冯陵我城郭。敝邑之众,夫妇男女,不皇启处,以相救也。翦焉倾覆,无所控告。民死亡者,非其父兄,即其子弟,夫人愁痛,不知所庇。民知穷困,而受盟于楚,狐也与其二三臣不能禁止。

  不敢不告。”知武子使行人子员对之曰:“君有楚命,亦不使一介行李告于寡君,而即安于楚。君之所欲也,谁敢违君?寡君将帅诸侯以见于城下,唯君图之!”晋范宣子来聘,且拜公之辱,告将用师于郑。公享之,宣子赋《摽有梅》。

  季武子曰:“谁敢哉!今譬于草木,寡君在君,君之臭味也。欢以承命,何时之有?”武子赋《角弓》。宾将出,武子赋《彤弓》。宣子曰:“城濮之役,我先君文公献功于衡雍,受彤弓于襄王,以为子孙藏。匄也,先君守官之嗣也,敢不承命?”君子以为知礼。

  

  

  !襄公九年

  【经】九年春,宋灾。夏,季孙宿如晋。五月辛酉,夫人姜氏薨。秋八月癸未,葬我小君穆姜。冬,公会晋侯、宋公、卫侯、曹伯、莒子、邾子、滕子、薛伯、杞伯,小邾子、齐世子光伐郑。十有二月己亥,同盟于戏。楚子伐郑。

  

  【传】九年春,宋灾。乐喜为司城以为政。使伯氏司里,火所未至,彻小屋,涂大屋;陈畚挶,具绠缶,备水器;量轻重,蓄水潦,积土涂;巡丈城,缮守备,表火道。使华臣具正徒,令隧正纳郊保,奔火所。使华阅讨右官,官庀其司。

  向戌讨左,亦如之。使乐遄庀刑器,亦如之。使皇郧命校正出马,工正出车,备甲兵,庀武守。使西鉏吾庀府守。令司宫、巷伯儆宫。二师令四乡正敬享,祝宗用马于四墉,祀盘庚于西门之外。

  晋侯问于士弱曰:“吾闻之,宋灾,于是乎知有天道。何故?”对曰:“古之火正,或食于心,或食于咮,以出内火。是故咮为鹑火,心为大火。陶唐氏之火正阏伯居商丘,祀大火,而火纪时焉。相土因之,故商主大火。商人阅其祸败之衅,必始于火,是以日知其有天道也。”公曰:“可必乎?”对曰:“在道。国乱无象,不可知也。”

  夏,季武子如晋,报宣子之聘也。

  穆姜薨于东宫。始往而筮之,遇《艮》之八ⅶⅶ。史曰:“是谓《艮》之《随》ⅷⅲ。《随》其出也。君必速也。”姜曰:“亡。是于《周易》曰:‘《随》,元亨利贞,无咎。’元,体之长也;亨,嘉之会也;利,义之和也;贞,事之干也。体仁足以长人,嘉德足以合礼,利物足以和义,贞固足以干事,然,故不可诬也,是以虽《随》无咎。今我妇人而与于乱。固在下位而有不仁,不可谓元。不靖国家,不可谓亨。作而害身,不可谓利。弃位而姣,不可谓贞。

  有四德者,《随》而无咎。我皆无之,岂《随》也哉?我则取恶,能无咎乎?必死于此,弗得出矣。”

  秦景公使士雃乞师于楚,将以伐晋,楚子许之。子囊曰:“不可。当今吾不能与晋争。晋君类能而使之,举不失选,官不易方。其卿让于善,其大夫不失守,其士竞于教,其庶人力于农穑。商工皂隶,不知迁业。韩厥老矣,知罃禀焉以为政。范匄少于中行偃而上之,使佐中军。韩起少于栾黡,而栾黡、士鲂上之,使佐上军。魏绛多功,以赵武为贤而为之佐。君明臣忠,上让下竞。当是时也,晋不可敌,事之而后可。君其图之!”王曰:“吾既许之矣。虽不及晋,必将出师。”秋,楚子师于武城以为秦援。秦人侵晋,晋饥,弗能报也。

  冬十月,诸侯伐郑。庚午,季武子、齐崔杼、宋皇郧从荀罃、士匄门于鄟门。卫北宫括、曹人、邾人从荀偃、韩起门于师之梁。滕人、薛人从栾黡、士鲂门于北门。杞人、郳人从赵武、魏绛斩行栗。甲戌,师于汜,令于诸侯曰:“修器备,盛糇粮,归老幼,居疾于虎牢,肆眚,围郑。”郑人恐,乃行成。中行献子曰:“遂围之,以待楚人之救也而与之战。不然,无成。”知武子曰:“许之盟而还师,以敝楚人。吾三分四军,与诸侯之锐以逆来者,于我未病,楚不能矣,犹愈于战。暴骨以逞,不可以争。大劳未艾。君子劳心,小人劳力,先王之制也”诸侯皆不欲战,乃许郑成。十一月己亥,同盟于戏,郑服也。

  将盟,郑六卿公子騑、公子发、公子嘉、公孙辄、公孙虿、公孙舍之及其大夫、门子皆从郑伯。晋士庄子为载书,曰:“自今日既盟之后,郑国而不唯晋命是听,而或有异志者,有如此盟。”公子騑趋进曰:“天祸郑国,使介居二大国之间。大国不加德音而乱以要之,使其鬼神不获歆其禋祀,其民人不获享其土利,夫妇辛苦垫隘,无所底告。自今日既盟之后,郑国而不唯有礼与强可以庇民者是从,而敢有异志者,亦如之。”荀偃曰:“改载书。”公孙舍之曰:“昭大神,要言焉。若可改也,大国亦可叛也。”知武子谓献子曰:“我实不德,而要人以盟,岂礼也哉!非礼,何以主盟?姑盟而退,修德息师而来,终必获郑,何必今日?我之不德,民将弃我,岂唯郑?若能休和,远人将至,何恃于郑?”乃盟而还。

  晋人不得志于郑,以诸侯复伐之。十二月癸亥,门其三门。闰月,戊寅,济于阴阪,侵郑。次于阴口而还。子孔曰:“晋师可击也,师老而劳,且有归志,必大克之。”子展曰:“不可。”

  公送晋侯。晋侯以公宴于河上,问公年,季武子对曰:“会于沙随之岁,寡君以生。”晋侯曰:“十二年矣!是谓一终,一星终也。国君十五而生子。冠而生子,礼也,君可以冠矣!大夫盍为冠具?”武子对曰:“君冠,必以祼享之礼行之,以金石之乐节之,以先君之祧处之。今寡君在行,未可具也。请及兄弟之国而假备焉。”晋侯曰:“诺。”公还,及卫,冠于成公之庙,假钟磬焉,礼也。

  楚子伐郑,子驷将及楚平。子孔、子蟜曰:“与大国盟,口血未干而背之,可乎?”子驷、子展曰:“吾盟固云:‘唯强是从。’今楚师至,晋不我救,则楚强矣。盟誓之言,岂敢背之?且要盟无质,神弗临也,所临唯信。信者,言之瑞也,善之主也,是故临之。明神不蠲要盟,背之可也。”乃及楚平。公子罢戎入盟,同盟于中分。

  楚庄夫人卒,王未能定郑而归。

  晋侯归,谋所以息民。魏绛请施舍,输积聚以贷。自公以下,苟有积者,尽出之。国无滞积,亦无困人。公无禁利,亦无贪民。祈以币更,宾以特牲,器用不作,车服从给。行之期年,国乃有节。三驾而楚不能与争。

  

  

  !襄公十年

  【经】十年春,公会晋侯、宋公、卫侯、曹伯、莒子、邾子、滕子、薛伯、杞伯、小邾子、齐世子光会吴于柤。夏,五月甲午,遂灭偪阳。公至自会。楚公子贞、郑公孙辄帅师伐宋。晋师伐秦。秋,莒人伐我东鄙。公会晋侯、宋公、卫侯、曹伯、莒子、邾子、齐世子光、滕子、薛伯、杞伯、小邾子伐郑。冬,盗杀郑公子騑、公子发、公孙辄。戍郑虎牢。楚公子贞帅师救郑。公至自伐郑。

  

  【传】十年春,会于柤,会吴子寿梦也。三月癸丑,齐高厚相大子光以先会诸侯于钟离,不敬。士庄子曰:“高子相大子以会诸侯,将社稷是卫,而皆不敬,弃社稷也,其将不免乎!”夏四月戊午,会于柤。

  晋荀偃、士匄请伐偪阳,而封宋向戌焉。荀罃曰:“城小而固,胜之不武,弗胜为笑。”固请。丙寅,围之,弗克。孟氏之臣秦堇父辇重如役。偪阳人启门,诸侯之士门焉。县门发,郰人纥抉之以出门者。狄虒弥建大车之轮而蒙之以甲以为橹,左执之,右拔戟,以成一队。孟献子曰:“《诗》所谓‘有力如虎’者也。”主人县布,堇父登之,及堞而绝之。队则又县之,苏而复上者三。主人辞焉,乃退,带其断以徇于军三日。

  诸侯之师久于偪阳,荀偃、士匄请于荀罃曰:“水潦将降,惧不能归,请班师。”知伯怒,投之以机,出于其间,曰:“女成二事而后告余。余恐乱命,以不女违。女既勤君而兴诸侯,牵帅老夫以至于此,既无武守,而又欲易余罪,曰:‘是实班师,不然克矣’。余赢老也,可重任乎?七日不克,必尔乎取之!”五月庚寅,荀偃、士匄帅卒攻偪阳,亲受矢石。甲午,灭之。书曰“遂灭偪阳”,言自会也。以与向戌,向戌辞曰:“君若犹辱镇抚宋国,而以偪阳光启寡君,群臣安矣,其何贶如之?若专赐臣,是臣兴诸侯以自封也,其何罪大焉?敢以死请。”

  乃予宋公。

  宋公享晋侯于楚丘,请以《桑林》。荀罃辞。荀偃、士匄曰:“诸侯宋、鲁,于是观礼。鲁有禘乐,宾祭用之。宋以《桑林》享君,不亦可乎?”舞,师题以旌夏,晋侯惧而退入于房。去旌,卒享而还。及著雍,疾。卜,桑林见。荀偃、士匄欲奔请祷焉。荀罃不可,曰:“我辞礼矣,彼则以之。犹有鬼神,于彼加之。”

  晋侯有间,以偪阳子归,献于武宫,谓之夷俘。偪阳妘姓也。使周内史选其族嗣,纳诸霍人,礼也。

  师归,孟献子以秦堇父为右。生秦丕兹,事仲尼。

  六月,楚子囊、郑子耳伐宋,师于訾毋。庚午,围宋,门于桐门。

  晋荀罃伐秦,报其侵也。

  卫侯救宋,师于襄牛。郑子展曰:“必伐卫,不然,是不与楚也。得罪于晋,又得罪于楚,国将若之何?”子驷曰:“国病矣!”子展曰:“得罪于二大国,必亡。病不犹愈于亡乎?”诸大夫皆以为然。故郑皇耳帅师侵卫,楚令也。孙文子卜追之,献兆于定姜。姜氏问繇。曰:“兆如山陵,有夫出征,而丧其雄。”

  姜氏曰:“征者丧雄,御寇之利也。大夫图之!”卫人追之,孙蒯获郑皇耳于犬丘。

  秋七月,楚子囊、郑子耳伐我西鄙。还,围萧,八月丙寅,克之。九月,子耳侵宋北鄙。孟献子曰:“郑其有灾乎!师竞已甚。周犹不堪竞,况郑乎?有灾,其执政之三士乎!”莒人间诸侯之有事也,故伐我东鄙。

  诸侯伐郑。齐崔杼使大子光先至于师,故长于滕。己酉,师于牛首。

  初,子驷与尉止有争,将御诸侯之师而黜其车。尉止获,又与之争。子驷抑尉止曰:“尔车,非礼也。”遂弗使献。初,子驷为田洫,司氏、堵氏、侯氏、子师氏皆丧田焉,故五族聚群不逞之人,因公子之徒以作乱。于是子驷当国,子国为司马,子耳为司空,子孔为司徒。冬十月戊辰,尉止、司臣、侯晋、堵女父、子师仆帅贼以入,晨攻执政于西宫之朝,杀子驷、子国、子耳,劫郑伯以如北宫。

  子孔知之,故不死。书曰“盗”,言无大夫焉。

  子西闻盗,不儆而出,尸而追盗,盗入于北宫,乃归授甲。臣妾多逃,器用多丧。子产闻盗,为门者,庀群司,闭府库,慎闭藏,完守备,成列而后出,兵车十七乘,尸而攻盗于北宫。子蟜帅国人助之,杀尉止,子师仆,盗众尽死。

  侯晋奔晋。堵女父、司臣、尉翩、司齐奔宋。

  子孔当国,为载书,以位序,听政辟。大夫、诸司、门子弗顺,将诛之。子产止之,请为之焚书。子孔不可,曰:“为书以定国,众怒而焚之,是众为政也,国不亦难乎?”子产曰:“众怒难犯,专欲难成,合二难以安国,危之道也。不如焚书以安众,子得所欲,众亦得安,不亦可乎?专欲无成,犯众兴祸,子必从之。”乃焚书于仓门之外,众而后定。

  诸侯之师城虎牢而戍之。晋师城梧及制,士鲂、魏绛戍之。书曰“戍郑虎牢”,非郑地也,言将归焉。郑及晋平。楚子囊救郑。十一月,诸侯之师还郑而南,至于阳陵,楚师不退。知武子欲退,曰:“今我逃楚,楚必骄,骄则可与战矣。”

  栾黡曰:“逃楚,晋之耻也。合诸侯以益耻,不如死!我将独进。”师遂进。己亥,与楚师夹颍而军。子矫曰:“诸侯既有成行,必不战矣。从之将退,不从亦退。退,楚必围我。犹将退也。不如从楚,亦以退之。”宵涉颍,与楚人盟。栾黡欲伐郑师,荀罃不可,曰:“我实不能御楚,又不能庇郑,郑何罪?不如致怨焉而还。今伐其师,楚必救之,战而不克,为诸侯笑。克不可命,不如还也!”丁未,诸侯之师还,侵郑北鄙而归。楚人亦还。

  王叔陈生与伯舆争政。王右伯舆,王叔陈生怒而出奔。及河,王复之,杀史狡以说焉。不入,遂处之。晋侯使士匄平王室,王叔与伯舆讼焉。王叔之宰与伯舆之大夫瑕禽坐狱于王庭,士匄听之。王叔之宰曰:“筚门闺窦之人而皆陵其上,其难为上矣!”瑕禽曰:“昔平王东迁,吾七姓从王,牲用备具。王赖之,而赐之骍旄之盟,曰:‘世世无失职。’若筚门闺窦,其能来东底乎?且王何赖焉?今自王叔之相也,政以贿成,而刑放于宠。官之师旅,不胜其富,吾能无筚门闺窦乎?唯大国图之!下而无直,则何谓正矣?”范宣子曰:“天子所右,寡君亦右之。所左,亦左之。”使王叔氏与伯舆合要,王叔氏不能举其契。王叔奔晋。

  不书,不告也。单靖公为卿士,以相王室。

  

  

  !襄公十一年

  【经】十有一年春王正月,作三军。夏四月,四卜郊,不从,乃不郊。郑公孙舍之帅师侵宋。公会晋侯、宋公、卫侯、曹伯、齐世子光、莒子、邾子、滕子、薛伯、杞伯、小邾子伐郑。秋七月己未,同盟于亳城北。公至自伐郑。楚子、郑伯伐宋。公会晋侯、宋公、卫侯、曹伯、齐世子光、莒子、邾子、滕子、薛伯、杞伯、小邾子伐郑,会于萧鱼。公至自会。楚执郑行人良霄。冬,秦人伐晋。

  

  【传】十一年春,季武子将作三军,告叔孙穆子曰:“请为三军,各征其军。”

  穆子曰:“政将及子,子必不能。”武子固请之,穆子曰:“然则盟诸?”乃盟诸僖闳,诅诸五父之衢。

  正月,作三军,三分公室而各有其一。三子各毁其乘。李氏使其乘之人,以其役邑入者,无征;不入者,倍征。孟氏使半为臣,若子若弟。叔孙氏使尽为臣,不然,不舍。

  郑人患晋、楚之故,诸大夫曰:“不从晋,国几亡。楚弱于晋,晋不吾疾也。

  晋疾,楚将辟之。何为而使晋师致死于我,楚弗敢敌,而后可固与也。”子展曰:“与宋为恶,诸侯必至,吾从之盟。楚师至,吾又从之,则晋怒甚矣。晋能骤来,楚将不能,吾乃固与晋。”大夫说之,使疆埸之司恶于宋。宋向戌侵郑,大获。

  子展曰:“师而伐宋可矣。若我伐宋,诸侯之伐我必疾,吾乃听命焉,且告于楚。

  楚师至,吾又与之盟,而重赂晋师,乃免矣。”夏,郑子展侵宋。

  四月,诸侯伐郑。己亥,齐大子光、宋向戌先至于郑,门于东门。其莫,晋荀罃至于西郊,东侵旧许。卫孙林父侵其北鄙。六月,诸侯会于北林,师于向,右还,次于琐,围郑。观兵于南门,西济于济隧。郑人惧,乃行成。

  秋七月,同盟于亳。范宣子曰:“不慎,必失诸侯。诸侯道敝而无成,能无贰乎?”乃盟,载书曰:“凡我同盟,毋蕴年,毋壅利,毋保奸,毋留慝,救灾患,恤祸乱,同好恶,奖王室。或间兹命,司慎司盟,名山名川,群神群祀,先王先公,七姓十二国之祖,明神殛之,俾失其民,队命亡氏,踣其国家。”

  楚子囊乞旅于秦,秦右大夫詹帅师从楚子,将以伐郑。郑伯逆之。丙子,伐宋。

  九月,诸侯悉师以复伐郑。郑人使良霄、大宰石如楚,告将服于晋,曰:“孤以社稷之故,不能怀君。君若能以玉帛绥晋,不然则武震以摄威之,孤之愿也。”楚人执之,书曰“行人”,言使人也。诸侯之师观兵于郑东门,郑人使王子伯骈行成。甲戌,晋赵武入盟郑伯。冬十月丁亥,郑子展出盟晋侯。十二月戊寅,会于萧鱼。庚辰,赦郑囚,皆礼而归之。纳斥候,禁侵掠。晋侯使叔肸告于诸侯。公使臧孙纥对曰:“凡我同盟,小国有罪,大国致讨,苟有以藉手,鲜不赦宥。寡君闻命矣。”郑人赂晋侯以师悝、师触、师蠲,广车、軘车淳十五乘,甲兵备,凡兵车百乘,歌钟二肆,及其镈磐,女乐二八。

  晋侯以乐之半赐魏绛,曰:“子教寡人和诸戎狄,以正诸华。八年之中,九合诸侯,如乐之和,无所不谐。请与子乐之。”辞曰:“夫和戎狄,国之福也;八年之中,九合诸侯,诸侯无慝,君之灵也,二三子之劳也,臣何力之有焉?抑臣愿君安其乐而思其终也!《诗》曰:‘乐只君子,殿天子之邦。乐只君子,福禄攸同。便蕃左右,亦是帅从。’夫乐以安德,义以处之,礼以行之,信以守之,仁以厉之,而后可以殿邦国,同福禄,来远人,所谓乐也。《书》曰:‘居安思危。’思则有备,有备无患,敢以此规。”公曰:“子之教,敢不承命。抑微子,寡人无以待戎,不能济河。夫赏,国之典也,藏在盟府,不可废也,子其受之!”魏绛于是乎始有金石之乐,礼也。

  秦庶长鲍、庶长武帅师伐晋以救郑。鲍先入晋地,士鲂御之,少秦师而弗设备。壬午,武济自辅氏,与鲍交伐晋师。己丑,秦、晋战于栎,晋师败绩,易秦故也。

  

  

  !襄公十二年

  【经】十有二年春王二月,莒人伐我东鄙,围台。季孙宿帅师救台,遂入郓。

  夏,晋侯使士鲂来聘。秋九月,吴子乘卒。冬,楚公子贞帅师侵宋。公如晋。

  

  【传】十二年春,莒人伐我东鄙,围台。季武子救台,遂入郓,取其钟以为公盘。

  夏,晋士鲂来聘,且拜师。

  秋,吴子寿梦卒。临于周庙,礼也。凡诸侯之丧,异姓临于外,同姓于宗庙,同宗于祖庙,同族于祢庙。是故鲁为诸姬,临于周庙。为邢、凡、蒋、茅、胙、祭临于周公之庙。

  冬,楚子囊、秦庶长无地伐宋,师于扬梁,以报晋之取郑也。

  灵王求后于齐。齐侯问对于晏桓子,桓子对曰:“先王之礼辞有之,天子求后于诸侯,诸侯对曰:‘夫妇所生若而人。妾妇之子若而人。’无女而有姊妹及姑姊妹,则曰:‘先守某公之遗女若而人。’”齐侯许昏,王使阴里逆之。

  公如晋,朝,且拜士鲂之辱,礼也。

  秦嬴归于楚。楚司马子庚聘于秦,为夫人宁,礼也。

  

  

  !襄公十三年

  【经】十有三年春,公至自晋。夏,取邿。秋九月庚辰,楚子审卒。冬,城防。

  

  【传】十三年春,公至自晋,孟献子书劳于庙,礼也。

  夏,邿乱,分为三。师救邿,遂取之。凡书“取”,言易也。用大师焉曰“灭”。弗地曰“入”。

  荀罃、士鲂卒。晋侯蒐于绵上以治兵,使士匄将中军,辞曰:“伯游长。昔臣习于知伯,是以佐之,非能贤也。请从伯游。”荀偃将中军,士匄佐之。使韩起将上军,辞以赵武。又使栾黡,辞曰:“臣不如韩起。韩起愿上赵武,君其听之!”使赵武将上军,韩起佐之。栾黡将下军,魏绛佐之。新军无帅,晋侯难其人,使其什吏,率其卒乘官属,以从于下军,礼也。晋国之民,是以大和,诸侯遂睦。君子曰:“让,礼之主也。范宣子让,其下皆让。栾黡为汰,弗敢违也。

  晋国以平,数世赖之。刑善也夫!一人刑善,百姓休和,可不务乎?《书》曰:‘一人有庆,兆民赖之,其宁惟永。’其是之谓乎?周之兴也,其《诗》曰:‘仪刑文王,万邦作孚。’言刑善也。及其衰也,其《诗》曰:‘大夫不均,我从事独贤。’言不让也。世之治也,君子尚能而让其下,小人农力以事其上,是以上下有礼,而谗慝黜远,由不争也,谓之懿德。及其乱也,君子称其功以加小人,小人伐其技以冯君子,是以上下无礼,乱虐并生,由争善也,谓之昏德。国家之敝,恒必由之。”

  楚子疾,告大夫曰:“不谷不德,少主社稷,生十年而丧先君,未及习师保之教训,而应受多福。是以不德,而亡师于鄢,以辱社稷,为大夫忧,其弘多矣。

  若以大夫之灵,获保首领以殁于地,唯是春秋窀穸之事,所以从先君于祢庙者,请为‘灵’若‘厉’。大夫择焉!”莫对。及五命乃许。

  秋,楚共王卒。子囊谋谥。大夫曰:“君有命矣。”子囊曰:“君命以共,若之何毁之?赫赫楚国,而君临之,抚有蛮夷,奄征南海,以属诸夏,而知其过,可不谓共乎?请谥之‘共’。”大夫从之。

  吴侵楚,养由基奔命,子庚以师继之。养叔曰:“吴乘我丧,谓我不能师也,必易我而不戒。子为三覆以待我,我请诱之。”子庚从之。战于庸浦,大败吴师,获公子党。君子以吴为不吊。《诗》曰:“不吊昊天,乱靡有定。”

  冬,城防,书事,时也。于是将早城,臧武仲请俟毕农事,礼也。

  郑良霄、大宰石犹在楚。石言于子囊曰:“先王卜征五年,而岁习其祥,祥习则行,不习则增修德而改卜。今楚实不竞,行人何罪?止郑一卿,以除其逼,使睦而疾楚,以固于晋,焉用之?使归而废其使,怨其君以疾其大夫,而相牵引也,不犹愈乎?”楚人归之。

  

  

  !襄公十四年

  【经】十有四年春王正月,季孙宿、叔老会晋士匄、齐人、宋人、卫人、郑公孙虿、曹人、莒人、邾人、滕人、薛人、杞人、小邾人会吴于向。二月乙朔,日有食之。夏四月,叔孙豹会晋荀偃、齐人、宋人、卫北宫括、郑公孙虿、曹人、莒人、邾人、滕人、薛人、杞人、小邾人伐秦。己未,卫侯出奔齐。莒人侵我东鄙。秋,楚公子贞帅师伐吴。冬,季孙宿会晋士匄、宋华阅、卫孙林父、郑公孙虿、莒人、邾人于戚。

  

  【传】十四年春,吴告败于晋。会于向,为吴谋楚故也。范宣子数吴之不德也,以退吴人。

  执莒公子务娄,以其通楚使也。

  将执戎子驹支。范宣子亲数诸朝,曰:“来!姜戎氏!昔秦人迫逐乃祖吾离于瓜州,乃祖吾离被苫盖,蒙荆棘,以来归我先君。我先君惠公有不腆之田,与女剖分而食之。今诸侯之事我寡君不如昔者,盖言语漏泄,则职女之由。诘朝之事,尔无与焉!与将执女!”对曰:“昔秦人负恃其众,贪于土地,逐我诸戎。

  惠公蠲其大德,谓我诸戎,是四岳之裔胄也,毋是翦弃。赐我南鄙之田,狐狸所居,豺狼所嗥。我诸戎除翦其荆棘,驱其狐狸豺狼,以为先君不侵不叛之臣,至于今不贰。昔文公与秦伐郑,秦人窃与郑盟而舍戍焉,于是乎有殽之师。晋御其上,戎亢其下,秦师不复,我诸戎实然。譬如捕鹿,晋人角之,诸戎掎之,与晋踣之,戎何以不免?自是以来,晋之百役,与我诸戎相继于时,以从执政,犹殽志也。岂敢离逖?今官之师旅,无乃实有所阙,以携诸侯,而罪我诸戎!我诸戎饮食衣服,不与华同,贽币不通,言语不达,何恶之能为?不与于会,亦无瞢焉!”赋《青蝇》而退。宣子辞焉,使即事于会,成恺悌也。于是,子叔齐子为季武子介以会,自是晋人轻鲁币,而益敬其使。

  吴子诸樊既除丧,将立季札。季札辞曰:“曹宣公之卒也,诸侯与曹人不义曹君,将立子臧。子臧去之,遂弗为也,以成曹君。君子曰:‘能守节。’君,义嗣也。谁敢奸君?有国,非吾节也。札虽不才,愿附于子臧,以无失节。”固立之。弃其室而耕。乃舍之。

  夏,诸侯之大夫从晋侯伐秦,以报栎之役也。晋侯待于竟,使六卿帅诸侯之师以进。及泾,不济。叔向见叔孙穆子。穆子赋《匏有苦叶》。叔向退而具舟,鲁人、莒人先济。郑子蟜见卫北宫懿子曰:“与人而不固,取恶莫甚焉!若社稷何?”懿子说。二子见诸侯之师而劝之济,济泾而次。秦人毒泾上流,师人多死。郑司马子蟜帅郑师以进,师皆从之,至于棫林,不获成焉。荀偃令曰:“鸡鸣而驾,塞井夷灶,唯余马首是瞻!”栾黡曰:“晋国之命,未是有也。余马首欲东。”乃归。下军从之。左史谓魏庄子曰:“不待中行伯乎?”庄子曰:“夫子命从帅。栾伯,吾帅也,吾将从之。从帅,所以待夫子也。”伯游曰:“吾令实过,悔之何及,多遗秦禽。”乃命大还。晋人谓之迁延之役。

  栾鍼曰:“此役也,报栎之败也。役又无功,晋之耻也。吾有二位于戎路,敢不耻乎?”与士鞅驰秦师,死焉。士鞅反,栾黡谓士匄曰:“余弟不欲住,而子召之。余弟死,而子来,是而子杀余之弟也。弗逐,余亦将杀之。”士鞅奔秦。

  于是,齐崔杼、宋华阅、仲江会伐秦,不书,惰也。向之会亦如之。卫北宫括不书于向,书于伐秦,摄也。

  秦伯问于士鞅曰:“晋大夫其谁先亡?”对曰:“其栾氏乎!”秦伯曰:“以其汰乎?”对曰:“然。栾黡汰虐已甚,犹可以免。其在盈乎!”秦伯曰:“何故?”对曰:“武子之德在民,如周人之思召公焉,爱其甘棠,况其子乎?栾黡死,盈之善未能及人,武子所施没矣,而黡之怨实章,将于是乎在。”秦伯以为知言,为之请于晋而复之。

  卫献公戒孙文子、宁惠子食,皆服而朝。日旰不召,而射鸿于囿。二子从之,不释皮冠而与之言。二子怒。孙文子如戚,孙蒯入使。公饮之酒,使大师歌《巧言》之卒章。大师辞,师曹请为之。初,公有嬖妾,使师曹诲之琴,师曹鞭之。

  公怒,鞭师曹三百。故师曹欲歌之,以怒孙子以报公。公使歌之,遂诵之。

  蒯惧,告文子。文子曰:“君忌我矣,弗先。必死。”并帑于戚而入,见蘧伯玉曰:“君之暴虐,子所知也。大惧社稷之倾覆,将若之何?”对曰:“君制其国,臣敢奸之?虽奸之,庸如愈乎?”遂行,从近关出。公使子蟜、子伯、子皮与孙子盟于丘宫,孙子皆杀之。四月己未,子展奔齐。公如鄄,使子行于孙子,孙子又杀之。公出奔齐,孙氏追之,败公徒于河泽。鄄人执之。

  初,尹公佗学射于庚公差,庚公差学射于公孙丁。二子追公,公孙丁御公。

  子鱼曰:“射为背师,不射为戮,射为礼乎。”射两軥而还。尹公佗曰:“子为师,我则远矣。”乃反之。公孙丁授公辔而射之,贯臂。

  子鲜从公,及竟,公使祝宗告亡,且告无罪。定姜曰:“无神何告?若有,不可诬也。有罪,若何告无?舍大臣而与小臣谋,一罪也。先君有冢卿以为师保,而蔑之,二罪也。余以巾栉事先君,而暴妾使余,三罪也。告亡而已,无告无罪。”

  公使厚成叔吊于卫,曰:“寡君使瘠,闻君不抚社稷,而越在他竟,若之何不吊?以同盟之故,使瘠敢私于执事曰:‘有君不吊,有臣不敏,君不赦宥,臣亦不帅职,增淫发泄,其若之何?’”卫人使大叔仪对曰:“群臣不佞,得罪于寡君。寡君不以即刑而悼弃之,以为君忧。君不忘先君之好,辱吊群臣,又重恤之。敢拜君命之辱,重拜大贶。”厚孙归,复命,语臧武仲曰:“卫君其必归乎!有大叔仪以守,有母弟鱄以出,或抚其内,或营其外,能无归乎?”齐人以郲寄卫侯。及其复也,以郲粮归。右宰谷从而逃归,卫人将杀之。

  辞曰:“余不说初矣,余狐裘而羔袖。”乃赦之。卫人立公孙剽,孙林父、宁殖相之,以听命于诸侯。

  卫侯在郲,臧纥如齐,唁卫侯。与之言,虐。退而告其人曰:“卫侯其不得入矣!其言粪土也,亡而不变,何以复国?”子展、子鲜闻之,见臧纥,与之言,道。臧孙说,谓其人曰:“卫君必入。夫二子者,或輓之,或推之,欲无入,得乎?”师归自伐秦,晋侯舍新军,礼也。成国不过半天子之军,周为六军,诸侯之大者,三军可也。于是知朔生盈而死,盈生六年而武子卒,彘裘亦幼,皆未可立也。新军无帅,故舍之。

  师旷侍于晋侯。晋侯曰:“卫人出其君,不亦甚乎?”对曰:“或者其君实甚。良君将赏善而刑淫,养民如子,盖之如天,容之如地。民奉其君,爱之如父母,仰之如日月,敬之如神明,畏之如雷霆,其可出乎?夫君,神之主而民之望也。若困民之主,匮神乏祀,百姓绝望,社稷无主,将安用之?弗去何为?天生民而立之君,使司牧之,勿使失性。有君而为之贰,使师保之,勿使过度。是故天子有公,诸侯有卿,卿置侧室,大夫有贰宗,士有朋友,庶人、工、商、皂、隶、牧、圉皆有亲昵,以相辅佐也。善则赏之,过则匡之,患则救之,失则革之。

  自王以下,各有父兄子弟,以补察其政。史为书,瞽为诗,工诵箴谏,大夫规诲,士传言,庶人谤,商旅于市,百工献艺。故《夏书》曰:‘遒人以木铎徇于路。

  官师相规,工执艺事以谏。’正月孟春,于是乎有之,谏失常也。天之爱民甚矣。

  岂其使一人肆于民上,以从其淫,而弃天地之性?必不然矣。”

  秋,楚子为庸浦之役故,子囊师于棠以伐吴,吴不出而还。子囊殿,以吴为不能而弗儆。吴人自皋舟之隘要而击之,楚人不能相救。吴人败之,获楚公子宜谷。

  王使刘定公赐齐侯命,曰:“昔伯舅大公,右我先王,股肱周室,师保万民,世胙大师,以表东海。王室之不坏,繄伯舅是赖。今余命女环!兹率舅氏之典,纂乃祖考,无忝乃旧。敬之哉,无废朕命!”晋侯问卫故于中行献子,对曰:“不如因而定之。卫有君矣,伐之,未可以得志而勤诸侯。史佚有言曰:‘因重而抚之。’仲虺有言曰:‘亡者侮之,乱者取之,推亡固存,国之道也。’君其定卫以待时乎!”冬,会于戚,谋定卫也。

  范宣子假羽毛于齐而弗归,齐人始贰。

  楚子囊还自伐吴,卒。将死,遗言谓子庚:“必城郢。”君子谓:“子囊忠。

  君薨不忘增其名,将死不忘卫社稷,可不谓忠乎?忠,民之望也。《诗》曰:‘行归于周,万民所望。’忠也。”

  

  

  !襄公十五年

  【经】十有五年春,宋公使向戌来聘。二月己亥,及向戌盟于刘。刘夏逆王后于齐。夏,齐侯伐我北鄙,围成。公救成,至遇。季孙宿、叔孙豹帅师城成郛。

  秋八月丁巳,日有食之。邾人伐我南鄙。冬十有一月癸亥,晋侯周卒。

  

  【传】十五年春,宋向戌来聘,且寻盟。见孟献子,尤其室,曰:“子有令闻,而美其室,非所望也!”对曰:“我在晋,吾兄为之,毁之重劳,且不敢间。”

  官师从单靖公逆王后于齐。卿不行,非礼也。

  楚公子午为令尹,公子罢戎为右尹,蒍子冯为大司马,公子櫜师为右司马,公子成为左司马,屈到为莫敖,公子追舒为箴尹,屈荡为连尹,养由基为宫厩尹,以靖国人。君子谓:“楚于是乎能官人。官人,国之急也。能官人,则民无觎心。

  《诗》云:“嗟我怀人,置彼周行。’能官人也。王及公、侯、伯、子、男、甸、采、卫大夫,各居其列,所谓周行也。”

  郑尉氏、司氏之乱,其余盗在宋。郑人以子西、伯有、子产之故,纳贿于宋,以马四十乘与师伐、师慧。三月,公孙黑为质焉。司城子罕以堵女父、尉翩、司齐与之。良司臣而逸之,托诸季武子,武子置诸卞。郑人醢之,三人也。

  师慧过宋朝,将私焉。其相曰:“朝也。”慧曰:“无人焉。”相曰:“朝也,何故无人?”慧曰:“必无人焉。若犹有人,岂其以千乘之相易淫乐之矇?必无人焉故也。”子罕闻之,固请而归之。

  夏,齐侯围成,贰于晋故也。于是乎城成郛。

  秋,邾人伐我南鄙。使告于晋,晋将为会以讨邾、莒。晋侯有疾,乃止。冬,晋悼公卒,遂不克会。

  郑公孙夏如晋奔丧,子蟜送葬。

  宋人或得玉,献诸子罕。子罕弗受。献玉者曰:“以示玉人,玉人以为宝也,故敢献之。”子罕曰:“我以不贪为宝,尔以玉为宝,若以与我,皆丧宝也。不若人有其宝。”稽首而告曰:“小人怀璧,不可以越乡。纳此以请死也。”子罕置诸其里,使玉人为之攻之,富而后使复其所。

  十二月,郑人夺堵狗之妻,而归诸范氏。

  

  

  !襄公十六年

  【经】十有六年春王正月,葬晋悼公。三月,公会晋侯、宋公、卫侯、郑伯、曹伯、莒子、邾子、薛伯、杞伯、小邾子,于湨梁。戊寅,大夫盟。晋人执莒子、邾子以归。齐侯伐我北鄙。夏,公至自会。五月甲子,地震。叔老会郑伯、晋荀偃、卫宁殖、宋人伐许。秋,齐侯伐我北鄙,围郕。大雩。冬,叔孙豹如晋。

  

  【传】十六年春,葬晋悼公。平公即位,羊舌肸为傅,张君臣为中军司马,祁奚、韩襄、栾盈、士鞅为公族大夫,虞丘书为乘马御。改服修官,烝于曲沃。

  警守而下,会于湨梁。命归侵田。以我故,执邾宣公、莒犁比公,且曰:“通齐、楚之使。”

  晋侯与诸侯宴于温,使诸大夫舞,曰:“歌诗必类!”齐高厚之诗不类。荀偃怒,且曰:“诸侯有异志矣!”使诸大夫盟高厚,高厚逃归。于是,叔孙豹、晋荀偃、宋向戌、卫宁殖、郑公孙虿、小邾之大夫盟曰:“同讨不庭。”

  许男请迁于晋。诸侯遂迁许,许大夫不可。晋人归诸侯。

  郑子蟜闻将伐许,遂相郑伯以从诸侯之师。穆叔从公。齐子帅师会晋荀偃。

  书曰:“会郑伯。”为夷故也。

  夏六月,次于棫林。庚寅,伐许,次于函氏。

  晋荀偃、栾黡帅师伐楚,以报宋扬梁之役。楚公子格帅师及晋师战于湛阪,楚师败绩。晋师遂侵方城之外,复伐许而还。

  秋,齐侯围郕,孟孺子速徼之。齐侯曰:“是好勇,去之以为之名。”速遂塞海陉而还。

  冬,穆叔如晋聘,且言齐故。晋人曰:“以寡君之未禘祀,与民之未息。不然,不敢忘。”穆叔曰:“以齐人之朝夕释憾于敝邑之地,是以大请!敝邑之急,朝不及夕,引领西望曰:‘庶几乎!’比执事之间,恐无及也!”见中行献子,赋《圻父》。献子曰:“偃知罪矣!敢不从执事以同恤社稷,而使鲁及此。”见范宣子,赋《鸿雁》之卒章。宣子曰:“匄在此,敢使鲁无鸠乎?”

  

  !襄公十七年

  【经】十有七年春王二月庚午,邾子卒。宋人伐陈。夏,卫石买帅师伐曹。

  秋,齐侯伐我北鄙,围桃。高厚帅师伐我北鄙,围防。九月,大雩。宋华臣出奔陈。冬,邾人伐我南鄙。

  

  【传】十七年春,宋庄朝伐陈,获司徒卬,卑宋也。

  卫孙蒯田于曹隧,饮马于重丘,毁其瓶。重丘人闭门而訽之,曰:“亲逐而君,尔父为厉。是之不忧,而何以田为?”夏,卫石买、孙蒯伐曹,取重丘。曹人愬于晋。

  齐人以其未得志于我故,秋,齐侯伐我北鄙,围桃。高厚围臧纥于防。师自阳关逆臧孙,至于旅松。郰叔纥、臧畴、臧贾帅甲三百,宵犯齐师,送之而复。

  齐师去之。

  齐人获臧坚。齐侯使夙沙卫唁之,且曰:“无死!”坚稽首曰:“拜命之辱!抑君赐不终,姑又使其刑臣礼于士。”以杙抉其伤而死。

  冬,邾人伐我南鄙,为齐故也。

  宋华阅卒。华臣弱皋比之室,使贼杀其宰华吴。贼六人以铍杀诸卢门合左师之后。左师惧曰:“老夫无罪。”贼曰:“皋比私有讨于吴。”遂幽其妻,曰:“畀余而大璧!”宋公闻之,曰:“臣也,不唯其宗室是暴,大乱宋国之政,必逐之!”左师曰:“臣也,亦卿也。大臣不顺,国之耻也。不如盖之。”乃舍之。

  左师为己短策,苟过华臣之门,必聘。

  十一月甲午,国人逐瘈狗,瘈狗入于华臣氏,国人从之。华臣惧,遂奔陈。

  宋皇国父为大宰,为平公筑台,妨于农功。子罕请俟农功之毕,公弗许。筑者讴曰:“泽门之皙,实兴我役。邑中之黔,实尉我心。”子罕闻之,亲执扑,以行筑者,而抶其不勉者,曰:“吾侪小人,皆有阖庐以辟燥湿寒暑。今君为一台而不速成,何以为役?”讴者乃止。或问其故,子罕曰:“宋国区区,而且诅有祝,祸之本也。”

  齐晏桓子卒。晏婴粗縗斩,苴绖、带、杖,菅屦,食鬻,居倚庐,寝苫,枕草。其老曰:“非大夫之礼也。”曰:“唯卿为大夫。”

  

  

  !襄公十八年

  【经】十有八年春,白狄来。夏,晋人执卫行人石买。秋,齐师伐我北鄙。

  冬十月,公会晋侯、宋公、卫侯、郑伯、曹伯、莒子、邾子、滕子、薛伯、杞伯、小邾子同围齐。曹伯负刍卒于师。楚公子午帅师伐郑。

  

  【传】十八年春,白狄始来。

  夏,晋人执卫行人石买于长子,执孙蒯于纯留,为曹故也。

  秋,齐侯伐我北鄙。中行献子将伐齐,梦与厉公讼,弗胜,公以戈击之,首队于前,跪而戴之,奉之以走,见梗阳之巫皋。他日,见诸道,与之言,同。巫曰:“今兹主必死,若有事于东方,则可以逞。”献子许诺。

  晋侯伐齐,将济河。献子以朱丝系玉二瑴,而祷曰:“齐环怙恃其险,负其众庶,弃好背盟,陵虐神主。曾臣彪将率诸侯以讨焉,其官臣偃实先后之。苟捷有功,无作神羞,官臣偃无敢复济。唯尔有神裁之!”沉玉而济。

  冬十月,会于鲁济,寻湨梁之言,同伐齐。齐侯御诸平阴,堑防门而守之,广里。夙沙卫曰:“不能战,莫如守险。”弗听。诸侯之士门焉,齐人多死。范宣子告析文子曰:“吾知子,敢匿情乎?鲁人、莒人皆请以车千乘自其乡入,既许之矣。若入,君必失国。子盍图之?”子家以告公,公恐。晏婴闻之曰:“君固无勇,而又闻是,弗能久矣。”齐侯登巫山以望晋师。晋人使司马斥山泽之险,虽所不至,必旆而疏陈之。使乘车者左实右伪,以旆先,舆曳柴而从之。齐侯见之,畏其众也,乃脱归。丙寅晦,齐师夜遁。师旷告晋侯曰:“鸟乌之声乐,齐师其遁。”邢伯告中行伯曰:“有班马之声,齐师其遁。”叔向告晋侯曰:“城上有乌,齐师其遁。”

  十一月丁卯朔,入平阴,遂从齐师。夙沙卫连大车以塞隧而殿。殖绰、郭最曰:“子殿国师,齐之辱也。子姑先乎!”乃代之殿。卫杀马于隘以塞道。晋州绰及之,射殖绰,中肩,两矢夹脰,曰:“止,将为三军获。不止,将取其衷。”

  顾曰:“为私誓。”州绰曰:“有如日!”乃弛弓而自后缚之。其右具丙亦舍兵而缚郭最,皆衿甲面缚,坐于中军之鼓下。

  晋人欲逐归者,鲁、卫请攻险。己卯,荀偃、士匄以中军克京兹。乙酉,魏绛、栾盈以下军克邿。赵武、韩起以上军围卢,弗克。十二月戊戌,及秦周,伐雍门之萩。范鞅门于雍门,其御追喜以戈杀犬于门中。孟庄子斩其橁以为公琴。己亥,焚雍门及西郭、南郭。刘难、士弱率诸侯之师焚申池之竹木。壬寅,焚东郭、北郭。范鞅门于扬门。州绰门于东闾,左骖迫,还于门中,以枚数阖。

  齐侯驾,将走邮棠。大子与郭荣扣马,曰:“师速而疾,略也。将退矣,君何惧焉!且社稷之主,不可以轻,轻则失众。君必待之。”将犯之,大子抽剑断鞅,乃止。甲辰,东侵及濰,南及沂。

  郑子孔欲去诸大夫,将叛晋而起楚师以去之。使告子庚,子庚弗许。楚子闻之,使杨豚尹宜告子庚曰:“国人谓不谷主社稷,而不出师,死不从礼。不谷即位,于今五年,师徒不出,人其以不谷为自逸,而忘先君之业矣。大夫图之!其若之何?”子庚叹曰:“君王其谓午怀安乎!吾以利社稷也。”见使者,稽首而对曰:“诸侯方睦于晋,臣请尝之。若可,君而继之。不可,收师而退,可以无害,君亦无辱。”子庚帅师治兵于汾。于是子蟜、伯有、子张从郑伯伐齐,子孔、子展、子西守。二子知子孔之谋,完守入保。子孔不敢会楚师。

  楚师伐郑,次于鱼陵。右师城上棘,遂涉颍,次于旃然。蒍子冯、公子格率锐师侵费滑、胥靡、献于、雍梁,右回梅山,侵郑东北,至于虫牢而反。子庚门于纯门,信于城下而还。涉于鱼齿之下,甚雨及之,楚师多冻,役徒几尽。

  晋人闻有楚师,师旷曰:“不害。吾骤歌北风,又歌南风。南风不竞,多死声。楚必无功。”董叔曰:“天道多在西北,南师不时,必无功。”叔向曰:“在其君之德也。”

  

  

  !襄公十九年

  【经】十有九年春王正月,诸侯盟于祝柯。晋人执邾子,公至自伐齐。取邾田,自漷水。季孙宿如晋。葬曹成公。夏,卫孙林父帅师伐齐。秋七月辛卯,齐侯环卒。晋士匄帅师侵齐,至谷,闻齐侯卒,乃还。八月丙辰,仲孙蔑卒。齐杀其大夫高厚。郑杀其大夫公子嘉。冬,葬齐灵公。城西郛。叔孙豹会晋士匄于柯。城武城。

  

  【传】十九年春,诸侯还自沂上,盟于督扬,曰:“大毋侵小。”

  执邾悼公,以其伐我故。遂次于泗上,疆我田。取邾田,自漷水归之于我。

  晋侯先归。公享晋六卿于蒲圃,赐之三命之服。军尉、司马、司空、舆尉、候奄,皆受一命之服。贿荀偃束锦,加璧,乘马,先吴寿梦之鼎。

  荀偃瘅疽,生疡于头。济河,及著雍,病,目出。大夫先归者皆反。士匄请见,弗内。请后,曰:“郑甥可。”二月甲寅,卒,而视,不可含。宣子盥而抚之,曰:“事吴,敢不如事主!”犹视。栾怀子曰:“其为未卒事于齐故也乎?”乃复抚之曰:“主苟终,所不嗣事于齐者,有如河!”乃暝,受含。宣子出,曰:“吾浅之为丈夫也。”

  晋栾鲂帅师从卫孙文子伐齐。季武子如晋拜师,晋侯享之。范宣子为政,赋《黍苗》。季武子兴,再拜稽首曰:“小国之仰大国也,如百谷之仰膏雨焉!若常膏之,其天下辑睦,岂唯敝邑?”赋《六月》。

  季武子以所得于齐之兵,作林钟而铭鲁功焉。臧武仲谓季孙曰:“非礼也。

  夫铭,天子令德,诸侯言时计功,大夫称伐。今称伐则下等也,计功则借人也,言时则妨民多矣,何以为铭?且夫大伐小,取其所得以作彝器,铭其功烈以示子孙,昭明德而惩无礼也。今将借人之力以救其死,若之何铭之?小国幸于大国,而昭所获焉以怒之,亡之道也。”

  齐侯娶于鲁,曰颜懿姬,无子。其侄鬲声姬,生光,以为大子。诸子仲子、戎子,戎子嬖。仲子生牙,属诸戎子。戎子请以为大子,许之。仲子曰:“不可。

  废常,不祥;间诸侯,难。光之立也,列于诸侯矣。今无故而废之,是专黜诸侯,而以难犯不祥也。君必悔之。”公曰:“在我而已。”遂东大子光。使高厚傅牙,以为大子,夙沙卫为少傅。

  齐侯疾,崔杼微逆光。疾病,而立之。光杀戎子,尸诸朝,非礼也。妇人无刑。虽有刑,不在朝市。

  夏五月壬辰晦,齐灵公卒。庄公即位,执公子牙于句渎之丘。以夙沙卫易己,卫奔高唐以叛。

  晋士匄侵齐,及谷,闻丧而还,礼也。

  于四月丁未,郑公孙虿卒,赴于晋大夫。范宣子言于晋侯,以其善于伐秦也。

  六月,晋侯请于王,王追赐之大路,使以行,礼也。

  秋八月,齐崔杼杀高厚于洒蓝而兼其室。书曰:“齐杀其大夫。”从君于昏也。

  郑子孔之为政也专。国人患之,乃讨西宫之难,与纯门之师。子孔当罪,以其甲及子革、子良氏之甲守。甲辰,子展、子西率国人伐之,杀子孔而分其室。

  书曰:“郑杀其大夫。”专也。子然、子孔,宋子之子也;士子孔,圭妫之子也。

  圭妫之班亚宋子,而相亲也;二子孔亦相亲也。僖之四年,子然卒,简之元年,士子孔卒。司徒孔实相子革、子良之室,三室如一,故及于难。子革、子良出奔楚,子革为右尹。郑人使子展当国,子西听政,立子产为卿。

  齐庆封围高唐,弗克。冬十一月,齐侯围之,见卫在城上,号之,乃下。问守备焉,以无备告。揖之,乃登。闻师将傅,食高唐人。殖绰、工偻会夜缒纳师,醢卫于军。

  城西郛,惧齐也。

  齐及晋平,盟于大隧。故穆叔会范宣子于柯。穆叔见叔向,赋《载驰》之四章。叔向曰:“肸敢不承命。”穆叔曰:“齐犹未也,不可以不惧。”乃城武城。

  卫石共子卒,悼子不哀。孔成子曰:“是谓蹶其本,必不有其宗。”

  

  

  !襄公二十年

  【经】二十年春王正月辛亥,仲孙速会莒人盟于向。夏六月庚申,公会晋侯、齐侯、宋公、卫侯、郑伯、曹伯、莒子、邾子、滕子、薛伯、杞伯,小邾子盟于澶渊。秋,公至自会。仲孙速帅师伐邾。蔡杀其大夫公子燮。蔡公子履出奔楚。

  陈侯之弟黄出奔楚。叔老如齐。冬十月丙辰朔,日有食之。季孙宿如宋。

  

  【传】二十年春,及莒平。孟庄子会莒人,盟于向,督扬之盟故也。

  夏,盟于澶渊,齐成故也。

  邾人骤至,以诸侯之事,弗能报也。秋,孟庄子伐邾以报之。

  蔡公子燮欲以蔡之晋,蔡人杀之。公子履,其母弟也,故出奔楚。

  陈庆虎、庆寅畏公子黄之逼,愬诸楚曰:“与蔡司马同谋。”楚人以为讨。

  公子黄出奔楚。

  初,蔡文侯欲事晋,曰:“先君与于践士之盟,晋不可弃,且兄弟也。”畏楚,不能行而卒。楚人使蔡无常,公子燮求从先君以利蔡,不能而死。书曰:“蔡杀其大夫公子燮”,言不与民同欲也;“陈侯之弟黄出奔楚”,言非其罪也。

  公子黄将出奔,呼于国曰:“庆氏无道,求专陈国,暴蔑其君,而去其亲,五年不灭,是无天也。”

  齐子初聘于齐,礼也。

  冬,季武子如宋,报向戌之聘也。褚师段逆之以受享,赋《常棣》之七章以卒。宋人重贿之。归,复命,公享之。赋《鱼丽》之卒章。公赋《南山有台》。

  武子去所,曰:“臣不堪也。”

  卫宁惠子疾,召悼子曰:“吾得罪于君,悔而无及也。名藏在诸侯之策,曰:‘孙林父、宁殖出其君。’君入则掩之。若能掩之,则吾子也。若不能,犹有鬼神,吾有馁而已,不来食矣。”悼子许诺,惠子遂卒。

  

  

  !襄公二十一年

  【经】二十有一年春王正月,公如晋。邾庶其以漆、闾丘来奔。夏,公至自晋。秋,晋盈出奔楚。九月庚戌朔,日有食之。冬十月庚辰朔,日有食之。曹伯来朝。公会晋侯、齐侯、宋公、卫侯、郑伯、曹伯、莒子、邾子于商任。

  

  【传】二十一年春,公如晋,拜师及取邾田也。

  邾庶其以漆、闾丘来奔。季武子以公姑姊妻之,皆有赐于其从者。

  于是鲁多盗。季孙谓臧武仲曰:“子盍诘盗?”武仲曰:“不可诘也,纥又不能。”季孙曰:“我有四封,而诘其盗,何故不可?子为司寇,将盗是务去,若之何不能?”武仲曰:“子召外盗而大礼焉,何以止吾盗?子为正卿,而来外盗;使纥去之,将何以能?庶其窃邑于邾以来,子以姬氏妻之,而与之邑,其从者皆有赐焉。若大盗礼焉以君之姑姊与其大邑,其次皂牧舆马,其小者衣裳剑带,是赏盗也。赏而去之,其或难焉。纥也闻之,在上位者,洒濯其心,壹以待人,轨度其信,可明征也,而后可以治人。夫上之所为,民之归也。上所不为而民或为之,是以加刑罚焉,而莫敢不惩。若上之所为而民亦为之,乃其所也,又可禁乎?《夏书》曰:‘念兹在兹,释兹在兹,名言兹在兹,允出兹在兹,惟帝念功。’将谓由己壹也。信由己壹,而后功可念也。”

  庶其非卿也,以地来,虽贱必书,重地也。

  齐侯使庆佐为大夫,复讨公子牙之党,执公子买于句渎之丘。公子鉏来奔。

  叔孙还奔燕。

  夏,楚子庚卒,楚子使薳子冯为令尹。访于申叔豫,叔豫曰:“国多宠而王弱,国不可为也。”遂以疾辞。方署,阙地,下冰而床焉。重茧衣裘,鲜食而寝。

  楚子使医视之,复曰:“瘠则甚矣,而血气未动。”乃使子南为令尹。

  栾桓子娶于范宣子,生怀子。范鞅以其亡也,怨栾氏,故与栾盈为公族大夫而不相能。桓子卒,栾祁与其老州宾通,几亡室矣。怀子患之。祁惧其讨也,愬诸宣子曰:“盈将为乱,以范氏为死桓主而专政矣,曰:‘吾父逐鞅也,不怒而以宠报之,又与吾同官而专之,吾父死而益富。死吾父而专于国,有死而已,吾蔑从之矣!’其谋如是,惧害于主,吾不敢不言。”范鞅为之征。怀子好施,士多归之。宣子畏其多士也,信之。怀子为下卿,宣子使城著而遂逐之。

  秋,栾盈出奔楚。宣子杀箕遗、黄渊、嘉父、司空靖、邴豫、董叔、邴师、申书、羊舌虎、叔罴。囚伯华、叔向、籍偃。人谓叔向曰:“子离于罪,其为不知乎?”叔向曰:“与其死亡若何?《诗》曰:‘优哉游哉,聊以卒岁。’知也。”

  乐王鲋见叔向曰:“吾为子请!”叔向弗应。出,不拜。其人皆咎叔向。叔向曰:“必祁大夫。。”室老闻之,曰:“乐王鲋言于君无不行,求赦吾子,吾子不许。

  祁大夫所不能也,而曰‘必由之’,何也?”叔向曰:“乐王鲋,从君者也,何能行?祁大夫外举不弃仇,内举不失亲,其独遗我乎?《诗》曰:‘有觉德行,四国顺之。’夫子,觉者也。”

  晋侯问叔向之罪于乐王鲋,对曰:“不弃其亲,其有焉。”于是祁奚老矣,闻之,乘驲而见宣子,曰:“《诗》曰:‘惠我无疆,子孙保之。’《书》曰:‘圣有谟勋,明征定保。’夫谋而鲜过,惠训不倦者,叔向有焉,社稷之固也。

  犹将十世宥之,以劝能者。今壹不免其身,以弃社稷,不亦惑乎?鲧殛而禹兴。

  伊尹放大甲而相之,卒无怨色。管、蔡为戮,周公右王。若之何其以虎也弃社稷?子为善,谁敢不勉?多杀何为?”宣子说,与之乘,以言诸公而免之。不见叔向而归。叔向亦不告免焉而朝。

  初,叔向之母妒叔虎之母美而不使,其子皆谏其母。其母曰:“深山大泽,实生龙蛇。彼美,余惧其生龙蛇以祸女。女,敝族也。国多大宠,不仁人间之,不亦难乎?余何爱焉!”使往视寝,生叔虎。美而有勇力,栾怀子嬖之,故羊舌氏之族及于难。

  栾盈过于周,周西鄙掠之。辞于行人,曰:“天子陪臣盈,得罪于王之守臣,将逃罪。罪重于郊甸,无所伏窜,敢布其死。昔陪臣书能输力于王室,王施惠焉。

  其子黡,不能保任其父之劳。大君若不弃书之力,亡臣犹有所逃。若弃书之力,而思黡之罪,臣,戮余也,将归死于尉氏,不敢还矣。敢布四体,唯大君命焉!”王曰:“尤而效之,其又甚焉!”使司徒禁掠栾氏者,归所取焉。使候出诸轘辕。

  冬,曹武公来朝,始见也。

  会于商任,锢栾氏也。齐侯、卫侯不敬。叔向曰:“二君者必不免。会朝,礼之经也;礼,政之舆也;政,身之守也;怠礼失政,失政不立,是以乱也。”

  知起、中行喜、州绰、邢蒯出奔齐,皆栾氏之党也。乐王鲋谓范宣子曰:“盍反州绰、邢蒯,勇士也。”宣子曰:“彼栾氏之勇也,余何获焉?”王鲋曰:“子为彼栾氏,乃亦子之勇也。”

  齐庄公朝,指殖绰、郭最曰:“是寡人之雄也。”州绰曰:“君以为雄,谁敢不雄?然臣不敏,平阴之役,先二子鸣。”庄公为勇爵。殖绰、郭最欲与焉。

  州绰曰:“东闾之役,臣左骖迫,还于门中,识其枚数。其可以与于此乎?”公曰:“子为晋君也。”对曰:“臣为隶新。然二子者,譬于禽兽,臣食其肉而寝处其皮矣。”

  

  

  !襄公二十二年

  【经】二十有二年春王正月,公至自会。夏四月。秋七月辛酉,叔老卒。冬,公会晋侯、齐侯、宋公、卫侯、郑伯、曹伯、莒子、邾子、薛伯、杞伯、小邾子于沙随。公至自会。楚杀其大夫公子追舒。

  

  【传】二十二年春,臧武仲如晋,雨,过御叔。御叔在其邑,将饮酒,曰:“焉用圣人!我将饮酒而已,雨行,何以圣为?”穆叔闻之曰:“不可使也,而傲使人,国之蠹也。”令倍其赋。

  夏,晋人征朝于郑。郑人使少正公孙侨对曰:“在晋先君悼公九年,我寡君于是即位。即位八月,而我先大夫子驷从寡君以朝于执事。执事不礼于寡君。寡君惧,因是行也,我二年六月朝于楚,晋是以有戏之役。楚人犹竞,而申礼于敝邑。敝邑欲从执事而惧为大尤,曰晋其谓我不共有礼,是以不敢携贰于楚。我四年三月,先大夫子蟜又从寡君以观衅于楚,晋于是乎有萧鱼之役。谓我敝邑,迩在晋国,譬诸草木,吾臭味也,而何敢差池?楚亦不竞,寡君尽其土实,重之以宗器,以受齐盟。遂帅群臣随于执事以会岁终。贰于楚者,子侯、石盂,归而讨之。湨梁之明年,子蟜老矣,公孙夏从寡君以朝于君,见于尝酎,与执燔焉。间二年,闻君将靖东夏,四月又朝,以听事期。不朝之间,无岁不聘,无役不从。以大国政令之无常,国家罢病,不虞荐至,无日不惕,岂敢忘职?大国若安定之,其朝夕在庭,何辱命焉?若不恤其患,而以为口实,其无乃不堪任命,而翦为仇雠,敝邑是惧。其敢忘君命?委诸执事,执事实重图之。”

  秋,栾盈自楚适齐。晏平仲言于齐侯曰:“商任之会,受命于晋。今纳栾氏,将安用之?小所以事大,信也。失信不立,君其图之。”弗听。退告陈文子曰:“君人执信,臣人执共,忠信笃敬,上下同之,天之道也。君自弃也,弗能久矣!”九月,郑公孙黑肱有疾,归邑于公。召室老、宗人立段,而使黜官、薄祭。

  祭以特羊,殷以少牢。足以共祀,尽归其余邑。曰:“吾闻之,生于乱世,贵而能贫,民无求焉,可以后亡。敬共事君,与二三子。生在敬戒,不在富也。”己巳,伯张卒。君子曰:“善戒。《诗》曰:‘慎尔侯度,用戒不虞。’郑子张其有焉。”

  冬,会于沙随,复锢栾氏也。

  栾盈犹在齐,晏子曰:“祸将作矣!齐将伐晋,不可以不惧。”

  楚观起有宠于令尹子南,未益禄,而有马数十乘。楚人患之,王将讨焉。子南之子弃疾为王御士,王每见之,必泣。弃疾曰:“君三泣臣矣,敢问谁之罪也?”王曰:“令尹之不能,尔所知也。国将讨焉,尔其居乎?”对曰:“父戮子居,君焉用之?泄命重刑,臣亦不为。”王遂杀子南于朝,轘观起于四竟。子南之臣谓弃疾,请徙子尸于朝,曰:“君臣有礼,唯二三子。”三日,弃疾请尸,王许之。既葬,其徒曰:“行乎?”曰:“吾与杀吾父,行将焉入?”曰:“然则臣王乎?”曰:“弃父事仇,吾弗忍也。”遂缢而死。

  复使薳子冯为令尹,公子齮为司马。屈建为莫敖。有宠于薳子者八人,皆无禄而多马。他日朝,与申叔豫言。弗应而退。从之,入于人中。又从之,遂归。

  退朝,见之,曰:“子三困我于朝,吾惧,不敢不见。吾过,子姑告我。何疾我也?”对曰:“吾不免是惧,何敢告子?”曰:“何故?”对曰:“昔观起有宠于子南,子南得罪,观起车裂。何故不惧?”自御而归,不能当道。至,谓八人者曰:“吾见申叔,夫子所谓生死而肉骨也。知我者,如夫子则可。不然,请止。”

  辞八人者,而后王安之。

  十二月,郑游贩将归晋,未出竟,遭逆妻者,夺之,以馆于邑。丁巳,其夫攻子明,杀之,以其妻行。子展废良而立大叔,曰:“国卿,君之贰也,民之主也,不可以苟。请舍子明之类。”求亡妻者,使复其所。使游氏勿怨,曰:“无昭恶也。”

  

  

  !襄公二十三年

  【经】二十有三年春王二月癸酉朔,日有食之。三月己巳,杞伯匄卒。夏,邾畀我来奔。葬杞孝公。陈杀其大夫庆虎及庆寅。陈侯之弟黄自楚归于陈。晋栾盈复入于晋,入于曲沃。秋,齐侯伐卫,遂伐晋。八月,叔孙豹帅师救晋,次于雍榆。己卯,仲孙速卒。冬十月乙亥,臧孙纥出奔邾。晋人杀栾盈。齐侯袭莒。

  

  【传】二十三年春,杞孝公卒,晋悼夫人丧之。平公不彻乐,非礼也。礼,为邻国阙。

  陈侯如楚。公子黄愬二庆于楚,楚人召之。使庆乐往,杀之。庆氏以陈叛。

  夏,屈建从陈侯围陈。陈人城,板队而杀人。役人相命,各杀其长。遂杀庆虎、庆寅。楚人纳公子黄。君子谓:“庆氏不义,不可肆也。故《书》曰:‘惟命不于常。’”晋将嫁女于吴,齐侯使析归父媵之,以藩载栾盈及其士,纳诸曲沃。栾盈夜见胥午而告之。对曰:“不可。天之所废,谁能兴之?子必不免。吾非爱死也,知不集也。”盈曰:“虽然,因子而死,吾无悔矣。我实不天,子无咎焉。”许诺。伏之,而觞曲沃人。乐作。午言曰:“今也得栾孺子,何如?”对曰:“得主而为之死,犹不死也。”皆叹,有泣者。爵行,又言。皆曰:“得主,何贰之有?”盈出,遍拜之。

  四月,栾盈帅曲沃之甲,因魏献子,以昼入绛。初,栾盈佐魏庄子于下军,献子私焉,故因之。赵氏以原、屏之难怨栾氏,韩、赵方睦。中行氏以伐秦之役怨栾氏,而固与范氏和亲。知悼子少,而听于中行氏。程郑嬖于公。唯魏氏及七舆大夫与之。

  乐王鲋待坐于范宣子。或告曰:“栾氏至矣!”宣子惧。桓子曰:“奉君以走固宫,必无害也。且栾氏多怨,子为政,栾氏自外,子在位,其利多矣。既有利权,又执民柄,将何惧焉?栾氏所得,其唯魏氏乎!而可强取也。夫克乱在权,子无懈矣。”公有姻丧,王鲋使宣子墨縗冒绖,二妇人辇以如公,奉公以如固宫。

  范鞅逆魏舒,则成列既乘,将逆栾氏矣。趋进,曰:“栾氏帅贼以入,鞅之父与二三子在君所矣。使鞅逆吾子。鞅请骖乘。”持带,遂超乘,右抚剑,左援带,命驱之出。仆请,鞅曰:“之公。”宣子逆诸阶,执其手,赂之以曲沃。

  初,斐豹隶也,著于丹书。栾氏之力臣曰督戎,国人惧之。斐豹谓宣子曰:“苟焚丹书,我杀督戎。”宣子喜,曰:“而杀之,所不请于君焚丹书者,有如日!”乃出豹而闭之,督戎从之。逾隐而待之,督戎逾入,豹自后击而杀之。范氏之徒在台后,栾氏乘公门。宣子谓鞅曰:“矢及君屋,死之!”鞅用剑以帅卒,栾氏退。摄车从之,遇栾氏,曰:“乐免之,死将讼女于天。”乐射之,不中;又注,则乘槐本而覆。或以戟钩之,断肘而死。栾鲂伤。栾盈奔曲沃,晋人围之。

  秋,齐侯伐卫。先驱,谷荣御王孙挥,召扬为右。申驱,成秩御莒恒,申鲜虞之傅挚为右。曹开御戎,晏父戎为右。贰广,上之登御邢公,卢蒲癸为右。启,牢成御襄罢师,狼蘧疏为右。胠,商子车御侯朝,桓跳为右。大殿,商子游御夏之御寇,崔如为右,烛庸之越驷乘。

  自卫将遂伐晋。晏平仲曰:“君恃勇力以伐盟主,若不济,国之福也。不德而有功,忧必及君。”崔杼谏曰:“不可。臣闻之,小国间大国之败而毁焉,必受其咎。君其图之!”弗听。陈文子见崔武子,曰:“将如君何?”武子曰:“吾言于君,君弗听也。以为盟主,而利其难。群臣若急,君于何有?子姑止之。”

  文子退,告其人曰:“崔子将死乎!谓君甚,而又过之,不得其死。过君以义,犹自抑也,况以恶乎?”齐侯遂伐晋,取朝歌,为二队,入孟门,登大行,张武军于荧庭,戍郫邵,封少水,以报平阴之役,乃还。赵胜帅东阳之师以追之,获晏牦。八月,叔孙豹帅师救晋,次于雍榆,礼也。

  季武子无適子,公弥长,而爱悼子,欲立之。访于申丰,曰:“弥与纥,吾皆爱之,欲择才焉而立之。”申丰趋退,归,尽室将行。他日,又访焉,对曰:“其然,将具敝车而行。”乃止。访于臧纥,臧纥曰:“饮我酒,吾为子立之。”

  季氏饮大夫酒,臧纥为客。既献,臧孙命北面重席,新尊絜之。召悼之,降,逆之。大夫皆起。及旅,而召公鉏,使与之齿,季孙失色。

  季氏以公鉏为马正,愠而不出。闵子马见之,曰:“子无然!祸福无门,唯人所召。为人子者,患不孝,不患无所。敬共父命,何常之有?若能孝敬,富倍季氏可也。奸回不轨,祸倍下民可也。”公鉏然之。敬共朝夕,恪居官次。季孙喜,使饮己酒,而以具往,尽舍旃。故公鉏氏富,又出为公左宰。

  孟孙恶臧孙,季孙爱之。孟氏之御驺丰点好羯也,曰:“从余言,必为孟孙。”

  再三云,羯从之。孟庄子疾,丰点谓公鉏:“苟立羯,请仇臧氏。”公鉏谓季孙曰:“孺子秩,固其所也。若羯立,则季氏信有力于臧氏矣。”弗应。己卯,孟孙卒,公鉏奉羯立于户侧。季孙至,入,哭,而出,曰:“秩焉在?”公鉏曰:“羯在此矣!”季孙曰:“孺子长。”公鉏曰:“何长之有?唯其才也。且夫子之命也。”遂立羯。秩奔邾。

  臧孙入,哭甚哀,多涕。出,其御曰:“孟孙之恶子也,而哀如是。季孙若死,其若之何?”臧孙曰:“季孙之爱我,疾疢也。孟孙之恶我,药石也。美疢不如恶石。夫石犹生我,疢之美,其毒滋多。孟孙死,吾亡无日矣。”

  孟氏闭门,告于季秋曰:“臧氏将为乱,不使我葬。”季孙不信。臧孙闻之,戒。冬十月,孟氏将辟,藉除于臧氏。臧孙使正夫助之,除于东门,甲从己而视之。孟氏又告季孙。季孙怒,命攻臧氏。乙亥,臧纥斩鹿门之关以出,奔邾。

  初,臧宣叔娶于铸,生贾及为而死。继室以其侄,穆姜之姨子也。生纥,长于公宫。姜氏爱之,故立之。臧贾、臧为出在铸。臧武仲自邾使告臧贾,且致大蔡焉,曰:“纥不佞,失守宗祧,敢告不吊。纥之罪,不及不祀。子以大蔡纳请,其可。”贾曰:“是家之祸也,非子之过也。贾闻命矣。”再拜受龟。使为以纳请,遂自为也。臧孙如防,使来告曰:“纥非能害也,知不足也。非敢私请!苟守先祀,无废二勋,敢不辟邑。”乃立臧为。臧纥致防而奔齐。其人曰:“其盟我乎?”臧孙曰:“无辞。”将盟臧氏,季孙召外史掌恶臣,而问盟首焉,对曰:“盟东门氏也,曰:‘毋或如东门遂,不听公命,杀适立庶。’盟叔孙氏也,曰:‘毋或如叔孙侨如,欲废国常,荡覆公室。’”季孙曰:“臧孙之罪,皆不及此。”

  孟椒曰:“盍以其犯门斩关?”季孙用之。乃盟臧氏曰:“无或如臧孙纥,干国之纪,犯门斩关。”臧孙闻之,曰:“国有人焉!谁居?其孟椒乎!”晋人克栾盈于曲沃,尽杀栾氏之族党。栾鲂出奔宋。书曰:“晋人杀栾盈。”

  不言大夫,言自外也。

  齐侯还自晋,不入。遂袭莒,门于且于,伤股而退。明日,将复战,期于寿舒。杞殖、华还载甲,夜入且于之隧,宿于莒郊。明日,先遇莒子于蒲侯氏。莒子重赂之,使无死,曰:“请有盟。”华周对曰:“贪货弃命,亦君所恶也。昏而受命,日未中而弃之,何以事君?”莒子亲鼓之,从而伐之,获杞梁。莒人行成。

  齐侯归,遇杞梁之妻于郊,使吊之。辞曰:“殖之有罪,何辱命焉?若免于罪,犹有先人之敝庐在,下妾不得与郊吊。”齐侯吊诸其室。

  齐侯将为臧纥田。臧孙闻之,见齐侯,与之言伐晋,对曰:“多则多矣!抑君似鼠。夫鼠昼伏夜动,不穴于寝庙,畏人故也。今君闻晋之乱而后作焉。宁将事之,非鼠如何?”乃弗与田。

  仲尼曰:“知之难也。有臧武仲之知,而不容于鲁国,抑有由也。作不顺而施不恕也。《夏书》曰:‘念兹在兹。’顺事、恕施也。”

  

  

  !襄公二十四年

  【经】二十有四年春,叔孙豹如晋。仲孙羯帅师侵齐。夏,楚子伐吴。秋七月甲子朔,日有食之,既。齐崔杼帅师伐莒。大水。八月癸巳朔,日有食之。公会晋侯、宋公、卫侯、郑伯、曹伯、莒子、邾子、滕子、薛伯、杞伯、小邾子于夷仪。冬,楚子、蔡侯、陈侯、许男伐郑。公至自会。陈鍼宜咎出奔楚。叔孙豹如京师。大饥。

  

  【传】二十四年春,穆叔如晋。范宣子逆之,问焉,曰:“古人有言曰,‘死而不朽’,何谓也?”穆叔未对。宣子曰:“昔匄之祖,自虞以上,为陶唐氏,在夏为御龙氏,在商为豕韦氏,在周为唐杜氏,晋主夏盟为范氏,其是之谓乎?”穆叔曰:“以豹所闻,此之谓世禄,非不朽也。鲁有先大夫曰臧文仲,既没,其言立。其是之谓乎!豹闻之,大上有立德,其次有立功,其次有立言,虽久不废,此之谓不朽。若夫保姓受氏,以守宗祊,世不绝祀,无国无之,禄之大者,不可谓不朽。”

  范宣子为政,诸侯之币重。郑人病之。二月,郑伯如晋。子产寓书于子西以告宣子,曰:“子为晋国,四邻诸侯,不闻令德,而闻重币,侨也惑之。侨闻君子长国家者,非无贿之患,而无令名之难。夫诸侯之贿聚于公室,则诸侯贰。若吾子赖之,则晋国贰。诸侯贰,则晋国坏。晋国贰,则子之家坏。何没没也!将焉用贿?夫令名,德之舆也。德,国家之基也。有基无坏,无亦是务乎!有德则乐,乐则能久。《诗》云:‘乐只君子,邦家之基。’有令德也夫!‘上帝临女,无贰尔心。’有令名也夫!恕思以明德,则令名载而行之,是以远至迩安。毋宁使人谓子‘子实生我’,而谓‘子濬我以生’乎?象有齿以焚其身,贿也。”宣子说,乃轻币。是行也,郑伯朝晋,为重币故,且请伐陈也。郑伯稽首,宣子辞。

  子西相,曰:“以陈国之介恃大国而陵虐于敝邑,寡君是以请罪焉。敢不稽首。”

  孟孝伯侵齐,晋故也。

  夏,楚子为舟师以伐吴,不为军政,无功而还。

  齐侯既伐晋而惧,将欲见楚子。楚子使薳启强如齐聘,且请期。齐社,搜军实,使客观之。陈文子曰:“齐将有寇。吾闻之,兵不戢,必取其族。”

  秋,齐侯闻将有晋师,使陈无宇从薳启强如楚,辞,且乞师。崔杼帅师送之,遂伐莒,侵介根。

  会于夷仪,将以伐齐,水,不克。

  冬,楚子伐郑以救齐,门于东门,次于棘泽。诸侯还救郑。晋侯使张骼、辅跞致楚师,求御于郑。郑人卜宛射犬,吉。子大叔戒之曰:“大国之人,不可与也。”对曰:“无有众寡,其上一也。”大叔曰:“不然,部娄无松柏。”二子在幄,坐射犬于外,既食而后食之。使御广车而行,己皆乘乘车。将及楚师,而后从之乘,皆踞转而鼓琴。近,不告而驰之。皆取胄于櫜而胄,入垒,皆下,搏人以投,收禽挟囚。弗待而出。皆超乘,抽弓而射。既免,复踞转而鼓琴,曰:“公孙!同乘,兄弟也。胡再不谋?”对曰:“曩者志入而已,今则怯也。”皆笑,曰:“公孙之亟也。”

  楚子自棘泽还,使薳启强帅师送陈无宇。

  吴人为楚舟师之役故,召舒鸠人,舒鸠人叛楚。楚子师于荒浦,使沈尹寿与师祁犁让之。舒鸠子敬逆二子,而告无之,且请受盟。二子复命,王欲伐之。薳子曰:“不可。彼告不叛,且请受盟,而又伐之,伐无罪也。姑归息民,以待其卒。卒而不贰,吾又何求?若犹叛我,无辞有庸。”乃还。

  陈人复讨庆氏之党,鍼宜咎出奔楚。

  齐人城郏。穆叔如周聘,且贺城。王嘉其有礼也,赐之大路。

  晋侯嬖程郑,使佐下军。郑行人公孙挥如晋聘。程郑问焉,曰:“敢问降阶何由?”子羽不能对。归以语然明,然明曰:“是将死矣。不然将亡。贵而知惧,惧而思降,乃得其阶,下人而已,又何问焉?且夫既登而求降阶者,知人也,不在程郑。其有亡衅乎?不然,其有惑疾,将死而忧也。”

  

  

  !襄公二十五年

  【经】二十有五年春,齐崔杼帅师伐我北鄙。夏五月乙亥,齐崔杼弑其君光。

  公会晋侯、宋公、卫侯、郑伯、曹伯、莒子、邾子、滕子、薛伯、杞伯、小邾子于夷仪。六月壬子,郑公孙舍之帅师入陈。秋八月己巳,诸侯同盟于重丘。公至自会。卫侯入于夷仪。楚屈建帅师灭舒鸠。冬,郑公孙夏帅师伐陈。十有二月,吴子遏伐楚,门于巢,卒。

  

  【传】二十五年春,齐崔杼帅师伐我北鄙,以报孝伯之师也。公患之,使告于晋。孟公绰曰:“崔子将有大志,不在病我,必速归,何患焉!其来也不寇,使民不严,异于他日。”齐师徒归。

  齐棠公之妻,东郭偃之姊也。东郭偃臣崔武子。棠公死,偃御武子以吊焉。

  见棠姜而美之,使偃取之。偃曰:“男女辨姓,今君出自丁,臣出自桓,不可。”

  武子筮之,遇《困》ⅷⅴ之《大过》ⅷⅳ。史皆曰:“吉。”示陈文子,文子曰:“夫从风,风陨,妻不可娶也。且其《繇》曰:‘困于石,据于蒺藜,入于其宫,不见其妻,凶。’困于石,往不济也。据于蒺藜,所恃伤也。入于其宫,不见其妻,凶,无所归也。”崔子曰:“嫠也何害?先夫当之矣。”遂取之。庄公通焉,骤如崔氏。以崔子之冠赐人,侍者曰:“不可。”公曰:“不为崔子,其无冠乎?”崔子因是,又以其间伐晋也,曰:“晋必将报。”欲弑公以说于晋,而不获间。

  公鞭侍人贾举而又近之,乃为崔子间公。

  夏五月,莒为且于之役故,莒子朝于齐。甲戌,飨诸北郭。崔子称疾,不视事。乙亥,公问崔子,遂从姜氏。姜入于室,与崔子自侧户出。公拊楹而歌。侍人贾举止众从者,而入闭门。甲兴,公登台而请,弗许;请盟,弗许;请自刃于庙,勿许。皆曰:“君之臣杼疾病,不能听命。近于公宫,陪臣干掫有淫者,不知二命。”公逾墙。又射之,中股,反队,遂弑之。贾举,州绰、邴师、公孙敖、封具、铎父、襄伊、偻堙皆死。祝佗父祭于高唐,至,复命。不说弁而死于崔氏。申蒯侍渔者,退,谓其宰曰:“尔以帑免,我将死。”其宰曰:“免,是反子之义也。”与之皆死。崔氏杀融蔑于平阴。

  晏子立于崔氏之门外,其人曰:“死乎?”曰:“独吾君也乎哉?吾死也。”

  曰:“行乎?”曰:“吾罪也乎哉?吾亡也。”“归乎?”曰:“君死,安归?君民者,岂以陵民?社稷是主。臣君者,岂为其口实,社稷是养。故君为社稷死,则死之;为社稷亡,则亡之。若为己死而为己亡,非其私昵,谁敢任之?且人有君而弑之,吾焉得死之,而焉得亡之?将庸何归?”门启而入,枕尸股而哭。兴,三踊而出。人谓崔子:“必杀之!”崔子曰:“民之望也!舍之,得民。”卢蒲癸奔晋,王何奔莒。

  叔孙宣伯之在齐也,叔孙还纳其女于灵公。嬖,生景公。丁丑,崔杼立而相之。庆封为左相。盟国人于大宫,曰:“所不与崔、庆者。”晏子仰天叹曰:“婴所不唯忠于君利社稷者是与,有如上帝。”乃歃。辛巳,公与大夫及莒子盟。

  大史书曰:“崔杼弑其君。”崔子杀之。其弟嗣书而死者,二人。其弟又书,乃舍之。南史氏闻大史尽死,执简以往。闻既书矣,乃还。

  闾丘婴以帷缚其妻而载之,与申鲜虞乘而出,鲜虞推而下之,曰:“君昏不能匡,危不能救,死不能死,而知匿其昵,其谁纳之?”行及弇中,将舍。婴曰:“崔、庆其追我!”鲜虞曰:“一与一,谁能惧我?”遂舍,枕辔而寝,食马而食。驾而行,出弇中,谓婴曰:“速驱之!崔、庆之众,不可当也。”遂来奔。

  崔氏侧庄公于北郭。丁亥,葬诸士孙之里,四翣,不跸,下车七乘,不以兵甲。

  晋侯济自泮,会于夷仪,伐齐,以报朝歌之役。齐人以庄公说,使隰鉏请成。

  庆封如师,男女以班。赂晋侯以宗器、乐器。自六正、五吏、三十帅、三军之大夫、百官之正长、师旅及处守者,皆有赂。晋侯许之。使叔向告于诸侯。公使子服惠伯对曰:“君舍有罪,以靖小国,君之惠也。寡君闻命矣!”晋侯使魏舒、宛没逆卫侯,将使卫与之夷仪。崔子止其帑,以求五鹿。

  初,陈侯会楚子伐郑,当陈隧者,井堙木刊。郑人怨之,六月,郑子展、子产帅车七百乘伐陈,宵突陈城,遂入之。陈侯扶其大子偃师奔墓,遇司马桓子,曰:“载余!”曰:“将巡城。”遇贾获,载其母妻,下之,而授公车。公曰:“舍而母!”辞曰:“不祥。”与其妻扶其母以奔墓,亦免。子展命师无入公宫,与子产亲御诸门。陈侯使司马桓子赂以宗器。陈侯免,拥社。使其众,男女别而累,以待于朝。子展执絷而见,再拜稽首,承饮而进献。子美入,数俘而出。祝祓社,司徒致民,司马致节,司空致地,乃还。

  秋七月己巳,同盟于重丘,齐成故也。

  赵文子为政,令薄诸侯之币而重其礼。穆叔见之,谓穆叔曰:“自今以往,兵其少弭矣!齐崔、庆新得政,将求善于诸侯。武也知楚令尹。若敬行其礼,道之以文辞,以靖诸侯,兵可以弭。”

  楚薳子冯卒,屈建为令尹。屈荡为莫敖。舒鸠人卒叛楚。令尹子木伐之,及离城。吴人救之,子木遽以右师先,子强、息桓、子捷、子骈、子盂帅左师以退。

  吴人居其间七日。子强曰:“久将垫隘,隘乃禽也。不如速战!请以其私卒诱之,简师陈以待我。我克则进,奔则亦视之,乃可以免。不然,必为吴禽。”从之。

  五人以其私卒先击吴师。吴师奔,登山以望,见楚师不继,复逐之,傅诸其军。

  简师会之,吴师大败。遂围舒鸠,舒鸠溃。八月,楚灭舒鸠。

  卫献公入于夷仪。

  郑子产献捷于晋,戎服将事。晋人问陈之罪,对曰:“昔虞阏父为周陶正,以服事我先王。我先王赖其利器用也,与其神明之后也,庸以元女大姬配胡公,而封诸陈,以备三恪。则我周之自出,至于今是赖。桓公之乱,蔡人欲立其出。

  我先君庄公奉五父而立之,蔡人杀之。我又与蔡人奉戴厉公,至于庄、宣,皆我之自立。夏氏之乱,成公播荡,又我之自入,君所知也。今陈忘周之大德,蔑我大惠,弃我姻亲,介恃楚众,以凭陵我敝邑,不可亿逞。我是以有往年之告。未获成命,则有我东门之役。当陈隧者,井堙木刊。敝邑大惧不竟,而耻大姬。天诱其衷,启敝邑之心。陈知其罪,授手于我。用敢献功!”晋人曰:“何故侵小?”对曰:“先王之命,唯罪所在,各致其辟。且昔天子之地一圻,列国一同,自是以衰。今大国多数圻矣!若无侵小,何以至焉?”晋人曰:“何故戎服?”对曰:“我先君武、庄,为平、桓卿士。城濮之役,文公布命,曰:‘各复旧职!’命我文公戎服辅王,以授楚捷,不敢废王命故也。”士庄伯不能诘,复于赵文子。

  文子曰:“其辞顺,犯顺不祥。”乃受之。

  冬十月,子展相郑伯如晋,拜陈之功。子西复伐陈,陈及郑平。仲尼曰:“《志》有之:‘言以足志,文以足言。’不言,谁知其志?言之无文,行而不远。晋为伯,郑入陈,非文辞不为功。慎辞也!”楚蒍掩为司马,子木使庀赋,数甲兵。甲午,蒍掩书土田,度山林,鸠薮泽,辨京陵,表淳卤,数疆潦,规偃猪,町原防,牧隰皋,井衍沃,量入修赋。赋车籍马,赋车兵、徒卒、甲楯之数。既成,以授子木,礼也。

  十二月,吴子诸樊伐楚,以报舟师之役。门于巢。巢牛臣曰:“吴王勇而轻,若启之,将亲门。我获射之,必殪。是君也死,疆其少安!”从之。吴子门焉,牛臣隐于短墙以射之,卒。

  楚子以灭舒鸠赏子木。辞曰:“先大夫蒍子之功也。”以与蒍掩。

  晋程郑卒。子产始知然明,问为政焉。对曰:“视民如子。见不仁者诛之,如鹰鹯之逐鸟雀也。”子产喜,以语子大叔,且曰:“他日吾见蔑之面而已,今吾见其心矣。”子大叔问政于子产。子产曰:“政如农功,日夜思之,思其始而成其终。朝夕而行之,行无越思,如农之有畔。其过鲜矣。”

  卫献公自夷仪使与宁喜言,宁喜许之。大叔文子闻之,曰:“乌乎!《诗》所谓‘我躬不说,皇恤我后’者,宁子可谓不恤其后矣。将可乎哉?殆必不可。

  君子之行,思其终也,思其复也。《书》曰:‘慎始而敬终,终以不困。’《诗》曰:‘夙夜匪解,以事一人。’今宁子视君不如弈棋,其何以免乎?弈者举棋不定,不胜其耦。而况置君而弗定乎?必不免矣。九世之卿族,一举而灭之。可哀也哉!”会于夷仪之岁,齐人城郏。其五月,秦、晋为成。晋韩起如秦莅盟,秦伯车如晋莅盟,成而不结。

  

  

  !襄公二十六年

  【经】二十有六年春王二月辛卯,卫宁喜弑其君剽。卫孙林父入于戚以叛。

  甲午,卫侯衎复归于卫。夏,晋侯使荀吴来聘。公会晋人、郑良霄、宋人、曹人于澶渊。秋,宋公杀其世子痤。晋人执卫宁喜。八月壬午,许男宁卒于楚。冬,楚子、蔡侯、陈侯伐郑。葬许灵公。

  

  【传】二十六年春,秦伯之弟鍼如晋修成,叔向命召行人子员。行人子朱曰:“朱也当御。”三云,叔向不应。子朱怒,曰:“班爵同,何以黜朱于朝?”抚剑从之。叔向曰:“秦、晋不和久矣!今日之事,幸而集,晋国赖之。不集,三军暴骨。子员道二国之言无私,子常易之。奸以事君者,吾所能御也。”拂衣从之。人救之。平公曰:“晋其庶乎!吾臣之所争者大。”师旷曰:“公室惧卑。

  臣不心竞而力争,不务德而争善,私欲已侈,能无卑乎?”卫献公使子鲜为复,辞。敬姒强命之。对曰:“君无信,臣惧不免。”敬姒曰:“虽然,以吾故也。”许诺。初,献公使与宁喜言,宁喜曰:“必子鲜在,不然必败。”故公使子鲜。子鲜不获命于敬姒,以公命与宁喜言,曰:“苟反,政由宁氏,祭则寡人。”宁喜告蘧伯玉,伯玉曰:“瑗不得闻君之出,敢闻其入?”遂行,从近关出。告右宰谷,右宰谷曰:“不可。获罪于两君,天下谁畜之?”悼子曰:“吾受命于先人,不可以贰。”谷曰:“我请使焉而观之。”遂见公于夷仪。反曰:“君淹恤在外十二年矣,而无忧色,亦无宽言,犹夫人也。若不已,死无日矣。”悼子曰:“子鲜在。”右宰谷曰:“子鲜在,何益?多而能亡,于我何为?”悼子曰:“虽然,不可以已。”孙文子在戚,孙嘉聘于齐,孙襄居守。

  二月庚寅,宁喜、右宰谷伐孙氏,不克。伯国伤。宁子出舍于郊。伯国死,孙氏夜哭。国人召宁子,宁子复攻孙氏,克之。辛卯,杀子叔及大子角。书曰:“宁喜弑其君剽。”言罪之在宁氏也。孙林父以戚如晋。书曰:“入于戚以叛。”

  罪孙氏也。臣之禄,君实有之。义则进,否则奉身而退,专禄以周旋,戮也。

  甲午,卫侯入。书曰:“复归。”国纳之也。大夫逆于竟者,执其手而与之言。道逆者,自车揖之。逆于门者,颔之而已。公至,使让大叔文子曰:“寡人淹恤在外,二三子皆使寡人朝夕闻卫国之言,吾子独不在寡人。古人有言曰:‘非所怨勿怨。’寡人怨矣。”对曰:“臣知罪矣!臣不佞不能负羁泄,以绁扌干牧圉,臣之罪一也。有出者,有居者。臣不能贰,通外内之言以事君,臣之罪二也。有二罪,敢忘其死?”乃行,从近关出。公使止之。

  卫人侵戚东鄙,孙氏愬于晋,晋戍茅氏。殖绰伐茅氏,杀晋戍三百人。孙蒯追之,弗敢击。文子曰:“厉之不如!”遂从卫师,败之圉。雍鉏获殖绰。复愬于晋。

  郑伯赏入陈之功。三月甲寅朔,享子展,赐之先路、三命之服,先八邑。赐子产次路、再命之服,先六邑。子产辞邑,曰:“自上以下,隆杀以两,礼也。

  臣之位在四,且子展之功也。臣不敢及及赏礼,请辞邑。”公固予之,乃受三邑。

  公孙挥曰:“子产其将知政矣!让不失礼。”

  晋人为孙氏故,召诸侯,将以讨卫也。夏,中行穆子来聘,召公也。

  楚子、秦人侵吴,及雩娄,闻吴有备而还。遂侵郑,五月,至于城麇。郑皇颉戍之,出,与楚师战,败。穿封戌囚皇颉,公子围与之争之。正于伯州犁,伯州犁曰:“请问于囚。”乃立囚。伯州犁曰:“所争,君子也,其何不知?”上其手,曰:“夫子为王子围,寡君之贵介弟也。”下其手,曰:“此子为穿封戌,方城外之县尹也。谁获子?”囚曰:“颉遇王子,弱焉。”戌怒,抽戈逐王子围,弗及。楚人以皇颉归。

  印堇父与皇颉戍城麇,楚人囚之,以献于秦。郑人取货于印氏以请之,子大叔为令正,以为请。子产曰:“不获。受楚之功而取货于郑,不可谓国,秦不其然。若曰:‘拜君之勤郑国,微君之惠,楚师其犹在敝邑之城下。’其可。”弗从,遂行。秦人不予。更币,从子产而后获之。

  六月,公会晋赵武、宋向戌、郑良霄、曹人于澶渊以讨卫,疆戚田。取卫西鄙懿氏六十以与孙氏。赵武不书,尊公也。向戌不书,后也。郑先宋,不失所也。

  于是卫侯会之。晋人执宁喜、北宫遗,使女齐以先归。卫侯如晋,晋人执而囚之于士弱氏。

  秋七月,齐侯、郑伯为卫侯故,如晋,晋侯兼享之。晋侯赋《嘉乐》。国景子相齐侯,赋《蓼萧》。子展相郑伯,赋《缁衣》。叔向命晋侯拜二君曰:“寡君敢拜齐君之安我先君之宗祧也,敢拜郑君之不贰也。”国子使晏平仲私于叔向,曰:“晋君宣其明德于诸侯,恤其患而补其阙,正其违而治其烦,所以为盟主也。

  今为臣执君,若之何?”叔向告赵文子,文子以告晋侯。晋侯言卫侯之罪,使叔向告二君。国子赋《辔之柔矣》,子展赋《将仲子兮》,晋侯乃许归卫侯。叔向曰:“郑七穆,罕氏其后亡者也。子展俭而壹。”

  初,宋芮司徒生女子,赤而毛,弃诸堤下,共姬之妾取以入,名之曰弃。长而美。平公入夕,共姬与之食。公见弃也,而视之,尤。姬纳诸御,嬖,生佐。

  恶而婉。大子痤美而很,合左师畏而恶之。寺人惠墙伊戾为大子内师而无宠。

  秋,楚客聘于晋,过宋。大子知之,请野享之。公使往,伊戾请从之。公曰:“夫不恶女乎?”对曰:“小人之事君子也,恶之不敢远,好之不敢近。敬以待命,敢有贰心乎?纵有共其外,莫共其内,臣请往也。”遣之。至,则臽欠,用牲,加书,征之,而聘告公曰:“大子将为乱,既与楚客盟矣。”公曰:“为我子,又何求?”对曰:“欲速。”公使视之,则信有焉。问诸夫人与左师,则皆曰:“固闻之。”公囚大子。大子曰:“唯佐也能免我。”召而使请,曰:“日中不来,吾知死矣。”左师闻之,聒而与之语。过期,乃缢而死。佐为大子。公徐闻其无罪也,乃亨伊戾。

  左师见夫人之步马者,问之,对曰:“君夫人氏也。”左师曰:“谁为君夫人?余胡弗知?”圉人归,以告夫人。夫人使馈之锦与马,先之以玉,曰:“君之妾弃使某献。”左师改命曰:“君夫人。”而后再拜稽首受之。

  郑伯归自晋,使子西如晋聘,辞曰:“寡君来烦执事,惧不免于戾,使夏谢不敏。”君子曰:“善事大国。”

  初,楚伍参与蔡太师子朝友,其子伍举与声子相善也。伍举娶于王子牟,王子牟为申公而亡,楚人曰:“伍举实送之。”伍举奔郑,将遂奔晋。声子将如晋,遇之于郑郊,班荆相与食,而言复故。声子曰:“子行也!吾必复子。”及宋向戌将平晋、楚,声子通使于晋。还如楚,令尹子木与之语,问晋故焉,且曰:“晋大夫与楚孰贤?”对曰:“晋卿不如楚,其大夫则贤,皆卿材也。如杞、梓、皮革,自楚往也。虽楚有材,晋实用之。”子木曰:“夫独无族姻乎?”对曰:“虽有,而用楚材实多。归生闻之:‘善为国者,赏不僣而刑不滥。’赏僣,则惧及淫人;刑滥,则惧及善人。若不幸而过,宁僣无滥。与其失善,宁其利淫。

  无善人,则国从之。《诗》曰:‘人之云亡,邦国殄瘁。’无善人之谓也。故《夏书》曰:‘与其杀不辜,宁失不经。’惧失善也。《商颂》有之曰:‘不僣不滥,不敢怠皇,命于下国,封建厥福。’此汤所以获天福也。古之治民者,劝赏而畏刑,恤民不倦。赏以春夏,刑以秋冬。是以将赏,为之加膳,加膳则饫赐,此以知其劝赏也。将刑,为之不举,不举则彻乐,此以知其畏刑也。夙兴夜寐,朝夕临政,此以知其恤民也。三者,礼之大节也。有礼无败。今楚多淫刑,其大夫逃死于四方,而为之谋主,以害楚国,不可救疗,所谓不能也。子仪之乱,析公奔晋。晋人置诸戎车之殿,以为谋主。绕角之役,晋将遁矣,析公曰:‘楚师轻窕,易震荡也。若多鼓钧声,以夜军之,楚师必遁。’晋人从之,楚师宵溃。

  晋遂侵蔡,袭沈,获其君;败申、息之师于桑隧,获申丽而还。郑于是不敢南面。

  楚失华夏,则析公之为也。雍子之父兄谮雍子,君与大夫不善是也。雍子奔晋。

  晋人与之鄐,以为谋主。彭城之役,晋、楚遇于靡角之谷。晋将遁矣。雍子发命于军曰:‘归老幼,反孤疾,二人役,归一人,简兵蒐乘,秣马蓐食,师陈焚次,明日将战。’行归者而逸楚囚,楚师宵溃。晋降彭城而归诸宋,以鱼石归。

  楚失东夷,子辛死之,则雍子之为也。子反与子灵争夏姬,而雍害其事,子灵奔晋。晋人与之邢,以为谋主。扞御北狄,通吴于晋,教吴叛楚,教之乘车、射御、驱侵,使其子孤庸为吴行人焉。吴于是伐巢、取驾、克棘、入州来,楚罢于奔命,至今为患,则子灵之为也。若敖之乱,伯贲之子贲皇奔晋。晋人与之苗,以为谋主。鄢陵之役,楚晨压晋军而陈,晋将遁矣。苗贲皇曰:‘楚师之良,在其中军王族而已。若塞井夷灶,成陈以当之,栾、范易行以诱之,中行、二郤必克二穆。

  吾乃四萃于其王族,必大败之。’晋人从之,楚师大败,王夷师熸,子反死之。

  郑叛吴兴,楚失诸侯,则苗贲皇之为也。”子木曰:“是皆然矣。”声子曰:“今又有甚于此。椒举娶于申公子牟,子牟得戾而亡,君大夫谓椒举:‘女实遣之!’惧而奔郑,引领南望曰:‘庶几赦余!’亦弗图也。今在晋矣。晋人将与之县,以比叔向。彼若谋害楚国,岂不为患?”子木惧,言诸王,益其禄爵而复之。声子使椒鸣逆之。

  许灵公如楚,请伐郑,曰:“师不兴,孤不归矣!”八月,卒于楚。楚子曰:“不伐郑,何以求诸侯?”冬十月,楚子伐郑。郑人将御之,子产曰:“晋、楚将平,诸侯将和,楚王是故昧于一来。不如使逞而归,乃易成也。夫小人之性,衅于勇,啬于祸,以足其性而求名焉者,非国家之利也。若何从之?”子展说,不御寇。十二月乙酉,入南里,堕其城。涉于乐氏,门于师之梁。县门发,获九人焉。涉入氾而归,而后葬许灵公。

  卫人归卫姬于晋,乃释卫侯。君子是以知平公之失政也。

  晋韩宣子聘于周。王使请事。对曰:“晋士起将归时事于宰旅,无他事矣。”

  王闻之曰:“韩氏其昌阜于晋乎!辞不失旧。”

  齐人城郏之岁,其夏,齐乌余以廪丘奔晋,袭卫羊角,取之;遂袭我高鱼。

  有大雨,自其窦入,介于其库,以登其城,克而取之。又取邑于宋。于是范宣子卒,诸侯弗能治也,及赵文子为政,乃卒治之。文子言于晋侯曰:“晋为盟主。

  诸侯或相侵也,则讨而使归其地。今乌余之邑,皆讨类也,而贪之,是无以为盟主也。请归之!”公曰:“诺。孰可使也?”对曰:“胥梁带能无用师。”晋侯使往。

  

  

  !襄公二十七年

  【经】二十有七春,齐侯使庆封聘。夏,叔孙豹会晋赵武、楚屈建、蔡公孙归生、卫石恶、陈孔奂、郑良霄、许人、曹人于宋。卫杀其大夫宁喜。卫侯之弟鱄出奔晋。秋七月辛巳,豹及诸侯之大夫盟于宋。冬十有二月乙卯朔,日有食之。

  

  【传】二十七年春,胥梁带使诸丧邑者具具车徒以受地,必周。使乌余车徒以受封,乌余以众出。使诸侯伪效乌余之封者,而遂执之,尽获之。皆取其邑而归诸侯,诸侯是以睦于晋。

  齐庆封来聘,其车美。孟孙谓叔孙曰:“庆季之车,不亦美乎?”叔孙曰:“豹闻之:‘服美不称,必以恶终。’美车何为?”叔孙与庆封食,不敬。为赋《相鼠》,亦不知也。卫宁喜专,公患之。公孙免余请杀之。公曰:“微宁子不及此,吾与之言矣。事未可知,只成恶名,止也。”对曰:“臣杀之,君勿与知。”

  乃与公孙无地、公孙臣谋,使攻宁氏。弗克,皆死。公曰:“臣也无罪,父子死余矣!”夏,免余复攻宁氏,杀宁喜及右宰谷,尸诸朝。石恶将会宋之盟,受命而出。衣其尸,枕之股而哭之。欲敛以亡,惧不免,且曰:“受命矣。”乃行。

  子鲜曰:“逐我者出,纳我者死,赏罚无章,何以沮劝?君失其信,而国无刑。不亦难乎!且鱄实使之。”遂出奔晋。公使止之,不可。及河,又使止之。

  止使者而盟于河,托于木门,不乡卫国而坐。木门大夫劝之仕,不可,曰:“仕而废其事,罪也。从之,昭吾所以出也。将准愬乎?吾不可以立于人之朝矣。”

  终身不仕。公丧之,如税服,终身。

  公与免余邑六十,辞曰:“唯卿备百邑,臣六十矣。下有上禄,乱也,臣弗敢闻。且宁子唯多邑,故死。臣惧死之速及也。”公固与之,受其半。以为少师。

  公使为卿,辞曰:“大叔仪不贰,能赞大事。君其命之!”乃使文子为卿。

  宋向戌善于赵文子,又善于令尹子木,欲弭诸侯之兵以为名。如晋,告赵孟。

  赵孟谋于诸大夫,韩宣子曰:“兵,民之残也,财用之蠹,小国之大灾也。将或弭之,虽曰不可,必将许之。弗许,楚将许之,以召诸侯,则我失为盟主矣。”

  晋人许之。如楚,楚亦许之。如齐,齐人难之。陈文子曰:“晋、楚许之,我焉得已。且人曰弭兵,而我弗许,则固携吾民矣!将焉用之?”齐人许之。告于秦,秦亦许之。皆告于小国,为会于宋。

  五月甲辰,晋赵武至于宋。丙午,郑良霄至。六月丁未朔,宋人享赵文子,叔向为介。司马置折俎,礼也。仲尼使举是礼也,以为多文辞。戊申,叔孙豹、齐庆封、陈须无、卫石恶至。甲寅,晋荀盈从赵武至。丙辰,邾悼公至。壬戌,楚公子黑肱先至,成言于晋。丁卯,宋向戌如陈,从子木成言于楚。戊辰,滕成公至。子木谓向戌:“请晋、楚之从交相见也。”庚午,向戌复于赵孟。赵孟曰:“晋、楚、齐、秦,匹也。晋之不能于齐,犹楚之不能于秦也。楚君若能使秦君辱于敝邑,寡君敢不固请于齐?”壬申,左师复言于子木。子木使驲谒诸王,王曰:“释齐、秦,他国请相见也。”秋七月戊寅,左师至。是夜也,赵孟及子皙盟,以齐言。庚辰,子木至自陈。陈孔奂、蔡公孙归生至。曹、许之大夫皆至。

  以藩为军,晋、楚各处其偏。伯夙谓赵孟曰:“楚氛甚恶,惧难。”赵孟曰:“吾左还,入于宋,若我何?”辛巳,将盟于宋西门之外,楚人衷甲。伯州犁曰:“合诸侯之师,以为不信,无乃不可乎?夫诸侯望信于楚,是以来服。若不信,是弃其所以服诸侯也。”固请释甲。子木曰:“晋、楚无信久矣,事利而已。苟得志焉,焉用有信?”大宰退,告人曰:“令尹将死矣,不及三年。求逞志而弃信,志将逞乎?志以发言,言以出信,信以立志,参以定之。信亡,何以及三?”赵孟患楚衷甲,以告叔向。

  叔向曰:“何害也?匹夫一为不信,犹不可,单毙其死。若合诸侯之卿,以为不信,必不捷矣。食言者不病,非子之患也。夫以信召人,而以僣济之。必莫之与也,安能害我?且吾因宋以守病,则夫能致死,与宋致死,虽倍楚可也。子何惧焉?又不及是。曰弭兵以召诸侯,而称兵以害我,吾庸多矣,非所患也。”

  季武子使谓叔孙以公命,曰:“视邾、滕。”既而齐人请邾,宋人请滕,皆不与盟。叔孙曰:“邾、滕,人之私也;我,列国也,何故视之?宋、卫,吾匹也。”乃盟。故不书其族,言违命也。

  晋、楚争先。晋人曰:“晋固为诸侯盟主,未有先晋者也。”楚人曰:“子言晋、楚匹也,若晋常先,是楚弱也。且晋、楚狎主诸侯之盟也久矣!岂专在晋?”叔向谓赵孟曰:“诸侯归晋之德只,非归其尸盟也。子务德,无争先!且诸侯盟,小国固必有尸盟者。楚为晋细,不亦可乎?”乃先楚人。书先晋,晋有信也。

  壬午,宋公兼享晋、楚之大夫,赵孟为客。子木与之言,弗能对。使叔向侍言焉,子木亦不能对也。

  乙酉,宋公及诸侯之大夫盟于蒙门之外。子木问于赵孟曰:“范武子之德何如?”对曰:“夫人之家事治,言于晋国无隐情。其祝史陈信于鬼神,无愧辞。”

  子木归,以语王。王曰:“尚矣哉!能歆神人,宜其光辅五君以为盟主也。”子木又语王曰:“宜晋之伯也!有叔向以佐其卿,楚无以当之,不可与争。”晋荀寅遂如楚莅盟。

  郑伯享赵孟于垂陇,子展、伯有、子西、子产、子大叔、二子石从。赵孟曰:“七子从君,以宠武也。请皆赋以卒君贶,武亦以观七子之志。”子展赋《草虫》,赵孟曰:“善哉!民之主也。抑武也不足以当之。”伯有赋《鹑之贲贲》,赵孟曰:“床第之言不逾阈,况在野乎?非使人之所得闻也。”子西赋《黍苗》之四章,赵孟曰:“寡君在,武何能焉?”子产赋《隰桑》,赵孟曰:“武请受其卒章。”子大叔赋《野有蔓草》,赵孟曰:“吾子之惠也。”印段赋《蟋蟀》,赵孟曰:“善哉!保家之主也,吾有望矣!”公孙段赋《桑扈》,赵孟曰:“‘匪交匪敖’,福将焉往?若保是言也,欲辞福禄,得乎?”卒享。文子告叔向曰:“伯有将为戮矣!诗以言志,志诬其上,而公怨之,以为宾荣,其能久乎?幸而后亡。”叔向曰:“然。已侈!所谓不及五稔者,夫子之谓矣。”文子曰:“其余皆数世之主也。子展其后亡者也,在上不忘降。印氏其次也,乐而不荒。乐以安民,不淫以使之,后亡,不亦可乎?”宋左师请赏,曰:“请免死之邑。”公与之邑六十。以示子罕,子罕曰:“凡诸侯小国,晋、楚所以兵威之。畏而后上下慈和,慈和而后能安靖其国家,以事大国,所以存也。无威则骄,骄则乱生,乱生必灭,所以亡也。天生五材,民并用之,废一不可,谁能去兵?兵之设久矣,所以威不轨而昭文德也。圣人以兴,乱人以废,废兴存亡昏明之术,皆兵之由也。而子求去之,不亦诬乎?以诬道蔽诸侯,罪莫大焉。纵无大讨,而又求赏,无厌之甚也!”削而投之。左师辞邑。向氏欲攻司城,左师曰:“我将亡,夫子存我,德莫大焉,又可攻乎?”君子曰:“‘彼己之子,邦之司直。’乐喜之谓乎?‘何以恤我,我其收之。’向戌之谓乎?”齐崔杼生成及强而寡。娶东郭姜,生明。东郭姜以孤入,曰棠无咎,与东郭偃相崔氏。崔成有疾,而废之,而立明。成请老于崔,崔子许之。偃与无咎弗予,曰:“崔,宗邑也,必在宗主。”成与强怒,将杀之。告庆封曰:“夫子之身亦子所知也,唯无咎与偃是从,父兄莫得进矣。大恐害夫子,敢以告。”庆封曰:“子姑退,吾图之。”告卢蒲弊。卢蒲弊曰:“彼,君之仇也。天或者将弃彼矣。

  彼实家乱,子何病焉!崔之薄,庆之厚也。”他日又告。庆封曰:“苟利夫子,必去之!难,吾助女。”

  九月庚辰,崔成、崔强杀东郭偃、棠无咎于崔氏之朝。崔子怒而出,其众皆逃,求人使驾,不得。使圉人驾,寺人御而出。且曰:“崔氏有福,止余犹可。”

  遂见庆封。庆封曰:“崔、庆一也。是何敢然?请为子讨之。”使卢蒲弊帅甲以攻崔氏。崔氏堞其宫而守之,弗克。使国人助之,遂灭崔氏,杀成与强,而尽俘其家。其妻缢。弊复命于崔子,且御而归之。至,则无归矣,乃缢。崔明夜辟诸大墓。辛巳,崔明来奔,庆封当国。

  楚薳罢如晋莅盟,晋将享之。将出,赋《既醉》。叔向曰:“薳氏之有后于楚国也,宜哉!承君命,不忘敏。子荡将知政矣。敏以事君,必能养民。政其焉往?”崔氏之乱,申鲜虞来奔,仆赁于野,以丧庄公。冬,楚人召之,遂如楚为右尹。

  十一月乙亥朔,日有食之。辰在申,司历过也,再失闰矣。

  

  

  !襄公二十八年

  【经】二十有八年春,无冰。夏,卫石恶出奔晋。邾子来朝。秋八月,大雩。

  仲孙羯如晋。冬,齐庆封来奔。十有一月,公如楚。十有二月甲寅,天王崩。乙未,楚子昭卒。

  

  【传】二十八年春,无冰。梓慎曰:“今兹宋、郑其饥乎?岁在星纪,而淫于玄枵,以有时灾,阴不堪阳。蛇乘龙。龙,宋、郑之星也,宋、郑必饥。玄枵,虚中也。枵,耗名也。土虚而民耗,不饥何为?”夏。齐侯、陈侯、蔡侯、北燕伯、杞伯、胡子、沈子、白狄朝于晋,宋之盟故也。齐侯将行,庆封曰:“我不与盟,何为于晋?”陈文子曰:“先事后贿,礼也。小事大,未获事焉,从之如志,礼也。虽不与盟,敢叛晋乎?重丘之盟,未可忘也。子其劝行!”卫人讨宁氏之党,故石恶出奔晋。卫人立其从子圃以守石氏之祀,礼也。

  邾悼公来朝,时事也。

  秋八月,大雩,旱也。

  蔡侯归自晋,入于郑。郑伯享之,不敬。子产曰:“蔡侯其不免乎?日其过此也,君使子展廷劳于东门之外,而傲。吾曰:‘犹将更之。’今还,受享而惰,乃其心也。君小国事大国,而惰傲以为己心,将得死乎?若不免,必由其子。其为君也,淫而不父。侨闻之,如是者,恒有子祸。”

  孟孝伯如晋,告将为宋之盟故如楚也。

  蔡侯之如晋也,郑伯使游吉如楚。及汉,楚人还之,曰:“宋之盟,君实亲辱。今吾子来,寡君谓吾子姑还!吾将使驲奔问诸晋而以告。”子大叔曰:“宋之盟,君命将利小国,而亦使安定其社稷,镇抚其民人,以礼承天之休,此君之宪令,而小国之望也。寡君是故使吉奉其皮币,以岁之不易,聘于下执事。今执事有命曰:‘女何与政令之有?必使而君弃而封守,跋涉山川,蒙犯霜露,以逞君心。’小国将君是望,敢不唯命是听。无乃非盟载之言,以阙君德,而执事有不利焉,小国是惧。不然,其何劳之敢惮?”子大叔归,复命,告子展曰:“楚子将死矣!不修其政德,而贪昧于诸侯,以逞其愿,欲久,得乎?《周易》有之,在《复》ⅱⅲ之《颐》ⅶⅲ,曰:‘迷复,凶。’其楚子之谓乎?欲复其愿,而弃其本,复归无所,是谓迷复。能无凶乎?君其往也!送葬而归,以快楚心。楚不几十年,未能恤诸侯也。吾乃休吾民矣。”裨灶曰:“今兹周王及楚子皆将死。

  岁弃其次,而旅于明年之次,以害鸟帑。周、楚恶之。”

  九月,郑游吉如晋,告将朝于楚,以从宋之盟。子产相郑伯以如楚,舍不为坛。外仆言曰:“昔先大夫相先君,适四国,未尝不为坛。自是至今,亦皆循之。

  今子草舍,无乃不可乎?”子产曰:“大适小,则为坛。小适大,苟舍而已,焉用坛?侨闻之,大适小有五美:宥其罪戾,赦其过失,救其灾患,赏其德刑,教其不及。小国不困,怀服如归。是故作坛以昭其功,宣告后人,无怠于德。小适大有五恶:说其罪戾,请其不足,行其政事,共某职贡,从其时命。不然,则重其币帛,以贺其福而吊其凶,皆小国之祸也。焉用作坛以昭其祸?所以告子孙,无昭祸焉可也。”

  齐庄封好田而耆酒,与庆舍政。则以其内实迁于卢蒲弊氏,易内而饮酒。数日,国迁朝焉。使诸亡人得贼者,以告而反之,故反卢蒲癸。癸臣子之,有宠,妻之。庆舍之士谓卢蒲癸曰:“男女辨姓。子不辟宗,何也?”曰:“宗不余辟,余独焉辟之?赋诗断章,余取所求焉,恶识宗?”癸言王何而反之,二人皆嬖,使执寝戈,而先后之。

  公膳,日双鸡。饔人窃更之以鹜。御者知之,则去其肉而以其洎馈。子雅、子尾怒。庆封告卢蒲弊。卢蒲弊曰;“譬之如禽兽,吾寝处之矣。”使析归父告晏平仲。平仲曰:“婴之众不足用也,知无能谋也。言弗敢出,有盟可也。”子家曰:“子之言云,又焉用盟?”告北郭子车。子车曰:“人各有以事君,非佐之所能也。”陈文子谓桓子曰:“祸将作矣!吾其何得?”对曰:“得庆氏之木百车于庄。”文子曰:“可慎守也已!”卢蒲癸、王何卜攻庆氏,示子之兆,曰:“或卜攻雠,敢献其兆。”子之曰:“克,见血。”冬十月,庆封田于莱,陈无宇从。丙辰,文子使召之。请曰:“无宇之母疾病,请归。”庆季卜之,示之兆,曰:“死。”奉龟而泣。乃使归。

  庆嗣闻之,曰:“祸将作矣!谓子家:“速归!祸作必于尝,归犹可及也。”子家弗听,亦无悛志。子息曰:“亡矣!幸而获在吴、越。”陈无宇济水而戕舟发梁。卢蒲姜谓癸曰:“有事而不告我,必不捷矣。”癸告之。姜曰:“夫子愎,莫之止,将不出,我请止之。”癸曰:“诺。”十一月乙亥,尝于大公之庙,庆舍莅事。卢蒲姜告之,且止之。弗听,曰:“谁敢者!”遂如公。麻婴为尸,庆圭为上献。卢蒲癸、王何执寝戈。庆氏以其甲环公宫。陈氏、鲍氏之圉人为优。

  庆氏之马善惊,士皆释甲束马而饮酒,且观优,至于鱼里。栾、高、陈、鲍之徒介庆氏之甲。子尾抽桷击扉三,卢蒲癸自后刺子之,王何以戈击之,解其左肩。

  犹援庙桷,动于甍,以俎壶投,杀人而后死。遂杀庆绳、麻婴。公惧,鲍国曰:“群臣为君故也。”陈须无以公归,税服而如内宫。

  庆封归,遇告乱者,丁亥,伐西门,弗克。还伐北门,克之。入,伐内宫,弗克。反,陈于岳,请战,弗许。遂来奔。献车于季武子,美泽可以鉴。展庄叔见之,曰:“车甚泽,人必瘁,宜其亡也。”叔孙穆子食庆封,庆封汜祭。穆子不说,使工为之诵《茅鸱》,亦不知。既而齐人来让,奔吴。吴句余予之朱方,聚其族焉而居之,富于其旧。子服惠伯谓叔孙曰:“天殆富淫人,庆封又富矣。”

  穆子曰:“善人富谓之赏,淫人富谓之殃。天其殃之也,其将聚而歼旃?”癸巳,天王崩。未来赴,亦未书,礼也。

  崔氏之乱,丧群公子。故鉏在鲁,叔孙还在燕,贾在句渎之丘。及庆氏亡,皆召之,具其器用而反其邑焉。与晏子邶殿,其鄙六十,弗受。子尾曰:“富,人之所欲也,何独弗欲?”对曰:“庆氏之邑足欲,故亡。吾邑不足欲也。益之以邶殿,乃足欲。足欲,亡无日矣。在外,不得宰吾一邑。不受邶殿,非恶富也,恐失富也。且夫富如布帛之有幅焉,为之制度,使无迁也。夫民生厚而用利,于是乎正德以幅之,使无黜嫚,谓之幅利。利过则为败。吾不敢贪多,所谓幅也。”

  与北郭佐邑六十,受之。与子雅邑,辞多受少。与子尾邑,受而稍致之。公以为忠,故有宠。

  释卢蒲弊于北竟。求崔杼之尸,将戮之,不得。叔孙穆子曰:“必得之。武王有乱臣十人,崔杼其有乎?不十人,不足以葬。”既,崔氏之臣曰:“与我其拱璧,吾献其柩。”于是得之。十二月乙亥朔,齐人迁庄公,殡于大寝。以其棺尸崔杼于市,国人犹知之,皆曰:“崔子也。”

  为宋之盟故,公及宋公、陈侯、郑伯、许男如楚。公过郑,郑伯不在。伯有<辶壬>劳于黄崖,不敬。穆叔曰:“伯有无戾于郑,郑必有大咎。敬,民之主也,而弃之,何以承守?郑人不讨,必受其辜,济泽之阿,行潦之苹藻,置诸宗室,季兰尸之,敬也。敬可弃乎?”及汉,楚康王卒。公欲反,叔仲昭伯曰:“我楚国之为,岂为一人?行也!”子服惠伯曰:“君子有远虑,小人从迩。饥寒之不恤,谁遑其后?不如姑归也。”

  叔孙穆子曰:“叔仲子专之矣,子服子始学者也。”荣成伯曰:“远图者,忠也。”

  公遂行。宋向戌曰:“我一人之为,非为楚也。饥寒之不恤,谁能恤楚?姑归而息民,待其立君而为之备。”宋公遂反。

  楚屈建卒。赵文子丧之如同盟,礼也。

  王人来告丧,问崩日,以甲寅告,故书之,以征过也。

  

  

  !襄公二十九年

  【经】二十有九年春王正月,公在楚。夏五月,公至自楚。庚午,卫侯衎卒,阍弑吴子余祭。仲孙羯会晋荀盈、齐高止、宋华定、卫世叔仪、郑公孙段、曹人、莒人、滕子、薛人、小邾人城杞。晋侯使士鞅来聘。杞子来盟。吴子使札来聘。

  秋九月,葬卫献公。齐高止出奔北燕。冬,仲孙羯如晋。

  

  【传】二十九年春,王正月,公在楚,释不朝正于庙也。楚人使公亲襚,公患之。穆叔曰:“祓殡而襚,则布币也。”乃使巫以桃列先祓殡。楚人弗禁,既而悔之。

  二月癸卯,齐人葬庄公于北郭。

  夏四月,葬楚康王。公及陈侯、郑伯、许男送葬,至于西门之外。诸侯之大夫皆至于墓。楚郏敖即位。王子围为令尹。郑行人子羽曰:“是谓不宜,必代之昌。松柏之下,其草不殖。”

  公还,及方城。季武子取卞,使公冶问,玺书追而与之,曰:“闻守卞者将叛,臣帅徒以讨之,既得之矣,敢告。”公冶致使而退,及舍而后闻取卞。公曰:“欲之而言叛,只见疏也。”公谓公冶曰:“吾可以入乎?”对曰:“君实有国,谁敢违君!”公与公冶冕服。固辞,强之而后受。公欲无入,荣成伯赋《式微》,乃归。五月,公至自楚。公冶致其邑于季氏,而终不入焉。曰:“欺其君,何必使余?”季孙见之,则言季氏如他日。不见,则终不言季氏。及疾,聚其臣,曰:“我死,必以在冕服敛,非德赏也。且无使季氏葬我。”

  葬灵王,郑上卿有事,子展使印段往。伯有曰:“弱,不可。”子展曰:“与其莫往,弱不犹愈乎?《诗》云:‘王事靡盬,不遑启处,东西南北,谁敢宁处?坚事晋、楚,以蕃王室也。王事无旷,何常之有?”遂使印段如周。

  吴人伐越,获俘焉,以为阍,使守舟。吴子余祭观舟,阍以刀弑之。

  郑子展卒,子皮即位。于是郑饥而未及麦,民病。子皮以子展之命,饩国人粟,户一钟,是以得郑国之民。故罕氏常掌国政,以为上卿。宋司城子罕闻之,曰:“邻于善,民之望也。”宋亦饥,请于平公,出公粟以贷。使大夫皆贷。司城氏贷而不书,为大夫之无者贷。宋无饥人。叔向闻之,曰:“郑之罕,宋之乐,其后亡者也!二者其皆得国乎!民之归也。施而不德,乐氏加焉,其以宋升降乎!”晋平公,杞出也,故治杞。六月,知悼子合诸侯之大夫以城杞,孟孝伯会之。

  郑子大叔与伯石往。子大叔见大叔文子,与之语。文子曰:“甚乎!其城杞也。”

  子大叔曰:“若之何哉?晋国不恤周宗之阙,而夏肄是屏。其弃诸姬,亦可知也已。诸姬是弃,其谁归之?吉也闻之,弃同即异,是谓离德。《诗》曰:‘协比其邻,昏姻孔云。’晋不邻矣,其谁云之?”齐高子容与宋司徒见知伯,女齐相礼。宾出,司马侯言于知伯曰:“二子皆将不免。子容专,司徒移,皆亡家之主也。”知伯曰:“何如?”对曰:“专则速及,侈将以其力毙,专则人实毙之,将及矣。”

  范献子来聘,拜城杞也。公享之,展庄叔执币。射者三耦,公臣不足,取于家臣,家臣:展瑕、展玉父为一耦。公臣,公巫召伯、仲颜庄叔为一耦,鄫鼓父、党叔为一耦。

  晋侯使司马女叔侯来治杞田,弗尽归也。晋悼夫人愠曰:“齐也取货。先君若有知也,不尚取之!”公告叔侯,叔侯曰:“虞、虢、焦、滑、霍、扬、韩、魏,皆姬姓也,晋是以大。若非侵小,将何所取?武、献以下,兼国多矣,谁得治之?杞,夏余也,而即东夷。鲁,周公之后也,而睦于晋。以杞封鲁犹可,而何有焉?鲁之于晋也,职贡不乏,玩好时至,公卿大夫相继于朝,史不绝书,府无虚月。如是可矣,何必瘠鲁以肥杞?且先君而有知也,毋宁夫人,而焉用老臣?”杞文公来盟。书曰“子”,贱之也。

  吴公子札来聘,见叔孙穆子,说之。谓穆子曰:“子其不得死乎?好善而不能择人。吾闻‘君子务在择人’。吾子为鲁宗卿,而任其大政,不慎举,何以堪之?祸必及子!”请观于周乐。使工为之歌《周南》、《召南》,曰:“美哉!始基之矣,犹未也。然勤而不怨矣。”为之歌《邶》、《鄘》、《卫》,曰:“美哉,渊乎!忧而不困者也。吾闻卫康叔、武公之德如是,是其《卫风》乎?”为之歌《王》,曰:“美哉!思而不惧,其周之东乎?”为之歌《郑》,曰:“美哉!其细已甚,民弗堪也,是其先亡乎!”为之歌《齐》,曰:“美哉!泱泱乎!大风也哉!表东海者,其大公乎!国未可量也。”为之歌《豳》,曰:“美哉!荡乎!乐而不淫,其周公之东乎?”为之歌《秦》,曰:“此之谓夏声。夫能夏则大,大之至也,其周之旧乎?”为之歌《魏》,曰:“美哉!沨沨乎!大而婉,险而易行,以德辅此,则明主也。”为之歌《唐》,曰:“思深哉!其有陶唐氏之遗民乎?不然,何忧之远也?非令德之后,谁能若是?”为之歌《陈》,曰:“国无主,其能久乎?”自《郐》以下无讥焉。为之歌《小雅》,曰:“美哉!思而不贰,怨而不言,其周德之衰乎?犹有先王之遗民焉。”为之歌《大雅》,曰:“广哉!熙熙乎!曲而有直体,其文王之德乎?”为之歌《颂》,曰:“至矣哉!直而不倨,曲而不屈,迩而不逼,远而不携,迁而不淫,复而不厌,哀而不愁,乐而不荒,用而不匮,广而不宣,施而不费,取而不贪,处而不底,行而不流,五声和,八风平,节有度,守有序,盛德之所同也。”

  见舞《象箾》《南籥》者,曰:“美哉!犹有憾。”见舞《大武》者,曰:“美哉!周之盛也,其若此乎!”见舞《韶濩》者,曰:“圣人之弘也,而犹有惭德,圣人之难也。”见舞《大夏》者,曰:“美哉!勤而不德,非禹其谁能修之?”见舞《韶箾》者,曰:“德至矣哉!大矣!如天之无不帱也,如地之无不载也,虽甚盛德,其蔑以加于此矣。观止矣!若有他乐,吾不敢请已!”其出聘也,通嗣君也。故遂聘于齐,说晏平仲,谓之曰:“子速纳邑与政!无邑无政,乃免于难。齐国之政,将有所归,未获所归,难未歇也。”故晏子因陈桓子以纳政与邑,是以免于栾、高之难。

  聘于郑,见子产,如旧相识,与之缟带,子产献纻衣焉。谓子产曰:“郑之执政侈,难将至矣!政必及子。子为政,慎之以礼。不然,郑国将败。”

  适卫,说蘧瑗、史狗、史鳅,公子荆、公叔发、公子朝,曰:“卫多君子,未有患也。”

  自卫如晋,将宿于戚。闻钟声焉,曰:“异哉!吾闻之也:‘辩而不德,必加于戮。’夫子获罪于君以在此,惧犹不足,而又何乐?夫子之在此也,犹燕之巢于幕上。君又在殡,而可以乐乎?”遂去之。文子闻之,终身不听琴瑟。

  适晋,说赵文子、韩宣子、魏献子,曰:“晋国其萃于三族乎!”说叔向,将行,谓叔向曰:“吾子勉之!君侈而多良,大夫皆富,政将在家。吾子好直,必思自免于难。”

  秋九月,齐公孙虿、公孙灶放其大夫高止于北燕。乙未,出。书曰:“出奔。”

  罪高止也。高止好以事自为功,且专,故难及之。

  冬,孟孝伯如晋,报范叔也。

  为高氏之难故,高竖以卢叛。十月庚寅,闾丘婴帅师围卢。高竖曰:“苟请高氏有后,请致邑。”齐人立敬仲之曾孙宴酀,良敬仲也。十一月乙卯,高竖致卢而出奔晋,晋人城绵而置旃。

  郑伯有使公孙黑如楚,辞曰:“楚、郑方恶,而使余往,是杀余也。”伯有曰:“世行也。”子皙曰:“可则往,难则已,何世之有?”伯有将强使之。子皙怒,将伐伯有氏,大夫和之。十二月己巳,郑大夫盟于伯有氏。裨谌曰:“是盟也,其与几何?《诗》曰:‘君子屡盟,乱是用长。’今是长乱之道也。祸未歇也,必三年而后能纾。”然明曰:“政将焉往?”裨谌曰:“善之代不善,天命也,其焉辟子产?举不逾等,则位班也。择善而举,则世隆也。天又除之,夺伯有魄,子西即世,将焉辟之?天祸郑久矣,其必使子产息之,乃犹可以戾。不然,将亡矣。”

  

  

  !襄公三十年

  【经】三十年春王正月,楚子使薳罢来聘。夏四月,蔡世子般弑其君固。五月甲午。宋灾。宋伯姬卒。天王杀其弟佞夫。王子瑕奔晋。秋七月,叔弓如宋,葬宋共姬。郑良霄出奔许,自许入于郑,郑人杀良霄。冬十月,葬蔡景公。晋人、齐人、宋人、卫人、郑人、曹人、莒人、邾人、滕子、薛人、杞人、小邾人会于澶渊,宋灾故。

  

  【传】三十年春,王正月,楚子使薳罢来聘,通嗣君也。穆叔问:“王子之为政何如?”对曰:“吾侪小人,食而听事,犹惧不给命而不免于戾,焉与知政?”固问焉,不告。穆叔告大夫曰:“楚令尹将有大事,子荡将与焉,助之匿其情矣。”

  子产相郑伯以如晋,叔向问郑国之政焉。对曰:“吾得见与否,在此岁也。

  驷、良方争,未知所成。若有所成,吾得见,乃可知也。”叔向曰:“不既和矣乎?”对曰:“伯有侈而愎,子皙好在人上,莫能相下也。虽其和也,犹相积恶也,恶至无日矣。”

  三月癸未,晋悼夫人食舆人之城杞者。绛县人或年长矣,无子,而往与于食。

  有与疑年,使之年。曰:“臣小人也,不知纪年。臣生之岁,正月甲子朔,四百有四十五甲子矣,其季于今三之一也。”吏走问诸朝,师旷曰:“鲁叔仲惠伯会郤成子于承匡之岁也。是岁也,狄伐鲁。叔孙庄叔于是乎败狄于咸,获长狄侨如及虺也豹也,而皆以名其子。七十三年矣。”史赵曰:“亥有二首六身,下二如身,是其日数也。”士文伯曰:“然则二万六千六百有六旬也。”

  赵孟问其县大夫,则其属也。召之,而谢过焉,曰:“武不才,任君之大事,以晋国之多虞,不能由吾子,使吾子辱在泥涂久矣,武之罪也。敢谢不才。”遂仕之,使助为政。辞以老。与之田,使为君复陶,以为绛县师,而废其舆尉。于是,鲁使者在晋,归以语诸大夫。季武子曰:“晋未可媮也。有赵孟以为大夫,有伯瑕以为佐,有史赵、师旷而咨度焉,有叔向、女齐以师保其君。其朝多君子,其庸可媮乎?勉事之而后可。”

  夏四月己亥,郑伯及其大夫盟。君子是以知郑难之不已也。

  蔡景侯为大子般娶于楚,通焉。大子弑景侯。

  初,王儋季卒,其子括将见王,而叹。单公子愆期为灵王御士,过诸廷,闻其叹而言曰:“乌乎!必有此夫!”入以告王,且曰:“必杀之!不戚而愿大,视躁而足高,心在他矣。不杀,必害。”王曰:“童子何知?”及灵王崩,儋括欲立王子佞夫,佞夫弗知。戊子,儋括围蒍,逐成愆。成愆奔平畦。五月癸巳,尹言多、刘毅、单蔑、甘过、巩成杀佞夫。括、瑕、廖奔晋。书曰“天王杀其弟佞夫。”罪在王也。

  或叫于宋大庙,曰:“譆,譆!出出!”鸟鸣于亳社,如曰:“譆譆。”甲午,宋大灾。宋伯姬卒,待姆也。君子谓:“宋共姬,女而不妇。女待人,妇义事也。”

  六月,郑子产如陈莅盟。归,复命。告大夫曰:“陈,亡国也,不可与也。

  聚禾粟,缮城郭,恃此二者,而不抚其民。其君弱植,公子侈,大子卑,大夫敖,政多门,以介于大国,能无亡乎?不过十年矣。”

  秋七月,叔弓如宋,葬共姬也。

  郑伯有耆酒,为窟室,而夜饮酒击钟焉,朝至未已。朝者曰:“公焉在?”其人曰:“吾公在壑谷。”皆自朝布路而罢。既而朝,则又将使子皙如楚,归而饮酒。庚子,子皙以驷氏之甲伐而焚之。伯有奔雍梁,醒而后知之,遂奔许。大夫聚谋,子皮曰:“《仲虺之志》云:‘乱者取之,亡者侮之。推亡固存,国之利也。’罕、驷、丰同生。伯有汰侈,故不免。”

  人谓子产:“就直助强!”子产曰:“岂为我徒?国之祸难,谁知所儆?或主强直,难乃不生。姑成吾所。”辛丑,子产敛伯有氏之死者而殡之,不及谋而遂行。印段从之。子皮止之,众曰:“人不我顺,何止焉?”子皮曰:“夫人礼于死者,况生者乎?”遂自止之。壬寅,子产入。癸卯,子石入。皆受盟于子皙氏。乙巳,郑伯及其大夫盟于大宫。盟国人于师之梁之外。

  伯有闻郑人之盟己也,怒。闻子皮之甲不与攻己也,喜。曰:“子皮与我矣。”

  癸丑,晨,自墓门之渎入,因马师颉介于襄库,以伐旧北门。驷带率国人以伐之。

  皆召子产。子产曰:“兄弟而及此,吾从天所与。”伯有死于羊肆,子产襚之,枕之股而哭之,敛而殡诸伯有之臣在市侧者。既而葬诸斗城。子驷氏欲攻子产,子皮怒之曰:“礼,国之干也,杀有礼,祸莫大焉。”乃止。

  于是游吉如晋还,闻难不入,复命于介。八月甲子,奔晋。驷带追之,及酸枣。与子上盟,用两珪质于河。使公孙肸入盟大夫。己巳,复归。书曰“郑人杀良霄。”不称大夫,言自外入也。

  于子蟜之卒也,将葬,公孙挥与裨灶晨会事焉。过伯有氏,其门上生莠。

  子羽曰:“其莠犹在乎?”于是岁在降娄,降娄中而旦。裨灶指之曰:“犹可以终岁,岁不及此次也已。”及其亡也,岁在娵訾之口。其明年,乃及降娄。

  仆展从伯有,与之皆死。羽颉出奔晋,为任大夫。鸡泽之会,郑乐成奔楚,遂适晋。羽颉因之,与之比,而事赵文子,言伐郑之说焉。以宋之盟故,不可。

  子皮以公孙鉏为马师。

  楚公子围杀大司马蒍掩而取其室。申无宇曰:“王子必不免。善人,国之主也。王子相楚国,将善是封殖,而虐之,是祸国也。且司马,令尹之偏,而王之四体也。绝民之主,去身之偏,艾王之体,以祸其国,无不祥大焉!何以得免?”为宋灾故,诸侯之大夫会,以谋归宋财。冬十月,叔孙豹会晋赵武、齐公孙虿、宋向戌、卫北宫佗、郑罕虎及小邾之大夫,会于澶渊。既而无归于宋,故不书其人。

  君子曰:“信其不可不慎乎!澶渊之会,卿不书,不信也夫!诸侯之上卿,会而不信,宠名皆弃,不信之不可也如是!《诗》曰:‘文王陟降,在帝左右。’信之谓也。又曰:‘淑慎尔止,无载尔伪。’不信之谓也。”书曰“某人某人会于澶渊,宋灾故。”尤之也。不书鲁大夫,讳之也。

  郑子皮授子产政,辞曰:“国小而逼,族大宠多,不可为也。”子皮曰:“虎帅以听,谁敢犯子?子善相之,国无小,小能事大,国乃宽。”

  子产为政,有事伯石,赂与之邑。子大叔曰:“国,皆其国也。奚独赂焉?”子产曰:“无欲实难。皆得其欲,以从其事,而要其成,非我有成,其在人乎?何爱于邑?邑将焉往?”子大叔曰:“若四国何?”子产曰:“非相违也,而相从也,四国何尤焉?《郑书》有之曰:‘安定国家,必大焉先。’姑先安大,以待其所归。”既,伯石惧而归邑,卒与之。伯有既死,使大史命伯石为卿,辞。

  大史退,则请命焉。复命之,又辞。如是三,乃受策入拜。子产是以恶其为人也,使次己位。

  子产使都鄙有章,上下有服,田有封洫,庐井有伍。大人之忠俭者,从而与之。泰侈者,因而毙之。

  丰卷将祭,请田焉。弗许,曰:“唯君用鲜,众给而已。”子张怒,退而征役。子产奔晋,子皮止之而逐丰卷。丰卷奔晋。子产请其田里,三年而复之,反其田里及其入焉。

  从政一年,舆人诵之,曰:“取我衣冠而褚之,取我田畴而伍之。孰杀子产,吾其与之!”及三年,又诵之,曰;“我有子弟,子产诲之。我有田畴,子产殖之。子产而死,谁其嗣之?”

  

  !襄公三十一年

  【经】三十有一年春王正月。夏六月辛巳,公薨于楚宫。秋九月癸巳,子野卒。己亥,仲孙羯卒。冬十月,滕子来会葬。癸酉,葬我君襄公。十有一月,莒人杀其君密州。

  

  【传】三十一年春,王正月,穆叔至自会,见孟孝伯,语之曰:“赵孟将死矣。其语偷,不似民主。且年未盈五十,而谆谆焉如八九十者,弗能久矣。若赵孟死,为政者其韩子乎!吾子盍与季孙言之,可以树善,君子也。晋君将失政矣,若不树焉,使早备鲁,既而政在大夫,韩子懦弱,大夫多贪,求欲无厌,齐、楚未足与也,鲁其惧哉!”孝伯曰:“人生几何?谁能无偷?朝不及夕,将安用树?”穆叔出而告人曰:“孟孙将死矣。吾语诸赵孟之偷也,而又甚焉。”又与季孙语晋故,季孙不从。

  及赵文子卒,晋公室卑,政在侈家。韩宣子为政,为能图诸侯。鲁不堪晋求,谗慝弘多,是以有平丘之会。

  齐子尾害闾丘婴,欲杀之,使帅师以伐阳州。我问师故。夏五月,子尾杀闾丘婴以说于我师。工偻洒、渻灶、孔虺、贾寅出奔莒。出群公子。

  公作楚宫。穆叔曰:“《大誓》云:‘民之所欲,天必从之。’君欲楚也夫!故作其宫。若不复适楚,必死是宫也。”六月辛巳,公薨于楚宫。叔仲带窃其拱璧,以与御人,纳诸其怀而从取之,由是得罪。

  立胡女敬归之子子野,次于季氏。秋九月癸巳,卒,毁也。

  己亥,孟孝伯卒。

  立敬归之娣齐归之子公子裯,穆叔不欲,曰:“大子死,有母弟则立之,无则长立。年钧择贤,义钧则卜,古之道也。非適嗣,何必娣之子?且是人也,居丧而不哀,在戚而有嘉容,是谓不度。不度之人,鲜不为患。若果立之,必为季氏忧。”武子不听,卒立之。比及葬,三易衰,衰衽如故衰。于是昭公十九年矣,犹有童心,君子是以知其不能终也。

  冬十月,滕成公来会葬,惰而多涕。子服惠伯曰:“滕君将死矣!怠于其位,而哀已甚,兆于死所矣。能无从乎?”癸酉,葬襄公。

  公薨之月,子产相郑伯以如晋,晋侯以我丧故,未之见也。子产使尽坏其馆之垣而纳车马焉。士文伯让之,曰:“敝邑以政刑之不修,寇盗充斥,无若诸侯之属辱在寡君者何?是以令吏人完客所馆,高其闬闳,厚其墙垣,以无忧客使。

  今吾子坏之,虽从者能戒,其若异客何?以敝邑之为盟主,缮完葺墙,以待宾客,若皆毁之,其何以共命?寡君使匄请命。”对曰:“以敝邑褊小,介于大国,诛求无时,是以不敢宁居,悉索敝赋,以来会时事。逢执事之不间,而未得见,又不获闻命,未知见时,不敢输币,亦不敢暴露。其输之,则君之府实也,非荐陈之,不敢输也。其暴露之,则恐燥湿之不时而朽蠹,以重敝邑之罪。侨闻文公之为盟主也,宫室卑庳,无观台榭,以崇大诸侯之馆。馆如公寝,库厩缮修,司空以时平易道路,圬人以时塓馆宫室。诸侯宾至,甸设庭燎,仆人巡宫,车马有所,宾从有代,巾车脂辖,隶人牧圉,各瞻其事,百官之属,各展其物。公不留宾,而亦无废事,忧乐同之,事则巡之,教其不知,而恤其不足。宾至如归,无宁灾患?不畏寇盗,而亦不患燥湿。今铜鞮之宫数里,而诸侯舍于隶人。门不容车,而不可逾越。盗贼公行,而天厉不戒。宾见无时,命不可知。若又勿坏,是无所藏币,以重罪也。敢请执事,将何以命之?虽君之有鲁丧,亦敝邑之忧也。

  若获荐币,修垣而行,君之惠也,敢惮勤劳?”文伯复命,赵文子曰:“信!我实不德,而以隶人之垣以赢诸侯,是吾罪也。”使士文伯谢不敏焉。晋侯见郑伯,有加礼,厚其宴好而归之。乃筑诸侯之馆。

  叔向曰:“辞之不可以已也如是夫!子产有辞,诸侯赖之,若之何其释辞也?《诗》曰:‘辞之辑矣,民之协矣。辞之绎矣,民之莫矣。’其知之矣。”

  郑子皮使印段如楚,以适晋告,礼也。

  莒犁比公生去疾及展舆,既立展舆,又废之。犁比公虐,国人患之。十一月,展舆因国人以攻莒子,弑之,乃立。去疾奔齐,齐出也。展舆,吴出也。书曰“莒人弑其君买朱鉏。”言罪之在也。

  吴子使屈狐庸聘于晋,通路也。赵文子问焉,曰:“延州来季子其果立乎?巢陨诸樊,阍戕戴吴,天似启之,何如?”对曰:“不立。是二王之命也,非启季子也。若天所启,其在今嗣君乎!甚德而度,德不失民,度不失事,民亲而事有序,其天所启也。有吴国者,必此君之子孙实终之。季子,守节者也。虽有国,不立。”

  十二月,北宫文子相卫襄公以如楚,宋之盟故也。过郑,印段<辶壬>劳于棐林,如聘礼而以劳辞。文子入聘。子羽为行人,冯简子与子大叔逆客。事毕而出,言于卫侯曰:“郑有礼,其数世之福也,其无大国之讨乎!《诗》曰:‘谁能执热,逝不以濯。’礼之于政,如热之有濯也。濯以救热,何患之有?”子产之从政也,择能而使之。冯简子能断大事,子大叔美秀而文,公孙挥能知四国之为,而辨于其大夫之族姓、班位、贵贱、能否,而又善为辞令,裨谌能谋,谋于野则获,谋于邑则否。郑国将有诸侯之事,子产乃问四国之为于子羽,且使多为辞令。与裨谌乘以适野,使谋可否。而告冯简子,使断之。事成,乃授子大叔使行之,以应对宾客。是以鲜有败事。北宫文子所谓有礼也。

  郑人游于乡校,以论执政。然明谓子产曰:“毁乡校,何如?”子产曰:“何为?夫人朝夕退而游焉,以议执政之善否。其所善者,吾则行之。其所恶者,吾则改之。是吾师也,若之何毁之?我闻忠善以损怨,不闻作威以防怨。岂不遽止,然犹防川,大决所犯,伤人必多,吾不克救也。不如小决使道。不如吾闻而药之也。”然明曰:“蔑也今而后知吾子之信可事也。小人实不才,若果行此,其郑国实赖之,岂唯二三臣?”仲尼闻是语也,曰:“以是观之,人谓子产不仁,吾不信也。”

  子皮欲使尹何为邑。子产曰:“少,未知可否?”子皮曰:“愿,吾爱之,不吾叛也。使夫往而学焉,夫亦愈知治矣。”子产曰:“不可。人之爱人,求利之也。今吾子爱人则以政,犹未能操刀而使割也,其伤实多。子之爱人,伤之而已,其谁敢求爱于子?子于郑国,栋也,栋折榱崩,侨将厌焉,敢不尽言?子有美锦,不使人学制焉。大官、大邑,身之所庇也,而使学者制焉,其为美锦,不亦多乎?侨闻学而后入政,未闻以政学者也。若果行此,必有所害。譬如田猎,射御贯则能获禽,若未尝登车射御,则败绩厌覆是惧,何暇思获?”子皮曰:“善哉!虎不敏。吾闻君子务知大者、远者,小人务知小者、近者。我,小人也。

  衣服附在吾身,我知而慎之。大官、大邑所以庇身也,我远而慢之。微子之言,吾不知也。他日我曰:‘子为郑国,我为吾家,以庇焉,其可也。’今而后知不足。自今,请虽吾家,听子而行。”子产曰:“人心之不同,如其面焉。吾岂敢谓子面如吾面乎?抑心所谓危,亦以告也。”子皮以为忠,故委政焉。子产是以能为郑国。

  卫侯在楚,北宫文子见令尹围之威仪,言于卫侯曰:“令尹似君矣!将有他志,虽获其志,不能终也。《诗》云:‘靡不有初,鲜克有终。’终之实难,令尹其将不免?”公曰:“子何以知之?”对曰:“《诗》云:‘敬慎威仪,惟民之则。’令尹无威仪,民无则焉。民所不则,以在民上,不可以终。”公曰:“善哉!何谓威仪?”对曰:“有威而可畏谓之威,有仪而可象谓之仪。君有君之威仪,其臣畏而爱之,则而象之,故能有其国家,令闻长世。臣有臣之威仪,其下畏而爱之,故能守其官职,保族宜家。顺是以下皆如是,是以上下能相固也。

  《卫诗》曰:‘威仪棣棣,不可选也。’言君臣、上下、父子、兄弟、内外、大小皆有威仪也。《周诗》曰:‘朋友攸摄,摄以威仪。’言朋友之道,必相教训以威仪也。《周书》数文王之德,曰:‘大国畏其力,小国怀其德。’言畏而爱之也。《诗》云:‘不识不知,顺帝之则。’言则而象之也。纣囚文王七年,诸侯皆从之囚。纣于是乎惧而归之,可谓爱之。文王伐崇,再驾而降为臣,蛮夷帅服,可谓畏之。文王之功,天下诵而歌舞之,可谓则之,文王之行,至今为法,可谓象之。有威仪也。故君子在位可畏,施舍可爱,进退可度,周旋可则,容止可观,作事可法,德行可象,声气可乐,动作有文,言语有章,以临其下,谓之有威仪也。”
!!小雅 鹿鸣之什 鹿鸣

呦呦鹿鸣,食野之苹。我有嘉宾,鼓瑟吹笙。吹笙鼓簧,承筐是将。人之好我,示我周行。

呦呦鹿鸣,食野之蒿。我有嘉宾,德音孔昭。视民不恌,君子是则是效。我有旨酒,嘉宾式燕以敖。

呦呦鹿鸣,食野之芩。我有嘉宾,鼓瑟鼓琴。鼓瑟鼓琴,和乐且湛。我有旨酒,以燕乐嘉宾之心。

!!小雅 鹿鸣之什 四牡

四牡騑騑,周道倭迟。岂不怀归?王事靡盬,我心伤悲。

四牡騑騑,啴々骆马。岂不怀归?王事靡盬,不遑启处。

翩翩者鵻,载飞载下,集于苞栩。王事靡盬,不遑将父。

翩翩者鵻,载飞载止,集于苞杞。王事靡盬,不遑将母。

驾彼四骆,载骤骎骎。岂不怀归?是用作歌,将母来谂。

!!小雅 鹿鸣之什 皇皇者华

皇皇者华,于彼原隰。駪々征夫,每怀靡及。

我马维驹,六辔如濡。载驰载驱,周爰咨诹。

我马维骐,六辔如丝。载驰载驱,周爰咨谋。

我马维骆,六辔沃若。载驰载驱,周爰咨度。

我马维骃,六辔既均。载驰载驱,周爰咨询。

!!小雅 鹿鸣之什 常棣

常棣之华,鄂不韡韡。凡今之人,莫如兄弟。

死丧之威,兄弟孔怀。原隰裒矣,兄弟求矣。

脊令在原,兄弟急难。每有良朋,况也永叹。

兄弟阋于墙,外御其务。每有良朋,烝也无戎。

丧乱既平,既安且宁。虽有兄弟,不如友生?

傧尔笾豆,饮酒之饫。兄弟既具,和乐且孺。

妻子好合,如鼓瑟琴。兄弟既翕,和乐且湛。

宜尔室家,乐尔妻帑。是究是图,亶其然乎?

!!小雅 鹿鸣之什 伐木

伐木丁丁,鸟鸣嘤嘤。出自幽谷,迁于乔木。嘤其鸣矣,求其友声。相彼鸟

矣,犹求友声。矧伊人矣,不求友生?神之听之,终和且平。

伐木许许,酾酒有藇!既有肥羜,以速诸父。宁适不来,微我弗顾。

於粲洒扫,陈馈八簋。既有肥牡,以速诸舅。宁适不来,微我有咎。

伐木于阪,酾酒有衍。笾豆有践,兄弟无远。民之失德,乾餱以愆。有酒

湑我,无酒酤我。坎坎鼓我,蹲蹲舞我。迨我暇矣,饮此湑矣。

!!小雅 鹿鸣之什 天保

天保定尔,亦孔之固。俾尔单厚,何福不除?俾尔多益,以莫不庶。

天保定尔,俾尔戩穀。罄无不宜,受天百禄。降尔遐福,维日不足。

天保定尔,以莫不兴。如山如阜,如冈如陵,如川之方至,以莫不增。

吉蠲为饎,是用孝享。禴祠烝尝,于公先王。君曰:卜尔,万寿无疆。

神之吊矣,诒尔多福。民之质矣,日用饮食。群黎百姓,遍为尔德。

如月之恒,如日之升。如南山之寿,不骞不崩。如松柏之茂,无不尔或承。

!!小雅 鹿鸣之什 采薇

采薇采薇,薇亦作止。曰归曰归,岁亦莫止。靡室靡家,玁狁之故。不遑启居,玁狁之故。

采薇采薇,薇亦柔止。曰归曰归,心亦忧止。忧心烈烈,载饥载渴。我戍未定,靡使归聘。

采薇采薇,薇亦刚止。曰归曰归,岁亦阳止。王事靡盬,不遑启处。忧心孔疚,我行不来!

彼尔维何?维常之华。彼路斯何?君子之车。戎车既驾,四牡业业。岂敢定居?一月三捷。

驾彼四牡,四牡骙々。君子所依,小人所腓。四牡翼翼,象弭鱼服。岂不日戒?玁狁孔棘!

昔我往矣,杨柳依依。今我来思,雨雪霏霏。行道迟迟,载渴载饥。我心伤悲,莫知我哀!

!!小雅 鹿鸣之什 出车

我出我车,于彼牧矣。自天子所,谓我来矣。召彼仆夫,谓之载矣。王事多难,维其棘矣。

我出我车,于彼郊矣。设此旐矣,建彼旄矣。彼旟旐斯,胡不旆旆?忧心悄悄,仆夫况瘁。

王命南仲,往城于方。出车彭彭,旂旐央央。天子命我,城彼朔方。赫赫南仲,玁狁于襄。

昔我往矣,黍稷方华。今我来思,雨雪载途。王事多难,不遑启居。岂不怀归?畏此简书。

喓々草虫,趯趯阜螽。未见君子,忧心忡忡。既见君子,我心则降。赫赫南仲,薄伐西戎。

春日迟迟,卉木萋萋。仓庚喈喈,采蘩祁祁。执讯获丑,薄言还归。赫赫南仲,玁狁于夷。

!!小雅 鹿鸣之什 杕杜

有杕之杜,有睆其实。王事靡盬,继嗣我日。日月阳止,女心伤止,征夫遑止。

有杕之杜,其叶萋萋。王事靡盬,我心伤悲。卉木萋止,女心悲止,征夫归止!

陟彼北山,言采其杞。王事靡盬,忧我父母。檀车幝々,四牡痯々,征夫不远!

匪载匪来,忧心孔疚。斯逝不至,而多为恤。卜筮偕止,会言近止,征夫迩止!

!!小雅 鹿鸣之什 鱼丽

鱼丽于罶,鲿鲨。君子有酒,旨且多。

鱼丽于罶,鲂鳢。君子有酒,多且旨。

鱼丽于罶,鰋鲤。君子有酒,旨且有。物其多矣,

维其嘉矣!物其旨矣,维其偕矣!物其有矣,维其时矣!

!!小雅 鹿鸣之什 南陔(今佚)

!!小雅 鹿鸣之什 白华(今佚)

!!小雅 鹿鸣之什 华黍(今佚)

!!小雅 南有嘉鱼之什 南有嘉鱼

南有嘉鱼,烝然罩罩。君子有酒,嘉宾式燕以乐。

南有嘉鱼,烝然汕汕。君子有酒,嘉宾式燕以衎。

南有樛木,甘瓠累之。君子有酒,嘉宾式燕绥之。

翩翩者鵻,烝然来思。君子有酒,嘉宾式燕又思。

!!小雅 南有嘉鱼之什 南山有台

南山有台,北山有莱。乐只君子,邦家之基。乐只君子,万寿无期。

南山有桑,北山有杨。乐只君子,邦家之光。乐只君子,万寿无疆。

南山有杞,北山有李。乐只君子,民之父母。乐只君子,德音不已。

南山有栲,北山有杻。乐只君子,遐不眉寿。乐只君子,德音是茂。

南山有枸,北山有楰。乐只君子,遐不黄耇。乐只君子,保艾尔后。

!!小雅 南有嘉鱼之什 由庚(今佚)

!!小雅 南有嘉鱼之什 崇丘(今佚)

!!小雅 南有嘉鱼之什 由仪(今佚)

!!小雅 南有嘉鱼之什 蓼萧

蓼彼萧斯,零露湑兮。既见君子,我心写兮。燕笑语兮,是以有誉处兮。

蓼彼萧斯,零露瀼瀼。既见君子,为龙为光。其德不爽,寿考不忘。

蓼彼萧斯,零露泥泥。既见君子,孔燕岂弟。宜兄宜弟,令德寿岂。

蓼彼萧斯,零露浓浓。既见君子,鞗革忡忡。和鸾雍雍,万福攸同。

!!小雅 南有嘉鱼之什 湛露

湛湛露斯,匪阳不晞。厌厌夜饮,不醉无归。

湛湛露斯,在彼丰草。厌厌夜饮,在宗载考。

湛湛露斯,在彼杞棘。显允君子,莫不令德。

其桐其椅,其实离离。岂弟君子,莫不令仪。

!!小雅 南有嘉鱼之什 彤弓

彤弓弨兮,受言藏之。我有嘉宾,中心贶之。钟鼓既设,一朝飨之。

彤弓弨兮,受言载之。我有嘉宾,中心喜之。钟鼓既设,一朝右之。

彤弓弨兮,受言櫜之。我有嘉宾,中心好之。钟鼓既设,一朝酬之。

!!小雅 南有嘉鱼之什 菁菁者莪

菁菁者莪,在彼中阿。既见君子,乐且有仪。

菁菁者莪,在彼中沚。既见君子,我心则喜。

菁菁者莪,在彼中陵。既见君子,锡我百朋。

泛泛杨舟,载沉载浮。既见君子,我心则休。

!!小雅 南有嘉鱼之什 六月

六月栖栖,戎车既饬。四牡骙々,载是常服。玁狁孔炽,我是用急。王于出征,以匡王国。

比物四骊,闲之维则。维此六月,既成我服。我服既成,于三十里。王于出征,以佐天子。

四牡修广,其大有颙。薄伐玁狁,以奏肤公。有严有翼,共武之服。共武之服,以定王国。

玁狁匪茹,整居焦获。侵镐及方,至于泾阳。织文鸟章,白旆央央。元戎十乘,以先启行。

戎车既安,如轾如轩。四牡既佶,既佶且闲。薄伐玁狁,至于大原。文武吉甫,万邦为宪。

吉甫燕喜,既多受祉。来归自镐,我行永久。饮御诸友,炰鳖脍鲤。侯谁在矣?张仲孝友。

!!小雅 南有嘉鱼之什 采芑

薄言采芑,于彼新田,呈此菑亩。方叔涖止,其车三千。师干之试,方叔率止。乘其四骐,四骐翼翼。路车有奭,簟茀鱼服,钩膺鞗革。

薄言采芑,于彼新田,于此中乡。方叔涖止,其车三千。旂旐央央,方叔率止。约軧错衡,八鸾玱玱。服其命服,朱芾斯皇,有玱葱珩。

鴥彼飞隼,其飞戾天,亦集爰止。方叔涖止,其车三千。师干之试,方叔率止。钲人伐鼓,陈师鞠旅。显允方叔,伐鼓渊渊,振旅阗阗。

蠢尔蛮荆,大邦为仇。方叔元老,克壮其犹。方叔率止,执讯获丑。戎车啴々,啴々焞々,如霆如雷。显允方叔,征伐玁狁,蛮荆来威。

!!小雅 南有嘉鱼之什 车攻

我车既攻,我马既同。四牡庞庞,驾言徂东。

田车既好,田牡孔阜。东有甫草,驾言行狩。

之子于苗,选徒嚣嚣。建旐设旄,搏兽于敖。

驾彼四牡,四牡奕奕。赤芾金舄,会同有绎。

决拾既佽,弓矢既调。射夫既同,助我举柴。

四黄既驾,两骖不猗。不失其驰,舍矢如破。

萧萧马鸣,悠悠旆旌。徒御不惊,大庖不盈。

之子于征,有闻无声。允矣君子,展也大成。

!!小雅 南有嘉鱼之什 吉日

吉日维戊,既伯既祷。田车既好,四牡孔阜。升彼大阜,从其群丑。

吉日庚午,既差我马。兽之所同,麀鹿麌々。漆沮之从,天子之所。

瞻彼中原,其祁孔有。儦々俟俟,或群或友。悉率左右,以燕天子。

既张我弓,既挟我矢。发彼小豝,殪此大兕。以御宾客,且以酌醴。

!!小雅 鸿雁之什 鸿雁

鸿雁于飞,肃肃其羽。之子于征,劬劳于野。爰及矜人,哀此鳏寡。

鸿雁于飞,集于中泽。之子于垣,百堵皆作。虽则劬劳,其究安宅?

鸿雁于飞,哀鸣嗷嗷。维此哲人,谓我劬劳。维彼愚人,谓我宣骄。

!!小雅 鸿雁之什 庭燎

夜如何其?夜未央,庭燎之光。君子至止,鸾声将将。

夜如何其?夜未艾,庭燎晣々。君子至止,鸾声哕哕。

夜如何其?夜乡晨,庭燎有辉。君子至止,言观其旂。

!!小雅 鸿雁之什 沔水

沔彼流水,朝宗于海。鴥彼飞隼,载飞载止。嗟我兄弟,邦人诸友。莫肯念乱,谁无父母?

沔彼流水,其流汤汤。鴥彼飞隼,载飞载扬。念彼不迹,载起载行。心之忧矣,不可弭忘。

鴥彼飞隼,率彼中陵。民之讹言,宁莫之惩?我友敬矣,谗言其兴。

!!小雅 鸿雁之什 鹤鸣

鹤鸣于九皋,声闻于野。鱼潜在渊,或在于渚。乐彼之园,爰有树檀,其下维萚。他山之石,可以为错。

鹤鸣于九皋,声闻于天。鱼在于渚,或潜在渊。乐彼之园,爰有树檀,其下维谷。他山之石,可以攻玉。

!!小雅 鸿雁之什 鹤鸣

鹤鸣于九皋,声闻于野。鱼潜在渊,或在于渚。乐彼之园,爰有树檀,其下

维萚。他山之石,可以为错。

鹤鸣于九皋,声闻于天。鱼在于渚,或潜在渊。乐彼之园,爰有树檀,其下

维谷。他山之石,可以攻玉。

!!小雅 鸿雁之什 祈父

祈父,予王之爪牙。胡转予于恤,靡所止居?

祈父,予王之爪士。胡转予于恤,靡所厎止?

祈父,亶不聪。胡转予于恤?有母之尸饔。

!!小雅 鸿雁之什 白驹

皎皎白驹,食我场苗。絷之维之,以永今朝。所谓伊人,于焉逍遥?

皎皎白驹,食我场藿。絷之维之,以永今夕。所谓伊人,于焉嘉客?

皎皎白驹,贲然来思。尔公尔侯,逸豫无期?慎尔优游,勉尔遁思。

皎皎白驹,在彼空谷。生刍一束,其人如玉。毋金玉尔音,而有遐心。

!!小雅 鸿雁之什 黄鸟

黄鸟黄鸟,无集于穀,无啄我粟。此邦之人,不我肯穀。言旋言归,复我邦族。

黄鸟黄鸟,无集于桑,无啄我粱。此邦之人,不可与明。言旋言归,复我诸兄。

黄鸟黄鸟,无集于栩,无啄我黍。此邦之人,不可与处。言旋言归,复我诸父。

!!小雅 鸿雁之什 我行其野

我行其野,蔽芾其樗。婚姻之故,言就尔居。尔不我畜,复我邦家。

我行其野,言采其蓫。婚姻之故,言就尔宿。尔不我畜,言归斯复。

我行其野,言采其葍。不思旧姻,求尔新特。成不以富,亦祗以异。

!!小雅 鸿雁之什 斯干

秩秩斯干,幽幽南山。如竹苞矣,如松茂矣。兄及弟矣,式相好矣,无相犹矣。

似续妣祖,筑室百堵,西南其户。爰居爰处,爰笑爰语。

约之阁阁,椓之橐橐。风雨攸除,鸟鼠攸去,君子攸芋。

如跂斯翼,如矢斯棘,如鸟斯革,如翚斯飞,君子攸跻。

殖殖其庭,有觉其楹。哙哙其正,哕哕其冥。君子攸宁。

下莞上簟,乃安斯寝。乃寝乃兴,乃占我梦。吉梦维何?维熊维罴,维虺维蛇。

大人占之:维熊维罴,男子之祥;维虺维蛇,女子之祥。

乃生男子,载寝之床。载衣之裳,载弄之璋。其泣喤々,朱芾斯皇,室家君王。

乃生女子,载寝之地。载衣之裼,载弄之瓦。无非无仪,唯酒食是议,无父母诒罹。

!!小雅 鸿雁之什 无羊

谁谓尔无羊?三百维群。谁谓尔无牛?九十其犉。尔羊来思,其角濈々。尔牛来思,其耳湿湿。

或降于阿,或饮于池,或寝或讹。尔牧来思,何蓑何笠,或负其餱。三十维物,尔牲则具。

尔牧来思,以薪以蒸,以雌以雄。尔羊来思,矜矜兢兢,不骞不崩。麾之以肱,毕来既升。

牧人乃梦,众维鱼矣,旐维旟矣,大人占之;众维鱼矣,实维丰年;旐维旟矣,室家溱溱。

!!小雅 节南山之什 节南山

节彼南山,维石岩岩。赫赫师尹,民具尔瞻。忧心如惔,不敢戏谈。国既卒斩,何用不监!

节彼南山,有实其猗。赫赫师尹,不平谓何。天方荐瘥,丧乱弘多。民言无嘉,憯莫惩嗟。

尹氏大师,维周之氐;秉国之钧,四方是维。天子是毗,俾民不迷。不吊昊天,不宜空我师。

弗躬弗亲,庶民弗信。弗问弗仕,勿罔君子。式夷式已,无小人殆。琐琐姻亚,则无膴仕。

昊天不佣,降此鞠訩。昊天不惠,降此大戾。君子如届,俾民心阕。君子如夷,恶怒是违。

不吊昊天,乱靡有定。式月斯生,俾民不宁。忧心如酲,谁秉国成?不自为政,卒劳百姓。

驾彼四牡,四牡项领。我瞻四方,蹙蹙靡所骋。

方茂尔恶,相尔矛矣。既夷既怿,如相酬矣。

昊天不平,我王不宁。不惩其心,覆怨其正。

家父作诵,以究王訩。式讹尔心,以畜万邦。

!!小雅 节南山之什 正月

正月繁霜,我心忧伤。民之讹言,亦孔之将。念我独兮,忧心京京。哀我小心,癙忧以痒。

父母生我,胡俾我瘉?不自我先,不自我后。好言自口,莠言自口。忧心愈愈,是以有侮。

忧心惸惸,念我无禄。民之无辜,并其臣仆。哀我人斯,于何从禄?瞻乌爰止?于谁之屋?

瞻彼中林,侯薪侯蒸。民今方殆,视天梦梦。既克有定,靡人弗胜。有皇上帝,伊谁云憎?

谓山盖卑,为冈为陵。民之讹言,宁莫之惩。召彼故老,讯之占梦。具曰予圣,谁知乌之雌雄!

谓天盖高,不敢不局。谓地盖厚,不敢不蹐。维号斯言,有伦有脊。哀今之人,胡为虺蜴?

瞻彼阪田,有菀其特。天之杌我,如不我克。彼求我则,如不我得。执我仇仇,亦不我力。

心之忧矣,如或结之。今兹之正,胡然厉矣?燎之方扬,宁或灭之?赫赫宗周,褒姒灭之!

终其永怀,又窘阴雨。其车既载,乃弃尔辅。载输尔载,将伯助予!

无弃尔辅,员于尔辐。屡顾尔仆,不输尔载。终逾绝险,曾是不意。

鱼在于沼,亦匪克乐。潜虽伏矣,亦孔之炤。忧心惨惨,念国之为虐!

彼有旨酒,又有嘉肴。洽比其邻,婚姻孔云。念我独兮,忧心殷殷。

佌々彼有屋,蔌蔌方有谷。民今之无禄,天夭是椓。哿矣富人,哀此惸独。

!!小雅 节南山之什 十月之交

十月之交,朔月辛卯。日有食之,亦孔之丑。彼月而微,此日而微;今此下民,亦孔之哀。

日月告凶,不用其行。四国无政,不用其良。彼月而食,则维其常;此日而食,于何不臧。

爗々震电,不宁不令。百川沸腾,山冢崒崩。高岸为谷,深谷为陵。哀今之人,胡憯莫惩?

皇父卿士,番维司徒,家伯维宰,仲允膳夫,棸子内史,蹶维趣马,楀维师氏。醘妻煽方处。

抑此皇父,岂曰不时?胡为我作,不即我谋?彻我墙屋,田卒氵于莱。曰予不戕,礼则然矣。

皇父孔圣,作都于向。择三有事,亶侯多藏。不慭遗一老,俾守我王。择有车马,以居徂向。

黾勉从事,不敢告劳。无罪无辜,谗口嚣嚣。下民之孽,匪降自天。噂沓背憎,职竞由人。

悠悠我里,亦孔之痗。四方有羡,我独居忧。民莫不逸,我独不敢休。天命不彻,我不敢效我友自逸。

!!小雅 节南山之什 雨无正

浩浩昊天,不骏其德。降丧饥馑,斩伐四国。旻天疾威,弗虑弗图。舍彼有罪,既伏其辜。若此无罪,沦胥以铺。

周宗既灭,靡所止戾。正大夫离居,莫知我勚。三事大夫,莫肯夙夜。邦君诸侯,莫肯朝夕。庶曰式臧,覆出为恶。

如何昊天,辟言不信。如彼行迈,则靡所臻。凡百君子,各敬尔身。胡不相畏,不畏于天?

戎成不退,饥成不遂。曾我暬御,惨惨日瘁。凡百君子,莫肯用讯。听言则答,谮言则退。

哀哉不能言,匪舌是出,维躬是瘁。哿矣能言,巧言如流,俾躬处休!

维曰予仕,孔棘且殆。云不可使,得罪于天子;亦云可使,怨及朋友。

谓尔迁于王都。曰予未有室家。鼠思泣血,无言不疾。昔尔出居,谁从作尔室?

!!小雅 节南山之什 小旻

旻天疾威,敷于下土。谋犹回遹,何日斯沮?谋臧不从,不臧覆用。我视谋犹,亦孔之邛。

潝々訿々,亦孔之哀。谋之其臧,则具是违。谋之不臧,则具是依。我视谋犹,伊于胡厎。

我龟既厌,不我告犹。谋夫孔多,是用不集。发言盈庭,谁敢执其咎?如匪行迈谋,是用不得于道。

哀哉为犹,匪先民是程,匪大犹是经。维迩言是听,维迩言是争。如彼筑室于道谋,是用不溃于成。

国虽靡止,或圣或否。民虽靡膴,或哲或谋,或肃或艾。如彼泉流,无沦胥以败。

不敢暴虎,不敢冯河。人知其一,莫知其他。战战兢兢,如临深渊,如履薄冰。

!!小雅 节南山之什 小宛

宛彼鸣鸠,翰飞戾天。我心忧伤,念昔先人。明发不寐,有怀二人。

人之齐圣,饮酒温克。彼昏不知,壹醉日富。各敬尔仪,天命不又。

中原有菽,庶民采之。螟蛉有子,蜾蠃负之。教诲尔子,式穀似之。

题彼脊令,载飞载鸣。我日斯迈,而月斯征。夙兴夜寐,毋忝尔所生。

交交桑扈,率场啄粟。哀我填寡,宜岸宜狱。握粟出卜,自何能穀?

温温恭人,如集于木。惴惴小心,如临于谷。战战兢兢,如履薄冰。

!!小雅 节南山之什 小弁

弁彼鸒斯,归飞提提。民莫不穀,我独于罹。何辜于天?我罪伊何?心之忧矣,云如之何?

踧踧周道,鞫为茂草。我心忧伤,惄焉如捣。假寐永叹,维忧用老。心之忧矣,疢如疾首。

维桑与梓,必恭敬止。靡瞻匪父,靡依匪母。不属于毛?不罹于里?天之生我,我辰安在?

菀彼柳斯,鸣蜩嘒嘒,有漼者渊,萑苇淠淠。譬彼舟流,不知所届,心之忧矣,不遑假寐。

鹿斯之奔,维足伎伎。雉之朝雊,尚求其雌。譬彼坏木,疾用无枝。心之忧矣,宁莫之知?

相彼投兔,尚或先之。行有死人,尚或墐之。君子秉心,维其忍之。心之忧矣,涕既陨之。

君子信谗,如或酬之。君子不惠,不舒究之。伐木掎矣,析薪扡矣。舍彼有罪,予之佗矣。

莫高匪山,莫浚匪泉。君子无易由言,耳属于垣。无逝我梁,无发我笱。我躬不阅,遑恤我后。

!!小雅 节南山之什 巧言

悠悠昊天,曰父母且。无罪无辜,乱如此幠。昊天已威,予慎无罪。昊天大幠,予慎无辜。

乱之初生,僣始既涵。乱之又生,君子信谗。君子如怒,乱庶遄沮。君子如祉,乱庶遄已。

君子屡盟,乱是用长。君子信盗,乱是用暴。盗言孔甘,乱是用餤。匪其止共,维王之邛。

奕奕寝庙,君子作之。秩秩大猷,圣人莫之。他人有心,予忖度之。跃跃毚兔,遇犬获之。

荏染柔木,君子树之。往来行言,心焉数之。蛇蛇硕言,出自口矣。巧言如簧,颜之厚矣。

彼何人斯?居河之麋。无拳无勇,职为乱阶。既微且尰,尔勇伊何?为犹将多,尔居徒几何?

!!小雅 节南山之什 何人斯

彼何人斯?其心孔艰。胡逝我梁,不入我门?伊谁云从?谁暴之云。

二人从行,谁为此祸?胡逝我梁,不入唁我?始者不如,今云不我可。

彼何人斯?胡逝我陈?我闻其声,不见其身。不愧于人?不畏于天?

彼何人斯?其为飘风。胡不自北?胡不自南?胡逝我梁?祇搅我心。

尔之安行,亦不遑舍。尔之亟行,遑脂尔车。壹者之来,云何其盱。

尔还而入,我心易也。还而不入,否难知也。壹者之来,俾我祇也。

伯氏吹埙,仲氏吹篪。及尔如贯,谅不我知。出此三物,以诅尔斯。

为鬼为蜮,则不可得。有靦面目,视人罔极。作此好歌,以极反侧。

!!小雅 节南山之什 巷伯

萋兮斐兮,成是贝锦。彼谮人者,亦已大甚!

哆兮侈兮,成是南箕。彼谮人者,谁适与谋。

缉缉翩翩,谋欲谮人。慎尔言也,谓尔不信。

捷捷幡幡,谋欲谮言。岂不尔受?既其女迁。

骄人好好,劳人草草。苍天苍天,视彼骄人,矜此劳人。

彼谮人者,谁适与谋?取彼谮人,投畀豺虎。豺虎不食,投畀有北。有北不受,投畀有昊!

杨园之道,猗于亩丘。寺人孟子,作为此诗。凡百君子,敬而听之。

!!小雅 谷风之什 谷风

习习谷风,维风及雨。将恐将惧,维予与女。将安将乐,女转弃予。

习习谷风,维风及颓。将恐将惧,置予于怀。将安将乐,弃予如遗。

习习谷风,维山崔嵬。无草不死,无木不萎。忘我大德,思我小怨。

!!小雅 谷风之什 蓼莪

蓼蓼者莪,匪莪伊蒿。哀哀父母,生我劬劳。

蓼蓼者莪,匪莪伊蔚。哀哀父母,生我劳瘁。

瓶之罄矣,维罍之耻。鲜民之生,不如死之久矣。无父何怙?无母何恃?出则衔恤,入则靡至。

父兮生我,母兮鞠我。抚我畜我,长我育我,顾我复我,出入腹我。欲报之德。昊天罔极!

南山烈烈,飘风发发。民莫不穀,我独何害!南山律律,飘风弗弗。民莫不穀,我独不卒!

!!小雅 谷风之什 大东

有饛簋飧,有捄棘匕。周道如砥,其直如矢。君子所履,小人所视。眷言顾之,潸焉出涕。

小东大东,杼柚其空。纠纠葛屦,可以履霜。佻佻公子,行彼周行。既往既来,使我心疚。

有冽氿泉,无浸获薪。契契寤叹,哀我惮人。薪是获薪,尚可载也。哀我惮人,亦可息也。

东人之子,职劳不来。西人之子,粲粲衣服。舟人之子,熊罴是裘。私人之子,百僚是试。

或以其酒,不以其浆。鞙々佩璲,不以其长。维天有汉,监亦有光。跂彼织女,终日七襄。

虽则七襄,不成报章。睆彼牵牛,不以服箱。东有启明,西有长庚。有捄天毕,载施之行。

维南有箕,不可以簸扬。维北有斗,不可以挹酒浆。维南有箕,载翕其舌。维北有斗,西柄之揭。

!!小雅 谷风之什 四月

四月维夏,六月徂暑。先祖匪人,胡宁忍予?

秋日凄凄,百卉具腓。乱离瘼矣,爰其适归?

冬日烈烈,飘风发发。民莫不穀,我独何害?

山有嘉卉,侯栗侯梅。废为残贼,莫知其尤!

相彼泉水,载清载浊。我日构祸,曷云能穀?

滔滔江汉,南国之纪。尽瘁以仕,宁莫我有?

匪鹑匪鸢,翰飞戾天。匪鳣匪鲔,潜逃于渊。

山有蕨薇,隰有杞桋。君子作歌,维以告哀。

!!小雅 谷风之什 北山

陟彼北山,言采其杞。偕偕士子,朝夕从事。王事靡盬,忧我父母。

溥天之下,莫非王土;率土之滨,莫非王臣。大夫不均,我从事独贤。

四牡彭彭,王事傍傍。嘉我未老,鲜我方将。旅力方刚,经营四方。

或燕燕居息,或尽瘁事国;或息偃在床,或不已于行。

或不知叫号,或惨惨劬劳;或栖迟偃仰,或王事鞅掌。

或湛乐饮酒,或惨惨畏咎;或出入风议,或靡事不为。

!!小雅 谷风之什 无将大车

无将大车,祇自尘兮。无思百忧,祇自疷兮。

无将大车,维尘冥冥。无思百忧,不出于颎。

无将大车,维尘雍兮。无思百忧,祇自重兮。

!!小雅 谷风之什 小明

明明上天,照临下土。我征徂西,至于艽野。二月初吉,载离寒暑。心之忧矣,其毒大苦。念彼共人,涕零如雨。岂不怀归?畏此罪罟!

昔我往矣,日月方除。曷云其还?岁聿云莫。念我独兮,我事孔庶。心之忧矣,惮我不暇。念彼共人,眷眷怀顾!岂不怀归?畏此谴怒。

昔我往矣,日月方奥。曷云其还?政事愈蹙。岁聿云莫,采萧获菽。心之忧矣,自诒伊戚。念彼共人,兴言出宿。岂不怀归?畏此反覆。

嗟尔君子,无恒安处。靖共尔位,正直是与。神之听之,式穀以女。

嗟尔君子,无恒安息。靖共尔位,好是正直。神之听之,介尔景福。

!!小雅 谷风之什 鼓钟

鼓钟将将,淮水汤汤,忧心且伤。淑人君子,怀允不忘。

鼓钟喈喈,淮水湝々,忧心且悲。淑人君子,其德不回。

鼓钟伐鼛,淮有三洲,忧心且妯。淑人君子,其德不犹。

鼓钟钦钦,鼓瑟鼓琴,笙磬同音。以雅以南,以龠不僣。

!!小雅 谷风之什 楚茨

楚楚者茨,言抽其棘,自昔何为?我蓺黍稷。我黍与与,我稷翼翼。我仓既盈,我庾维亿。以为酒食,以享以祀,以妥以侑,以介景福。

济济跄跄,絜尔牛羊,以往烝尝。或剥或亨,或肆或将。祝祭于祊,祀事孔明。先祖是皇,神保是飨。孝孙有庆,报以介福,万寿无疆!

执爨,为俎孔硕,或燔或炙。君妇莫莫,为豆孔庶。为宾为客,献酬交错。礼仪卒度,笑语卒获。神保是格,报以介福,万寿攸酢!

我孔矣,式礼莫愆。工祝致告,徂赉孝孙。苾芬孝祀,神嗜饮食。卜尔百福,如几如式。既齐既稷,既匡既敕。永锡尔极,时万时亿!

礼仪既备,钟鼓既戒,孝孙徂位,工祝致告,神具醉止,皇尸载起。鼓钟送尸,神保聿归。诸宰君妇,废彻不迟。诸父兄弟,备言燕私。

乐具入奏,以绥后禄。尔肴既将,莫怨具庆。既醉既饱,小大稽首。神嗜饮食,使君寿考。孔惠孔时,维其尽之。子子孙孙,勿替引之!

!!小雅 谷风之什 信南山

信彼南山,维禹甸之。畇々原隰,曾孙田之。我疆我理,南东其亩。

上天同云。雨雪雰雰,益之以霡霂。既优既渥,既沾既足。生我百谷。

疆埸翼翼,黍稷彧彧。曾孙之穑,以为酒食。畀我尸宾,寿考万年。

中田有庐,疆埸有瓜。是剥是菹,献之皇祖。曾孙寿考,受天之祜。

祭以清酒,从以骍牡,享于祖考。执其鸾刀,以启其毛,取其血膋。

是烝是享,苾苾芬芬。祀事孔明,先祖是皇。报以介福。万寿无疆。

!!小雅 甫田之什 甫田

倬彼甫田,岁取十千。我取其陈,食我农人。自古有年。今适南亩,或耘或耔。黍稷薿薿,攸介攸止,烝我髦士。

以我齐明,与我犠羊,以社以方。我田既臧,农夫之庆。琴瑟击鼓,以御田祖。以祈甘雨,以介我稷黍,以穀我士女。

曾孙来止,以其妇子。馌彼南亩,田畯至喜。攘其左右,尝其旨否。禾易长亩,终善且有。曾孙不怒,农夫克敏。

曾孙之稼,如茨如梁。曾孙之庾,如坻如京。乃求千斯仓,乃求万斯箱。黍稷稻粱,农夫之庆。报以介福,万寿无疆。

!!小雅 甫田之什 大田

大田多稼,既种既戒,既备乃事。以我覃耜,俶载南亩。播厥百谷,既庭且硕,曾孙是若。

既方既皂,既坚既好,不稂不莠。去其螟螣,及其蟊贼,无害我田稚。田祖有神,秉畀炎火。

有渰萋萋,兴雨祈々。雨我公田,遂及我私。彼有不获稚,此有不敛穧,彼有遗秉,此有滞穗,伊寡妇之利。

曾孙来止,以其妇子。馌彼南亩,田畯至喜。来方禋祀,以其骍黑,与其黍稷。以享以祀,以介景福。

!!小雅 甫田之什 瞻彼洛矣

瞻彼洛矣,维水泱泱。君子至止,福禄如茨。韎韐有奭,以作六师。

瞻彼洛矣,维水泱泱。君子至止,鞸琫有珌。君子万年,保其家室。

瞻彼洛矣,维水泱泱。君子至止,福禄既同。君子万年,保其家邦。

!!小雅 甫田之什 裳裳者华

裳裳者华,其叶湑兮。我覯之子,我心写兮。我心写兮,是以有誉处兮。

裳裳者华,芸其黄矣。我覯之子,维其有章矣。维其有章矣,是以有庆矣。

裳裳者华,或黄或白。我覯之子,乘其四骆。乘其四骆,六辔沃若。

左之左之,君子宜之。右之右之,君子有之。维其有之,是以似之。

!!小雅 甫田之什 桑扈

交交桑扈,有莺其羽。君子乐胥,受天之祜。

交交桑扈,有莺其领。君子乐胥,万邦之屏。

之屏之翰,百辟为宪。不戢不难,受福不那。

兕觥其觩,旨酒思柔。彼交匪敖,万福来求。

!!小雅 甫田之什 鸳鸯

鸳鸯于飞,毕之罗之。君子万年,福禄宜之。

鸳鸯在梁,戢其左翼。君子万年,宜其遐福。

乘马在厩,摧之秣之。君子万年,福禄艾之。

乘马在厩,秣之摧之。君子万年,福禄绥之。

!!小雅 甫田之什 頍弁

有頍者弁,实维伊何?尔酒既旨,尔肴既嘉。岂伊异人?兄弟匪他。茑与女萝,施于松柏。未见君子,忧心奕奕;既见君子,庶几说怿。

有頍者弁,实维何期?尔酒既旨,尔肴既时。岂伊异人?兄弟具来。茑与女萝,施于松上。未见君子,忧心怲々;既见君子,庶几有臧。

有頍者弁,实维在首。尔酒既旨,尔肴既阜。岂伊异人?兄弟甥舅。如彼雨雪,先集维霰。死丧无日,无几相见。乐酒今夕,君子维宴。

!!小雅 甫田之什 车舝

间关车之舝兮,思娈季女逝兮。匪饥匪渴,德音来括。虽无好友?式燕且喜。

依彼平林,有集维鷮。辰彼硕女,令德来教。式燕且誉,好尔无射。

虽无旨酒?式饮庶几。虽无嘉肴?式食庶几。虽无德与女?式歌且舞?

陟彼高冈,析其柞薪。析其柞薪,其叶湑兮。鲜我覯尔,我心写兮。

高山仰止,景行行止。四牡騑騑,六辔如琴。覯尔新婚,以慰我心。

!!小雅 甫田之什 青蝇

营营青蝇,止于樊。岂弟君子,无信谗言。

营营青蝇,止于棘。谗人罔极,交乱四国。

营营青蝇,止于榛。谗人罔极,构我二人。

!!小雅 甫田之什 宾之初筵

宾之初筵,左右秩秩。笾豆有楚,殽核维旅。酒既和旨,饮酒孔偕。钟鼓既设,举酬逸逸。大侯既抗,弓矢斯张。射夫既同,献尔发功。发彼有的,以祈尔爵。

籥舞笙鼓,乐既和奏。烝衎烈祖,以洽百礼。百礼既至,有壬有林。锡尔纯嘏,子孙其湛。其湛曰乐,各奏尔能。宾载手仇,室人入又。酌彼康爵,以奏尔时。

宾之初筵,温温其恭。其未醉止,威仪反反。曰既醉止,威仪幡幡。舍其坐迁,屡舞仙仙。其未醉止,威仪抑抑。曰既醉止,威仪怭々。是曰既醉,不知其秩。

宾既醉止,载号载呶。乱我笾豆,屡舞僛々。是曰既醉,不知其邮。侧弁之俄,屡舞傞傞。既醉而出,并受其福。醉而不出,是谓伐德。饮酒孔嘉,维其令仪。

凡此饮酒,或醉或否。既立之监,或佐之史。彼醉不臧,不醉反耻。式勿从谓,无俾大怠。匪言勿言,匪由勿语。由醉之言,俾出童羖。三爵不识,矧敢多又。

!!小雅 鱼藻之什 鱼藻

鱼在在藻,有颁其首。王在在镐,岂乐饮酒。

鱼在在藻,有莘其尾。王在在镐,饮酒乐岂。

鱼在在藻,依于其蒲。王在在镐,有那其居。

!!小雅 鱼藻之什 角弓

骍骍角弓,翩其反矣。兄弟婚姻,无胥远矣。

尔之远矣,民胥然矣。尔之教矣,民胥效矣。

此令兄弟,绰绰有裕。不令兄弟,交相为愈。

民之无良,相怨一方。受爵不让,至于已斯亡。

老马反为驹,不顾其后。如食宜饇,如酌孔取。

毋教猱升木,如涂涂附。君子有徽猷,小人与属。

雨雪瀌々,见晛曰消。莫肯下遗,式居娄骄。

雨雪浮浮,见晛曰流。如蛮如髦,我是用忧。

!!小雅 鱼藻之什 采菽

采菽采菽,筐之筥之。君子来朝,何锡予之?虽无予之?路车乘马。又何予之?玄衮及黼。

觱沸槛泉,言采其芹。君子来朝,言观其旂。其旂淠淠,鸾声嘒嘒。载骖载驷,君子所届。

赤芾在股,邪幅在下。彼交匪纾,天子所予。乐只君子,天子命之。乐只君子,福禄申之。

维柞之枝,其叶蓬蓬。乐只君子,殿天子之邦。乐只君子,万福攸同。平平左右,亦是率从。

汎汎杨舟,绋纚维之。乐只君子,天子葵之。乐只君子,福禄膍之。优哉游哉,亦是戾矣。

!!小雅 鱼藻之什 菀柳

有菀者柳,不尚息焉。上帝甚蹈,无自暱焉。俾予靖之,后予极焉。

有菀者柳,不尚愒焉。上帝甚蹈,无自瘵焉。俾予靖之,后予迈焉。

有鸟高飞,亦傅于天。彼人之心,于何其臻。曷予靖之,居以凶矜。

!!小雅 鱼藻之什 都人士

彼都人士,狐裘黄黄。其容不改,出言有章。行归于周,万民所望。

彼都人士,台笠缁撮。彼君子女,绸直如发。我不见兮,我心不说。

彼都人士,充耳琇实。彼君子女,谓之尹吉。我不见兮,我心苑结。

彼都人士,垂带而厉。彼君子女,卷发如虿。我不见兮,言从之迈。

匪伊垂之,带则有馀。匪伊卷之,发则有旟。我不见兮,云何盱矣。

!!小雅 鱼藻之什 采绿

终朝采绿,不盈一匊。予发曲局,薄言归沐。

终朝采蓝,不盈一襜。五日为期,六日不詹。

之子于狩,言韔其弓。之子于钓,言纶之绳。

其钓维何?维鲂及鱮。维鲂及鱮,薄言观者。

!!小雅 鱼藻之什 黍苗

芃芃黍苗,阴雨膏之。悠悠南行,召伯劳之。

我任我辇,我车我牛。我行既集,盖云归哉。

我徒我御,我师我旅。我行既集,盖云归处。

肃肃谢功,召伯营之。烈烈征师,召伯成之。

原隰既平,泉流既清。召伯有成,王心则宁。

!!小雅 鱼藻之什 隰桑

隰桑有阿,其叶有难。既见君子,其乐如何。

隰桑有阿,其叶有沃。既见君子,云何不乐。

隰桑有阿,其叶有幽。既见君子,德音孔胶。

心乎爱矣,遐不谓矣?中心藏之,何日忘之!

!!小雅 鱼藻之什 白华

白华菅兮,白茅束兮。之子之远,俾我独兮。

英英白云,露彼菅茅。天步艰难,之子不犹。

滮池北流,浸彼稻田。啸歌伤怀,念彼硕人。

樵彼桑薪,卬烘于煁。维彼硕人,实劳我心。

鼓钟于宫,声闻于外。念子懆々,视我迈迈。

有鹙在梁,有鹤在林。维彼硕人,实劳我心。

鸳鸯在梁,戢其左翼。之子无良,二三其德。

有扁斯石,履之卑兮。之子之远,俾我疷兮。

!!小雅 鱼藻之什 绵蛮

绵蛮黄鸟,止于丘阿。道之云远,我劳如何。饮之食之,教之诲之。命彼后车,谓之载之。

绵蛮黄鸟,止于丘隅。岂敢惮行,畏不能趋。饮之食之。教之诲之。命彼后车,谓之载之。

绵蛮黄鸟,止于丘侧。岂敢惮行,畏不能极。饮之食之,教之诲之。命彼后车,谓之载之。

!!小雅 鱼藻之什 瓠叶

幡幡瓠叶,采之亨之。君子有酒,酌言尝之。

有兔斯首,炮之燔之。君子有酒,酌言献之。

有兔斯首,燔之炙之。君子有酒,酌言酢之。

有兔斯首,燔之炮之。君子有酒,酌言酬之。

!!小雅 鱼藻之什 渐渐之石

渐渐之石,维其高矣。山川悠远,维其劳矣。武人东征,不皇朝矣。

渐渐之石,维其卒矣。山川悠远,曷其没矣?武人东征,不皇出矣。

有豕白蹢,烝涉波矣。月离于毕,俾滂沱矣。武人东征,不皇他矣。

!!小雅 鱼藻之什 苕之华

苕之华,芸其黄矣。心之忧矣,维其伤矣!

苕之华,其叶青青。知我如此,不如无生!

牂羊坟首,三星在罶。人可以食,鲜可以饱!

!!小雅 鱼藻之什 何草不黄

何草不黄?何日不行?何人不将?经营四方。

何草不玄?何人不矜?哀我征夫,独为匪民。

匪兕匪虎,率彼旷野。哀我征夫,朝夕不暇。

有芃者狐,率彼幽草。有栈之车,行彼周道。
  序卦

  

  有天地,然后万物生焉。盈天地之间者唯万物,故受之以《屯》。屯者,盈也。屯者,物之始生也。物生必蒙,故受之以《蒙》。蒙者,蒙也,物之稚也。

  物稚不可不养也,故受之以《需》。需者,饮食之道也。饮食必有讼,故受之以《讼》。讼必有众起,故受之以《师》。师者,众也。众必有所比,故受之以《比》。比者,比也。比必有所畜,故受之以《小畜》。物畜然后有礼,故受之以《履》。履而泰,然后安,故受之以《泰》。泰者,通也。物不可以终通,故受之以《否》。物不可以终否,故受之以《同人》。与人同者,物必归焉,故受之以《大有》。有大者,不可以盈,故受之以《谦》。有大而能谦必豫,故受之以《豫》。豫必有随,故受之以《随》。以喜随人者必有事,故受之以《蛊》。

  蛊者,事也。有事而后可大,故受之以《临》。临者,大也。物大然后可观,故受之以《观》。可观而后有所合,故受之以《噬嗑》。嗑者,合也。物不可以苟合而已,故受之以《贲》。贲者,饰也。致饰然后亨则尽矣,故受之以《剥》。

  剥者,剥也。物不可以终尽剥,穷上反下,故受之以《复》。复则不妄矣,故受之以《无妄》。有无妄,物然后可畜,故受之以《大畜》。物畜然后可养,故受之以《颐》。颐者,养也。不养则不可动,故受之以《大过》。物不可以终过,故受之以《坎》。坎者,陷也。陷必有所丽,故受之以《离》。离者,丽也。

  有天地然后有万物,有万物然后有男女,有男女然后有夫妇,有夫妇然后有父子,有父子然后有君臣,有君臣然后有上下,有上下然后礼义有所错。夫妇之道不可以不久也,故受之以《恒》。恒者,久也。物不可以久居其所,故受之以《遯》。遯者,退也。物不可以终遯,故受之以《大壮》。物不可以终壮,故受之以《晋》。晋者,进也。进必有所伤,故受之以《明夷》。夷者,伤也。伤于外者必反于家,故受之以《家人》。家道穷必乖,故受之以《睽》。睽者,乖也。

  乖必有难,故受之以《蹇》。蹇者,难也。物不可以终难,故受之以《解》。解者,缓也。缓必有所失,故受之以《损》。损而不已必益,故受之以《益》。益而不已必决,故受之以《夬》。夬者,决也。决必有遇,故受之以《姤》。

  姤者,遇也。物相遇而后聚,故受之以《萃》。萃者,聚也。聚而上者谓之升,故受之以《升》。升而不已必困,故受之以《困》。困乎上者必反下,故受之以《井》。井道不可不革,故受之以《革》。革物者莫若鼎,故受之以《鼎》。主器者莫若长子,故受之以《震》。震者,动也。物不可以终动,止之,故受之以《艮》。艮者,止也。物不可以终止,故受之以《渐》。渐者,进也。进必有所归,故受之以《归妹》。得其所归者必大,故受之以《丰》。丰者,大也。穷大者必失其居,故受之以《旅》。旅而无所容,故受之以《巽》。巽者,入也。入而后说之,故受之以《兑》。兑者,说也。说而后散之,故受之以《涣》。涣者,离也。物不可以终离,故受之以《节》。节而信之,故受之以《中孚》。有其信者必行之,故受之以《小过》。有过物者必济,故受之以《既济》。物不可穷也,故受之以《未济》,终焉。

  
  宣公(元年~十八年)

  

  !宣公元年

  【经】元年春王正月,公即位。公子遂如齐逆女。三月,遂以夫人妇姜至自齐。夏,季孙行父如齐。晋放其大夫胥甲父于卫。公会齐侯于平州。公子遂如齐。

  六月,齐人取济西田。秋,邾子来朝。楚子、郑人侵陈,遂侵宋。晋赵盾帅师救陈。宋公、陈侯、卫侯、曹伯会晋师于棐林,伐郑。冬,晋赵穿帅师侵崇。晋人、宋人伐郑。

  

  【传】元年春,王正月,公子遂如齐逆女,尊君命也。三月,遂以夫人妇姜至自齐,尊夫人也。

  夏,季文子如齐,纳赂以请会。

  晋人讨不用命者,放胥甲父于卫,而立胥克。先辛奔齐。

  会于平州,以定公位。东门襄仲如齐拜成。

  六月,齐人取济西之田,为立公故,以赂齐也。

  宋人之弑昭公也,晋荀林父以诸侯之师伐宋,宋及晋平,宋文公受盟于晋。

  又会诸侯于扈,将为鲁讨齐,皆取赂而还。郑穆公曰:“晋不足与也。”遂受盟于楚。陈共公之卒,楚人不礼焉。陈灵公受盟于晋。

  秋,楚子侵陈,遂侵宋。晋赵盾帅师救陈、宋。会于棐林,以伐郑也。楚蒍贾救郑,遇于北林。囚晋解扬,晋人乃还。

  晋欲求成于秦,赵穿曰:“我侵崇,秦急崇,必救之。吾以求成焉。”冬,赵穿侵崇,秦弗与成。

  晋人伐郑,以报北林之役。于是,晋侯侈,赵宣子为政,骤谏而不入,故不竞于楚。

  

  

  !宣公二年

  【经】二年春王二月壬子,宋华元帅师及郑公子归生帅师,战于大棘,宋师败绩,获宋华元。秦师伐晋。夏,晋人、宋人、卫人、陈人侵郑。秋九月乙丑,晋赵盾弑其君夷皋。冬十月乙亥,天王崩。

  

  【传】二年春,郑公子归生受命于楚,伐宋。宋华元、乐吕御之。二月壬子,战于大棘,宋师败绩,囚华元,获乐吕,及甲车四百六十乘,俘二百五十人,馘百人。狂狡辂郑人,郑人入于井,倒戟而出之,获狂狡。君子曰:“失礼违命,宜其为禽也。戎,昭果毅以听之之谓礼,杀敌为果,致果为毅。易之,戮也。”

  将战,华元杀羊食士,其御羊斟不与。及战,曰:“畴昔之羊,子为政,今日之事,我为政。”与入郑师,故败。君子谓:“羊斟非人也,以其私憾,败国殄民。于是刑孰大焉。《诗》所谓‘人之无良’者,其羊斟之谓乎,残民以逞。”

  宋人以兵车百乘、文马百驷以赎华元于郑。半入,华元逃归,立于门外,告而入。见叔佯,曰:“子之马然也。”对曰:“非马也,其人也。”既合而来奔。

  宋城,华元为植,巡功。城者讴曰:“睅其目,皤其腹,弃甲而复。于思于思,弃甲复来。”使其骖乘谓之曰:“牛则有皮,犀兕尚多,弃甲则那?”役人曰:“从其有皮,丹漆若何?”华元曰:“去之,夫其口众我寡。”

  秦师伐晋,以报崇也,遂围焦。夏,晋赵盾救焦,遂自阴地,及诸侯之师侵郑,以报大棘之役。楚斗椒救郑,曰:“能欲诸侯而恶其难乎?”遂次于郑以待晋师。赵盾曰:“彼宗竞于楚,殆将毙矣。姑益其疾。”乃去之。

  晋灵公不君:厚敛以雕墙;从台上弹人,而观其辟丸也;宰夫肠熊蹯不熟,杀之,置诸畚,使妇人载以过朝。赵盾、士季见其手,问其故,而患之。将谏,士季曰:“谏而不入,则莫之继也。会请先,不入则子继之。”三进,及溜,而后视之。曰:“吾知所过矣,将改之。”稽首而对曰:“人谁无过?过而能改,善莫大焉。《诗》曰:‘靡不有初,鲜克有终。’夫如是,则能补过者鲜矣。君能有终,则社稷之固也,岂唯群臣赖之。又曰:‘衮职有阙,惟仲山甫补之。’能补过也。君能补过,兖不废矣。”犹不改。宣子骤谏,公患之,使鉏麑贼之。

  晨往,寝门辟矣,盛服将朝,尚早,坐而假寐。麑退,叹而言曰:“不忘恭敬,民之主也。贼民之主,不忠。弃君之命,不信。有一于此,不如死也。”触槐而死。

  秋九月,晋侯饮赵盾酒,伏甲将攻之。其右提弥明知之,趋登曰:“臣侍君宴,过三爵,非礼也。”遂扶以下,公嗾夫獒焉。明搏而杀之。盾曰:“弃人用犬,虽猛何为。”斗且出,提弥明死之。

  初,宣子田于首山,舍于翳桑,见灵辄饿,问其病。曰:“不食三日矣。”

  食之,舍其半。问之,曰:“宦三年矣,未知母之存否,今近焉,请以遗之。”

  使尽之,而为之箪食与肉,置诸橐以与之。既而与为公介,倒戟以御公徒,而免之。问何故。对曰:“翳桑之饿人也。”问其名居,不告而退,遂自亡也。

  乙丑,赵穿攻灵公于桃园。宣子未出山而复。大史书曰:“赵盾弑其君。”

  以示于朝。宣子曰:“不然。”对曰:“子为正卿,亡不越竟,反不讨贼,非子而谁?”宣子曰:“乌呼,‘我之怀矣,自诒伊戚’,其我之谓矣!”孔子曰:“董孤,古之良史也,书法不隐。赵宣子,古之良大夫也,为法受恶。惜也,越竟乃免。”

  宣子使赵穿逆公子黑臀于周而立之。壬申,朝于武宫。

  初,丽姬之乱,诅无畜群公子,自是晋无公族。及成公即位,乃宦卿之适子而为之田,以为公族,又宦其余子亦为余子,其庶子为公行。晋于是有公族、余子、公行。赵盾请以括为公族,曰:“君姬氏之爱子也。微君姬氏,则臣狄人也。”

  公许之。

  冬,赵盾为旄车之族。使屏季以其故族为公族大夫。

  

  

  !宣公三年

  【经】三年春王正月,郊牛之口伤,改卜牛。牛死,乃不郊。犹三望。葬匡王。楚子伐陆浑之戎。夏,楚人侵郑。秋,赤狄侵齐。宋师围曹。冬十月丙戌。

  郑伯兰卒。葬郑穆公。

  

  【传】三年春,不郊而望,皆非礼也。望,郊之属也。不郊亦无望,可也。

  晋侯伐郑,及郔。郑及晋平,士会入盟。

  楚子伐陆浑之戎,遂至于洛,观兵于周疆。定王使王孙满劳楚子。楚子问鼎之大小轻重焉。对曰:“在德不在鼎。昔夏之方有德也,远方图物,贡金九牧,铸鼎象物,百物而为之备,使民知神、奸。故民入川泽山林,不逢不若。螭魅罔两,莫能逢之,用能协于上下以承天休。桀有昏德,鼎迁于商,载祀六百。商纣暴虐,鼎迁于周。德之休明,虽小,重也。其奸回昏乱,虽大,轻也。天祚明德,有所厎止。成王定鼎于郏鄏,卜世三十,卜年七百,天所命也。周德虽衰,天命未改,鼎之轻重,未可问也。”

  夏,楚人侵郑,郑即晋故也。

  宋文公即位三年,杀母弟须及昭公子。武氏之谋也,使戴、桓之族攻武氏于司马子伯之馆。尽逐武、穆之族。武、穆之族以曹师伐宋。秋,宋师围曹,报武氏之乱也。

  冬,郑穆公卒。

  初,郑文公有贱妾曰燕姞,梦天使与己兰,曰:“余为伯鯈。余,而祖也,以是为而子。以兰有国香,人服媚之如是。”既而文公见之,与之兰而御之。辞曰:“妾不才,幸而有子,将不信,敢征兰乎。”公曰:“诺。”生穆公,名之曰兰。

  文公报郑子之妃,曰陈妫,生子华、子臧。子臧得罪而出。诱子华而杀之南里,使盗杀子臧于陈、宋之间。又娶于江,生公子士。朝于楚,楚人鸩之,及叶而死。又娶于苏,生子瑕、子俞弥。俞弥早卒。泄驾恶瑕,文公亦恶之,故不立也。公逐群公子,公子兰奔晋,从晋文公伐郑。石癸曰:“吾闻姬、姞耦,其子孙必蕃。姞,吉人也,后稷之元妃也,今公子兰,姞甥也。天或启之,必将为君,其后必蕃,先纳之可以亢宠。”与孔将锄、侯宣多纳之,盟于大宫而立之。以与晋平。

  穆公有疾,曰:“兰死,吾其死乎,吾所以生也。”刈兰而卒。

  

  

  !宣公四年

  【经】四年春王正月,公及齐侯平莒及郯。莒人不肯。公伐莒,取向。秦伯稻卒。夏六月乙酉,郑公子归生弑其君夷。赤狄侵齐。秋,公如齐。公至自齐。

  冬,楚子伐郑。

  

  【传】四年春,公及齐侯平莒及郯,莒人不肯。公伐莒,取向,非礼也。平国以礼不以乱,伐而不治,乱也。以乱平乱,何治之有?无治,何以行礼?楚人献鼋于郑灵公。公子宋与子家将见。子公之食指动,以示子家,曰:“他日我如此,必尝异味。”及入,宰夫将解鼋,相视而笑。公问之,子家以告,及食大夫鼋,召子公而弗与也。子公怒,染指于鼎,尝之而出。公怒,欲杀子公。

  子公与子家谋先。子家曰:“畜老,犹惮杀之,而况君乎?”反谮子家,子家惧而从之。夏,弑灵公。书曰:“郑公子归生弑其君夷。”权不足也。君子曰:“仁而不武,无能达也。”凡弑君,称君,君无道也;称臣,臣之罪也。

  郑人立子良,辞曰:“以贤则去疾不足,以顺则公子坚长。”乃立襄公。襄公将去穆氏,而舍子良。子良不可,曰:“穆氏宜存,则固愿也。若将亡之,则亦皆亡,去疾何为?”乃舍之,皆为大夫。

  初,楚司马子良生子越椒,子文曰:“必杀之。是子也,熊虎之状,而豺狼之声,弗杀,必灭若敖氏矣。谚曰:‘狼子野心。’是乃狼也,其可畜乎?”子良不可。子文以为大戚,及将死,聚其族,曰:“椒也知政,乃速行矣,无及于难。”且泣曰:“鬼犹求食,若敖氏之鬼,不其馁而?”及令尹子文卒,斗般为令尹,子越为司马。蒍贾为工正,谮子扬而杀之,子越为令尹,己为司马。子越又恶之,乃以若敖氏之族圄伯嬴于轑阳而杀之,遂处烝野,将攻王。王以三王之子为质焉,弗受,师于漳澨。秋七月戊戌,楚子与若敖氏战于皋浒。伯棼射王,汰辀,及鼓跗,著于丁宁。又射汰辀,以贯笠毂。师惧,退。王使巡师曰:“吾先君文王克息,获三矢焉。伯棼窃其二,尽于是矣。”鼓而进之,遂灭若敖氏。

  初,若敖娶于云阝,生斗伯比。若敖卒,从其母畜于云阝,淫于云阝子之女,生子文焉。云阝夫人使弃诸梦中,虎乳之。云阝子田,见之,惧而归,以告,遂使收之。楚人谓乳谷,谓虎於菟,故命之曰斗谷於菟。以其女妻伯比,实为令尹子文。其孙箴尹克黄使于齐,还,及宋,闻乱。其人曰,“不可以入矣。”箴尹曰:“弃君之命,独谁受之?君,天也,天可逃乎?”遂归,复命而自拘于司败。

  王思子文之治楚国也,曰:“子文无后,何以劝善?”使复其所,改命曰生。

  冬,楚子伐郑,郑未服也。

  

  

  !宣公五年

  【经】五年春,公如齐。夏,公至自齐。秋九月,齐高固来逆叔姬。叔孙得臣卒。冬,齐高固及子叔姬来。楚人伐郑。

  

  【传】五年春,公如齐,高固使齐侯止公,请叔姬焉。

  夏,公至自齐,书,过也。

  秋九月,齐高固来逆女,自为也。故书曰:“逆叔姬。”即自逆也。

  冬,来,反马也。

  楚子伐郑,陈及楚平。晋荀林父救郑,伐陈。

  

  

  !宣公六年

  【经】六年春,晋赵盾、卫孙免侵陈。夏四月。秋八月,螽。冬十月。

  

  【传】六年春,晋、卫侵陈,陈即楚故也。

  夏,定王使子服求后于齐。

  秋,赤狄伐晋。围怀,及邢丘。晋侯欲伐之。中行桓子曰:“使疾其民,以盈其贯,将可殪也。《周书》曰:‘殪戎殷。’此类之谓也。”

  冬,召桓公逆王后于齐。

  楚人伐郑,取成而还。

  郑公子曼满与王子伯廖语,欲为卿。伯廖告人曰:“无德而贪,其在《周易》《丰》ⅲⅵ之《离》ⅵⅵ,弗过之矣。”间一岁,郑人杀之。

  

  

  !宣公七年

  【经】七年春,卫侯使孙良夫来盟。夏,公会齐侯伐莱。秋,公至自伐莱。

  大旱。冬,公会晋侯、宋公、卫侯、郑伯、曹伯于黑壤。

  

  【传】七年春,卫孙桓子来盟,始通,且谋会晋也。

  夏,公会齐侯伐莱,不与谋也。凡师出,与谋曰及,不与某曰会。

  赤狄侵晋,取向阴之禾。

  郑及晋平,公子宋之谋也,故相郑伯以会。冬,盟于黑壤,王叔桓公临之,以谋不睦。

  晋侯之立也,公不朝焉,又不使大夫聘,晋人止公于会,盟于黄父。公不与盟,以赂免。故黑壤之盟不书,讳之也。

  

  

  !宣公八年

  【经】八年春,公至自会。夏六月,公子遂如齐,至黄乃复。辛巳,有事于大庙,仲遂卒于垂。壬午,犹绎。万入,去籥。戊子,夫人赢氏薨。晋师、白狄伐秦。楚人灭舒蓼。秋七月甲子,日有食之,既。冬十月己丑,葬我小君敬赢。

  雨,不克葬。庚寅,日中而克葬。城平阳。楚师伐陈。

  

  【传】八年春,白狄及晋平。夏,会晋伐秦。晋人获秦谍,杀诸绛市,六日而苏。

  有事于大庙,襄仲卒而绎,非礼也。

  楚为众舒叛,故伐舒蓼,灭之。楚子疆之,及滑汭。盟吴、越而还。

  晋胥克有蛊疾,郤缺为政。秋,废胥克。使赵朔佐下军。

  冬,葬敬赢。旱,无麻,始用葛茀。雨,不克葬,礼也。礼,卜葬,先远日,辟不怀也。

  城平阳,书,时也。

  陈及晋平。楚师伐陈,取成而还。

  

  

  !宣公九年

  【经】九年春王正月,公如齐。公至自齐。夏,仲孙蔑如京师。齐侯伐莱。

  秋,取根牟。八月,滕子卒。九月,晋侯、宋公、卫侯、郑伯、曹伯会于扈。晋荀林父帅师伐陈。辛酉,晋侯黑臀卒于扈。冬十月癸酉,卫侯郑卒。宋人围滕。

  楚子伐郑。晋郤缺帅师救郑。陈杀其大夫洩冶。

  

  【传】九年春,王使来征聘。夏,孟献于聘于周,王以为有礼,厚贿之。

  秋,取根牟,言易也。

  滕昭公卒。

  会于扈,讨不睦也。陈侯不会。晋荀林父以诸侯之师伐陈。晋侯卒于扈,乃还。

  冬,宋人围滕,因其丧也。

  陈灵公与孔宁、仪行父通于夏姬,皆衷其礻日服以戏于朝。泄冶谏曰:“公卿宣淫,民无效焉,且闻不令,君其纳之。”公曰:“吾能改矣。”公告二子,二子请杀之,公弗禁,遂杀泄冶。孔子曰:“《诗》云:‘民之多辟,无自立辟。’其泄冶之谓乎。”

  楚子为厉之役故,伐郑。

  晋郤缺救郑,郑伯败楚师于柳棼。国人皆喜,唯子良忧曰:“是国之灾也,吾死无日矣。”

  

  

  !宣公十年

  【经】十年春,公如齐。公至自齐。齐人归我济西田。夏四月丙辰,日有食之。己巳,齐侯元卒。齐崔氏出奔卫。公如齐。五月,公至自齐。癸巳,陈夏征舒弑其君平国。六月,宋师伐滕。公孙归父如齐,葬齐惠公。晋人、宋人、卫人、曹人伐郑。秋,天王使王季子来聘。公孙归父帅师伐邾,取绎。大水。季孙行父如齐。冬,公孙归父如齐。齐侯使国佐来聘。饥。楚子伐郑。

  

  【传】十年春,公如齐。齐侯以我服故,归济西之田。

  夏,齐惠公卒。崔杼有宠于惠公,高、国畏其逼也,公卒而逐之,奔卫。书曰“崔氏”,非其罪也,且告以族,不以名。凡诸侯之大夫违,告于诸侯曰:“某氏之守臣某,失守宗庙,敢告。”所有玉帛之使者,则告,不然,则否。

  公如齐奔丧。

  陈灵公与孔宁、仪行父饮酒于夏氏。公谓行父曰:“征舒似女。”对曰:“亦似君。”征舒病之。公出,自其厩射而杀之。二子奔楚。

  滕人恃晋而不事宋,六月,宋师伐滕。

  郑及楚平。诸侯之师伐郑,取成而还。

  秋,刘康公来报聘。

  师伐邾,取绎。

  季文子初聘于齐。

  冬,子家如齐,伐邾故也。

  国武子来报聘。

  楚子伐郑。晋士会救郑,逐楚师于颍北。诸侯之师戍郑。郑子家卒。郑人讨幽公之乱,斫子家之棺而逐其族。改葬幽公,谥之曰灵。

  

  

  !宣公十一年

  【经】十有一年春王正月。夏,楚子、陈侯、郑伯盟于辰陵。公孙归父会齐人伐莒。秋,晋侯会狄于欑函。冬十月,楚人杀陈夏征舒。丁亥,楚子入陈。

  纳公孙宁、仪行父于陈。

  

  【传】十一年春,楚子伐郑,及栎。子良曰:“晋、楚不务德而兵争,与其来者可也。晋、楚无信,我焉得有信。”乃从楚。夏,楚盟于辰陵,陈、郑服也。

  楚左尹子重侵宋,王待诸郔。令尹蒍艾猎城沂,使封人虑事,以授司徒。

  量功命日,分财用,平板干,称畚筑,程土物,议远迩,略基趾,具糇粮,度有司,事三旬而成,不愆于素。

  晋郤成子求成于众狄,众狄疾赤狄之役,遂服于晋。秋,会于欑函,众狄服也。是行也。诸大夫欲召狄。郤成子曰:“吾闻之,非德,莫如勤,非勤,何以求人?能勤有继,其从之也。《诗》曰:‘文王既勤止。’文王犹勤,况寡德乎?”冬,楚子为陈夏氏乱故,伐陈。谓陈人无动,将讨于少西氏。遂入陈,杀夏征舒,轘诸栗门,因县陈。陈侯在晋。

  申叔时使于齐,反,复命而退。王使让之曰:“夏征舒为不道,弑其君,寡人以诸侯讨而戮之,诸侯、县公皆庆寡人,女独不庆寡人,何故”对曰:“犹可辞乎?”王曰:“可哉”曰:夏征舒弑其君,其罪大矣,讨而戮之,君之义也。

  抑人亦有言曰:‘牵牛以蹊人之田,而夺之牛。’牵牛以蹊者,信有罪矣;而夺之牛,罚已重矣。诸侯之从也,曰讨有罪也。今县陈,贪其富也。以讨召诸侯,而以贪归之,无乃不可乎?王曰:“善哉!”吾未之闻也。反之,可乎?对曰:“可哉!吾侪小人所谓取诸其怀而与之也。”乃复封陈,乡取一人焉以归,谓之夏州。故书曰:“楚子入陈,纳公孙宁、仪行父于陈。”书有礼也。

  厉之役,郑伯逃归,自是楚未得志焉。郑既受盟于辰陵,又徼事于晋。

  

  

  !宣公十二年

  【经】十有二年春,葬陈灵公。楚子围郑。夏六月乙卯,晋荀林父帅师及楚子战于邲,晋师败绩。秋七月。冬十有二月戊寅,楚子灭萧。晋人、宋人、卫人、曹人同盟于清丘。宋师伐陈。卫人救陈。

  

  【传】十二年春,楚子围郑。旬有七日,郑人卜行成,不吉。卜临于大宫,且巷出车,吉。国人大临,守陴者皆哭。楚子退师,郑人修城,进复围之,三月克之。入自皇门,至于逵路。郑伯肉袒牵羊以逆,曰:“孤不天,不能事君,使君怀怒以及敝邑,孤之罪也。敢不唯命是听。其俘诸江南以实海滨,亦唯命。其翦以赐诸侯,使臣妾之,亦唯命。若惠顾前好,徼福于厉、宣、桓、武,不泯其社稷,使改事君,夷于九县,君之惠也,孤之愿之,非所敢望也。敢布腹心,君实图之。”左右曰:“不可许也,得国无赦。”王曰:“其君能下人,必能信用其民矣,庸可几乎?”退三十里而许之平。潘尫入盟,子良出质。

  夏六月,晋师救郑。荀林父将中军,先縠佐之。士会将上军,郤克佐之。赵朔将下军,栾书佐之。赵括、赵婴齐为中军大夫。巩朔、韩穿为上军大夫。荀首、赵同为下军大夫。韩厥为司马。及河,闻郑既及楚平,桓子欲还,曰:“无及于郑而剿民,焉用之?楚归而动,不后。”随武子曰:“善。会闻用师,观衅而动。

  德刑政事典礼不易,不可敌也,不为是征。楚军讨郑,怒其贰而哀其卑,叛而伐之,服而舍之,德刑成矣。伐叛,刑也;柔服,德也。二者立矣。昔岁入陈,今兹入郑,民不罢劳,君无怨讟,政有经矣。荆尸而举,商农工贾不败其业,而卒乘辑睦,事不奸矣。蒍敖为宰,择楚国之令典,军行,右辕,左追蓐,前茅虑无,中权,后劲,百官象物而动,军政不戒而备,能用典矣。其君之举也,内姓选于亲,外姓选于旧;举不失德,赏不失劳;老有加惠,旅有施舍;君子小人,物有服章,贵有常尊,贱有等威;礼不逆矣。德立,刑行,政成,事时,典从,礼顺,若之何敌之?见可而进,知难而退,军之善政也。兼弱攻昧,武之善经也。子姑整军而经武乎,犹有弱而昧者,何必楚?仲虺有言曰:‘取乱侮亡。’兼弱也。

  《汋》曰:‘於铄王师,遵养时晦。’耆昧也。《武》曰:‘无竞惟烈。’抚弱耆昧以务烈所,可也。”彘子曰:“不可。晋所以霸,师武臣力也。今失诸侯,不可谓力。有敌而不从,不可谓武。由我失霸,不如死。且成师以出,闻敌强而退,非夫也。命为军师,而卒以非夫,唯群子能,我弗为也。”以中军佐济。

  知庄子曰:“此师殆哉。《周易》有之,在《师》三之《临》三,曰:‘师出以律,否臧凶。’执事顺成为臧,逆为否,众散为弱,川壅为泽,有律以如己也,故曰律。否臧,且律竭也。盈而以竭,夭且不整,所以凶也。不行谓之《临》,有帅而不从,临孰甚焉!此之谓矣。果遇,必败,彘子尸之。虽免而归,必有大咎。”韩献子谓桓子曰:“彘子以偏师陷,子罪大矣。子为元师,师不用命,谁之罪也?失属亡师,为罪已重,不如进也。事之不捷,恶有所分,与其专罪,六人同之,不犹愈乎?”师遂济。

  楚子北,师次于郔,沈尹将中军,子重将左,子反将右,将饮马于河而归。

  闻晋师既济,王欲还,嬖人伍参欲战。令尹孙叔敖弗欲,曰:“昔岁入陈,今兹入郑,不无事矣。战而不捷,参之肉其足食乎?”参曰:“若事之捷,孙叔为无谋矣。不捷,参之肉将在晋军,可得食乎?”令尹南辕反旆,伍参言于王曰:“晋之从政者新,未能行令。其佐先縠刚愎不仁,未肯用命。其三帅者专行不获,听而无上,众谁适从?此行也,晋师必败。且君而逃臣,若社稷何?”王病之,告令尹,改乘辕而北之,次于管以待之。

  晋师在敖、鄗之间。郑皇戌使如晋师,曰:“郑之从楚,社稷之故也,未有贰心。楚师骤胜而骄,其师老矣,而不设备,子击之,郑师为承,楚师必败。”

  彘子曰:“败楚服郑,于此在矣,必许之。”栾武子曰:“楚自克庸以来,其君无日不讨国人而训之于民生之不易,祸至之无日,戒惧之不可以怠。在军,无日不讨军实而申儆之于胜之不可保,纣之百克,而卒无后。训以若敖、蚡冒,筚路蓝缕,以启山林。箴之曰:‘民生在勤,勤则不匮。’不可谓骄。先大夫子犯有言曰:‘师直为壮,曲为老。’我则不德,而徼怨于楚,我曲楚直,不可谓老。

  其君之戎,分为二广,广有一卒,卒偏之两。右广初驾,数及日中;左则受之,以至于昏。内官序当其夜,以待不虞,不可谓无备。子良,郑之良也。师叔,楚之崇也。师叔入盟,子良在楚,楚、郑亲矣。来劝我战,我克则来,不克遂往,以我卜也,郑不可从。”赵括、赵同曰:“率师以来,唯敌是求。克敌得属,又何矣?必从彘子。”知季曰:“原、屏,咎之徒也。”赵庄子曰:“栾伯善哉,实其言,必长晋国。”

  楚少宰如晋师,曰:“寡君少遭闵凶,不能文。闻二先君之出入此行也,将郑是训定,岂敢求罪于晋。二三子无淹久。”随季对曰:“昔平王命我先君文侯曰:‘与郑夹辅周室,毋废王命。’今郑不率,寡君使群臣问诸郑,岂敢辱候人?敢拜君命之辱。”彘子以为谄,使赵括从而更之,曰:“行人失辞。寡君使群臣迁大国之迹于郑,曰:‘无辟敌。’群臣无所逃命。”

  楚子又使求成于晋,晋人许之,盟有日矣。楚许伯御乐伯,摄叔为右,以致晋师,许伯曰:“吾闻致师者,御靡旌摩垒而还。”乐伯曰:“吾闻致师者,左射以菆,代御执辔,御下两马,掉鞅而还。”摄叔曰:“吾闻致师者,右入垒,折馘,执俘而还。”皆行其所闻而复。晋人逐之,左右角之。乐伯左射马而右射人,角不能进,矢一而已。麋兴于前,射麋丽龟。晋鲍癸当其后,使摄叔奉麋献焉,曰:“以岁之非时,献禽之未至,敢膳诸从者。”鲍癸止之,曰:“其左善射,其右有辞,君子也。”既免。

  晋魏锜求公族未得,而怒,欲败晋师。请致师,弗许。请使,许之。遂往,请战而还。楚潘党逐之,及荧泽,见六麋,射一麋以顾献曰:“子有军事,兽人无乃不给于鲜,敢献于从者。”叔党命去之。赵旃求卿未得,且怒于失楚之致师者。请挑战,弗许。请召盟,许之。与魏锜皆命而往。郤献子曰:“二憾往矣,弗备必败。”彘子曰:“郑人劝战,弗敢从也。楚人求成,弗能好也。师无成命,多备何为。”士季曰:“备之善。若二子怒楚,楚人乘我,丧师无日矣。不如备之。楚之无恶,除备而盟,何损于好?若以恶来,有备不败。且虽诸侯相见,军卫不彻,警也。”彘子不可。

  士季使巩朔、韩穿帅七覆于敖前,故上军不败。赵婴齐使其徒先具舟于河,故败而先济。

  潘党既逐魏锜,赵旃夜至于楚军,席于军门之外,使其徒入之。楚子为乘广三十乘,分为左右。右广鸡鸣而驾,日中而说。左则受之,日入而说。许偃御右广,养由基为右。彭名御左广,屈荡为右。乙卯,王乘左广以逐赵旃。赵旃弃车而走林,屈荡搏之,得其甲裳。晋人惧二子之怒楚师也,使軘车逆之。潘党望其尘,使骋而告曰:“晋师至矣。”楚人亦惧王之入晋军也,遂出陈。孙叔曰:“进之。宁我薄人,无人薄我。《诗》云:‘元戎十乘,以先启行。’先人也。

  《军志》曰:‘先人有夺人之心’。薄之也。”遂疾进师,车驰卒奔,乘晋军。

  桓子不知所为,鼓于军中曰:“先济者有赏。”中军、下军争舟,舟中之指可掬也。

  晋师右移,上军未动。工尹齐将右拒卒以逐下军。楚子使唐狡与蔡鸠居告唐惠侯曰:“不谷不德而贪,以遇大敌,不谷之罪也。然楚不克,君之羞也,敢藉君灵以济楚师。”使潘党率游阙四十乘,从唐侯以为左拒,以从上军。驹伯曰:“待诸乎?”随季曰:“楚师方壮,若萃于我,吾师必尽,不如收而去之。分谤生民,不亦可乎?”殿其卒而退,不败。

  王见右广,将从之乘。屈荡尸之,曰:“君以此始,亦必以终。”自是楚之乘广先左。

  晋人或以广队不能进,楚人惎之脱扃,少进,马还,又惎之拔旆投衡,乃出。

  顾曰:“吾不如大国之数奔也。”

  赵旃以其良马二,济其兄与叔父,以他马反,遇敌不能去,弃车而走林。逢大夫与其二子乘,谓其二子无顾。顾曰:“赵傁在后。”怒之,使下,指木曰:“尸女于是。”授赵旃绥,以免。明日以表尸之,皆重获在木下。

  楚熊负羁囚知荦。知庄子以其族反之,厨武子御,下军之士多从之。每射,抽矢,菆,纳诸厨子之房。厨子怒曰:“非子之求而蒲之爱,董泽之蒲,可胜既乎?”知季曰:“不以人子,吾子其可得乎?吾不可以苟射故也。”射连尹襄老,获之,遂载其尸。射公子谷臣,囚之。以二者还。

  及昏,楚师军于邲,晋之余师不能军,宵济,亦终夜有声。

  丙辰,楚重至于邲,遂次于衡雍。潘党曰:“君盍筑武军,而收晋尸以为京观。臣闻克敌必示子孙,以无忘武功。”楚子曰:“非尔所知也。夫文,止戈为武。武王克商。作《颂》曰:‘载戢干戈,载櫜弓矢。我求懿德,肆于时夏,允王保之。’又作《武》,其卒章曰‘耆定尔功’。其三曰:‘铺时绎思,我徂求定。’其六曰:‘绥万邦,屡丰年。’夫武,禁暴、戢兵、保大、定功、安民、和众、丰财者也。故使子孙无忘其章。今我使二国暴骨,暴矣;观兵以威诸侯,兵不戢矣。暴而不戢,安能保大?犹有晋在,焉得定功?所违民欲犹多,民何安焉?无德而强争诸侯,何以和众?利人之几,而安人之乱,以为己荣,何以丰财?武有七德,我无一焉,何以示子孙?其为先君宫,告成事而已。武非吾功也。古者明王伐不敬,取其鲸鲵而封之,以为大戮,于是乎有京观,以惩淫慝。今罪无所,而民皆尽忠以死君命,又可以为京观乎?”祀于河,作先君宫,告成事而还。

  是役也,郑石制实入楚师,将以分郑而立公子鱼臣。辛未,郑杀仆叔及子服。

  君子曰:“史佚所谓毋怙乱者,谓是类也。《诗》曰:‘乱离瘼矣,爰其适归?’归于怙乱者也夫。”

  郑伯、许男如楚。

  秋,晋师归,桓子请死,晋侯欲许之。士贞子谏曰:“不可。城濮之役,晋师三日谷,文公犹有忧色。左右曰:‘有喜而忧,如有忧而喜乎?’公曰:‘得臣犹在,忧未歇也。困兽犹斗,况国相乎!’及楚杀子玉,公喜而后可知也,曰:‘莫余毒也已。’是晋再克而楚再败也。楚是以再世不竞。今天或者大警晋也,而又杀林父以重楚胜,其无乃久不竞乎?林父之事君也,进思尽忠,退思补过,社稷之卫也,若之何杀之?夫其败也,如日月之食焉,何损于明?”晋侯使复其位。

  冬,楚子伐萧,宋华椒以蔡人救萧。萧人囚熊相宜僚及公子丙。王曰:“勿杀,吾退。”萧人杀之。王怒,遂围萧。萧溃。申公巫臣曰:“师人多寒。”王巡三军,拊而勉之。三军之士,皆如挟纩。遂傅于萧。还无社与司马卯言,号申叔展。叔展曰:“有麦曲乎?”曰:“无”。“有山鞠穷乎?”曰:“无”。

  “河鱼腹疾奈何?”曰:“目于眢井而拯之。”“若为茅绖,哭井则己。”明日萧溃,申叔视其井,则茅绖存焉,号而出之。

  晋原縠、宋华椒、卫孔达、曹人同盟于清丘。曰:“恤病讨贰。”于是卿不书,不实其言也。宋为盟故,伐陈。卫人救之。孔达曰:“先君有约言焉,若大国讨,我则死之。”

  

  

  !宣公十三年

  【经】十有三年春,齐师伐莒。夏,楚子伐宋。秋,螽。冬,晋杀其大夫先縠。

  

  【传】十三年春,齐师伐莒,莒恃晋而不事齐故也。

  夏,楚子伐宋,以其救萧也。君子曰:“清丘之盟,唯宋可以免焉。”

  秋,赤狄伐晋,及清,先縠召之也。

  冬,晋人讨邲之败,与清之师,归罪于先縠而杀之,尽灭其族。君子曰:“恶之来也,己则取之,其先縠之谓乎。”

  清丘之盟,晋以卫之救陈也讨焉。使人弗去,曰:“罪无所归,将加而师。”

  孔达曰:“苟利社稷,请以我说。罪我之由。我则为政而亢大国之讨,将以谁任?我则死之。”

  

  

  !宣公十四年

  【经】十有四年春,卫杀其大夫孔达。夏五月壬申,曹伯寿卒。晋侯伐郑。

  秋九月,楚子围宋。葬曹文公。冬,公孙归父会齐侯于谷。

  

  【传】十四年春,孔达缢而死。卫人以说于晋而免。遂告于诸侯曰:“寡君有不令之臣达,构我敝邑于大国,既伏其罪矣,敢告。”卫人以为成劳,复室其子,使复其位。

  夏,晋侯伐郑,为邲故也。告于诸侯,蒐焉而还。中行桓子之谋也。曰:“示之以整,使谋而来。”郑人惧,使子张代子良于楚。郑伯如楚,谋晋故也。

  郑以子良为有礼,故召之。

  楚子使申舟聘于齐,曰:“无假道于宋。”亦使公子冯聘于晋,不假道于郑。

  申舟以孟诸之役恶宋,曰:“郑昭宋聋,晋使不害,我则必死。”王曰:“杀女,我伐之。”见犀而行。及宋,宋人止之,华元曰:“过我而不假道,鄙我也。鄙我,亡也。杀其使者必伐我,伐我亦亡也。亡一也。”乃杀之。楚子闻之,投袂而起,屦及于窒皇,剑及于寝门之外,车及于蒲胥之市。秋九月,楚子围宋。

  冬,公孙归父会齐侯于谷。见晏桓子,与之言鲁乐。桓子告高宣子曰:“子家其亡乎,怀于鲁矣。怀必贪,贪必谋人。谋人,人亦谋己。一国谋之,何以不亡?”孟献子言于公曰:“臣闻小国之免于大国也,聘而献物,于是有庭实旅百。

  朝而献功,于是有容貌采章嘉淑,而有加货。谋其不免也。诛而荐贿,则无及也。

  今楚在宋,君其图之。”公说。

  

  

  !宣公十五年

  【经】十有五年春,公孙归父会楚子于宋。夏五月,宋人及楚人平。六月癸卯,晋师灭赤狄潞氏,以潞子婴儿归。秦人伐晋。王札子杀召伯、毛伯。秋,螽。

  仲孙蔑会齐高固于无娄。初税亩。冬,蝝生。饥。

  

  【传】十五年春,公孙归父会楚子于宋。

  宋人使乐婴齐告急于晋。晋侯欲救之。伯宗曰:“不可。古人有言曰:‘虽鞭之长,不及马腹。’天方授楚,未可与争。虽晋之强,能违天乎?谚曰:‘高下在心。’川泽纳污,山薮藏疾,瑾瑜匿瑕,国君含垢,天之道也,君其待之。”

  乃止。使解扬如宋,使无降楚,曰:“晋师悉起,将至矣。”郑人囚而献诸楚,楚子厚赂之,使反其言,不许,三而许之。登诸楼车,使呼宋人而告之。遂致其君命。楚子将杀之,使与之言曰:“尔既许不谷而反之,何故?非我无信,女则弃之,速即尔刑。”对曰:“臣闻之,君能制命为义,臣能承命为信,信载义而行之为利。谋不失利,以卫社稷,民之主也。义无二信,信无二命。君之赂臣,不知命也。受命以出,有死无霣,又可赂乎?臣之许君,以成命也。死而成命,臣之禄也。寡君有信臣,下臣获考死,又何求?”楚子舍之以归。

  夏五月,楚师将去宋。申犀稽首于王之马前,曰:“毋畏知死而不敢废王命,王弃言焉。”王不能答。申叔时仆,曰:“筑室反耕者,宋必听命。”从之。宋人惧,使华元夜入楚师,登子反之床,起之曰:“寡君使元以病告,曰:‘敝邑易子而食,析骸以爨。虽然,城下之盟,有以国毙,不能从也。去我三十里,唯命是听。’”子反惧,与之盟而告王。退三十里。宋及楚平,华元为质。盟曰:“我无尔诈,尔无我虞。”

  潞子婴儿之夫人,晋景公之姊也。酆舒为政而杀之,又伤潞子之目。晋侯将伐之,诸大夫皆曰:“不可。酆舒有三俊才,不如待后之人。”伯宗曰:“必伐之。狄有五罪,俊才虽多,何补焉?不祀,一也。耆酒,二也。弃仲章而夺黎氏地,三也。虐我伯姬,四也。伤其君目,五也。怙其俊才,而不以茂德,兹益罪也。后之人或者将敬奉德义以事神人,而申固其命,若之何待之?不讨有罪,曰将待后,后有辞而讨焉,毋乃不可乎?夫恃才与众,亡之道也。商纣由之,故灭。

  天反时为灾,地反物为妖,民反德为乱,乱则妖灾生。故文反正为乏。尽在狄矣。”

  晋侯从之。六月癸卯,晋荀林父败赤狄于曲梁。辛亥,灭潞。酆舒奔卫,卫人归诸晋,晋人杀之。

  王孙苏与召氏、毛氏争政,使王子捷杀召戴公及毛伯卫。卒立召襄。

  秋七月,秦桓公伐晋,次于辅氏。壬午,晋侯治兵于稷以略狄土,立黎侯而还。及洛,魏颗败秦师于辅氏。获杜回,秦之力人也。

  初,魏武子有嬖妾,无子。武子疾,命颗曰:“必嫁是。”疾病,则曰:“必以为殉。”及卒,颗嫁之,曰:“疾病则乱,吾从其治也。”及辅氏之役,颗见老人结草以亢杜回,杜回踬而颠,故获之。夜梦之曰:“余,而所嫁妇人之父也。尔用先人之治命,余是以报。”

  晋侯赏桓子狄臣千室,亦赏士伯以瓜衍之县。曰:“吾获狄土,子之功也。

  微子,吾丧伯氏矣。”羊舌职说是赏也,曰:“《周书》所谓‘庸庸祗祗’者,谓此物也夫。士伯庸中行伯,君信之,亦庸士伯,此之谓明德矣。文王所以造周,不是过也。故《诗》曰:‘陈锡哉周。’能施也。率是道也,其何不济?”晋侯使赵同献狄俘于周,不敬。刘康公曰:“不及十年,原叔必有大咎,天夺之魄矣。”

  初税亩,非礼也。谷出不过藉,以丰财也。

  冬,蝝生,饥。幸之也。

  

  

  !宣公十六年

  【经】十有六年春王正月。晋人灭赤狄甲氏及留吁。夏,成周宣榭火。秋,郯伯姬来归。冬,大有年。

  

  【传】十六年春,晋士会帅师灭赤狄甲氏及留吁、铎辰。

  三月,献狄俘。晋侯请于王。戊申,以黻冕命士会将中军,且为大傅。于是晋国之盗逃奔于秦。羊舌职曰:“吾闻之,‘禹称善人,不善人远’,此之谓也夫。《诗》曰:‘战战兢兢,如临深渊,如履薄冰。’善人在上也。善人在上,则国无幸民。谚曰:‘民之多幸,国之不幸也。’是无善人之谓也。”

  夏,成周宣榭火,人火之也。凡火,人火曰火,天火曰灾。

  秋,郯伯姬来归,出也。

  为毛、召之难故,王室复乱。王孙苏奔晋,晋人复之。

  冬,晋侯使士会平王室,定王享之,原襄公相礼,殽烝。武子私问其故。王闻之,召武子曰:“季氏,而弗闻乎?王享有体荐,宴有折俎。公当享,卿当宴,王室之礼也。”武子归而讲求典礼,以修晋国之法。

  

  

  !宣公十七年

  【经】十有七年春王正月庚子,许男锡我卒。丁未,蔡侯申卒。夏,葬许昭公。葬蔡文公。六月癸卯,日有食之。己未,公会晋侯、卫侯、曹伯、邾子同盟于断道。秋,公至自会。冬十有一月壬午,公弟叔肸卒。

  

  【传】十七年春,晋侯使郤克征会于齐。齐顷公帷妇人,使观之。郤子登,妇人笑于房。献子怒,出而誓曰:“所不此报,无能涉河。”献子先归,使栾京庐待命于齐,曰:“不得齐事,无复命矣。”郤子至,请伐齐,晋侯弗许。请以其私属,又弗许。

  齐侯使高固、晏弱、蔡朝、南郭偃会。及敛盂,高固逃归。夏,会于断道,讨贰也。盟于卷楚,辞齐人。晋人执晏弱于野王,执蔡朝于原,执南郭偃于温。

  苗贲皇使,见晏桓子,归,言于晋侯曰:“夫晏子何罪?昔者诸侯事吾先君,皆如不逮,举言群臣不信,诸侯皆有贰志。齐君恐不得礼,故不出,而使四子来。

  左右或沮之,曰:‘君不出,必执吾使。’故高子及敛盂而逃。夫三子者曰:‘若绝君好,宁归死焉。’为是犯难而来,吾若善逆彼以怀来者。吾又执之,以信齐沮,吾不既过矣乎?过而不改,而又久之,以成其悔,何利之有焉?使反者得辞,而害来者,以惧诸侯,将焉用之?”晋人缓之,逸。

  秋八月,晋师还。

  范武子将老,召文子曰:“燮乎!吾闻之,喜怒以类者鲜,易者实多。《诗》曰:‘君子如怒,乱庶遄沮;君子如祉,乱庶遄已。’君子之喜怒,以已乱也。

  弗已者,必益之。郤子其或者欲已乱于齐乎?不然,余惧其益之也。余将老,使郤子逞其志,庶有豸乎?尔从二三子唯敬。”乃请老,郤献子为政。

  冬,公弟叔肸卒。公母弟也。凡大子之母弟,公在曰公子,不在曰弟。凡称弟,皆母弟也。

  

  

  !宣公十八年

  【经】十有八年春,晋侯、卫世子臧伐齐。公伐杞。夏四月。秋七月,邾人伐鄫子于鄫。甲戌,楚子旅卒。公孙归父如晋。冬十月壬戌,公薨于路寝。

  归父还自晋,至笙。遂奔齐,

  【传】十八年春,晋侯、卫大子臧伐齐,至于阳谷。齐侯会晋侯盟于缯,以公子强为质于晋。晋师还,蔡朝、南郭偃逃归。

  夏,公使如楚乞师,欲以伐齐。

  秋,邾人戕鄫子于鄫。凡自虐其君曰弑,自外曰戕。

  楚庄王卒。楚师不出,既而用晋师,楚于是乎有蜀之役。

  公孙归父以襄仲之立公也,有宠,欲去三桓以张公室。与公谋而聘于晋,欲以晋人去之。冬,公薨。季文子言于朝曰:“使我杀適立庶以失大援者,仲也夫。”

  臧宣叔怒曰:“当其时不能治也,后之人何罪?子欲去之,许请去之。”遂逐东门氏。子家还,及笙,坛帷,复命于介。既复命,袒、括发,即位哭,三踊而出。

  遂奔齐。书曰“归父还自晋。”善之也。
  
学而第一

  

  子曰:“学而时习之,不亦说乎?有朋自远方来,不亦乐乎?人不知,而不愠,不亦君子乎?”有子曰:“其为人也孝弟,而好犯上者,鲜矣;不好犯上,而好作乱者,未之有也。君子务本,本立而道生。孝弟也者,其为仁之本与!”子曰:“巧言令色,鲜矣仁!”曾子曰:“吾日三省吾身:为人谋而不忠乎?与朋友交而不信乎?传不习乎?”子曰:“道千乘之国,敬事而信,节用而爱人,使民以时。”

  子曰:“弟子入则孝,出则悌,谨而信,泛爱众,而亲仁。行有馀力,则以学文。”

  子夏曰:“贤贤易色;事父母,能竭其力,事君,能致其身;与朋友交,言而有信。虽曰未学,吾必谓之学矣。”

  子曰:“君子不重,则不威。学则不固。主忠信。无友不如己者。过则勿惮改。”

  曾子曰:“慎终追远,民德归厚矣。”

  子禽问于子贡曰:“夫子至于是邦也,必闻其政。求之与?抑与之与?”子贡曰:“夫子温、良、恭、俭、让以得之。夫子之求之也,其诸异乎人之求之与!”子曰:“父在,观其志;父没,观其行;三年无改于父之道,可谓孝矣。”

  有子曰:“礼之用,和为贵。先王之道斯为美,小大由之。有所不行,知和而和,不以礼节之,亦不可行也。”

  有子曰:“信近于义,言可复也。恭近于礼,远耻辱也。因不失其亲,亦可宗也。”

  子曰:“君子食无求饱,居无求安,敏于事而慎于言,就有道而正焉,可谓好学也已。”

  子贡曰:“贫而无谄,富而无骄,何如?”子曰:“可也。未若贫而乐,富而好礼者也。”

  子贡曰:“《诗》云‘如切如磋,如琢如磨’,其斯之谓与?”子曰:“赐也,始可与言《诗》已矣。告诸往而知来者。”

  子曰:“不患人之不己知,患不知人也。”
  《礼记学记》

  发虑宪,求善良,足以谀闻,不足以动众。就贤体远,足以动众,未足以化民。君子如欲化民成俗,其必由学乎!

  

  玉不琢,不成器,人不学,不知道。是故古之王者,建国君民,教学为先。兑命曰:“念

  

  终始典于学。”其此之谓乎!

  

  虽有嘉肴弗食,不知其旨也;虽有至道弗学,不知其善也。是故学然后知不足,教然后知困。知不足,然后能自反也;知困,然后能自强也。故曰:“教学相长也。”兑命曰:“学学半。”其此之谓乎!

  

  古之教者,家有塾,党有庠,术有序,国有学。比年入学,中年考校。一年视离经辨志,三年视敬业乐群,五年视博习亲师,七年视论学取友,谓之小成。九年知类通达,强立而不反,谓之大成。夫然后足以化民易俗,近者说服而远者怀之,此大学之道也。记曰:“蛾子时术之。”其此之谓乎!

  

  大学始教,皮弁祭菜,示敬道也。宵雅肄三,官其始也。入学鼓箧,孙其业也。夏楚二物,收其威也。未卜禘,不视学,游其志也。时观而弗语,存其心也。幼者听而弗问,学不躐等也。此七者,教之大伦也。记曰:“凡学,官先事,士先志。”其此之谓乎!

  

  大学之教也,时教必有正业,退息必有居学。不学操缦,不能安弦。不学博依,不能安诗。不学杂服,不能安礼。不兴其艺,不能乐学。故君子之于学也,藏焉修焉,息焉游焉。夫然,故安其学而亲其师,乐其友而信其道,是以虽离师辅而不反。兑命曰:“敬孙务时敏,厥修乃来。”其此之谓乎!

  

  今之教者,呻其占毕,多其讯,言及于数,进而不顾其安。使人不由其诚,教人不尽其材,其施之也悖,其求之也佛。夫然,故.隐其学而疾其师,苦其难而不知其益也。虽终其业,其去之必速。教之不刑,其此之由乎!

  

  大学之法,禁于未发之谓豫,当其可之谓时,不陵节而施之谓孙,相观而善之谓摩。此四者,教之所由兴也。

  

  发然后禁,则扞格而不胜。时过然后学,则勤苦而难成。杂施而不孙,则坏乱而不修。独学而无友,则孤陋而寡闻。燕朋逆其师,燕辟废其学。此六者,教之所由废也。

  

  君子既知教之所由兴,又知教之所由废,然后可以为人师也。故君子之教喻也,道而弗牵,强而弗抑,开而弗达。道而弗牵则和,强而弗抑则易,开而弗达则思。和易以思,可谓善喻矣!

  

  学者有四失,教者必知之。人之学也,或失则多,或失则寡,或失则易,或失则止。此四者,心之莫同也。知其心,然后能救其失也。教也者,长善而救其失者也。

  

  善歌者,使人继其声;善教者,使人继其志。其言也约而达,微而臧,罕譬而喻,可谓继志矣!

  

  君子知至学之难易,而知其美恶,然后能博喻;能博喻,然后能为师;能为师,然后能为长;能为长.然后能为君。故师也者,所以学为君也。是故择师不可不慎也。记曰:“三王四代唯其师。”此之谓乎!

  

  凡学之道,严师为难。师严然后道尊,道尊然后民知敬学。是故君之所不臣于其臣者二:当其为尸,则弗臣也;当其为师,则弗臣也。大学之礼,虽诏于天子,无北面,所以尊师也。

  

  善学者,师逸而功倍,又从而庸之。不善学者,师勤而功半,又从而怨之。善问者如攻坚木,先其易者,后其节目,及其久也,相说以解。不善问者反此。善待问者如撞钟,叩之以小者则小鸣,叩之以大者则大鸣,待其从容,然后尽其声。不善荅问者反此。此皆进学之道也。

  

  记问之学,不足以为人师。必也其听语乎!力不能问,然后语之。语之而不知,虽舍之可也。良冶之子,必学为裘;良弓之子,必学为箕。始驾马者反之,车在马前。君子察于此三者,可以有志于学矣!

  

  古之学者,比物丑类。鼓无当于五声,五声弗得不和。水无当于五色,五色弗得不章。学无当于五官,五官弗得不治。师无当于五服,五服弗得不亲。

  

  君子曰:“大德不官,大道不器,大信不约,大时不齐。”察于此四者,可以有志于学矣!

  

  三王之祭川也,皆先河而后海,或源也,或委也。此之谓务本。

 
!!! 机会

* [[实习 - 微软亚洲研究院“明日之星”开放岗位|http://mp.weixin.qq.com/s?__biz=MzA4NzIyMDY0OA==&mid=2655391644&idx=1&sn=e3c63a2838439ab990fb0372fe665d69&chksm=8b8e675bbcf9ee4ddcd6e51cdca6c0c07298c3632cf388bb2932ecc1ae15273714a178e2f7ee&mpshare=1&scene=23&srcid=1102ZHSwSRuzjzvybqVqvjNG#rd]]

!!! 实验室信息

* Shu Wu 吴书 
** http://shuwu.name
** 中科院自动化研究所 智能感知与计算研究中心
* Wang Cong 王枞
** http://school.freekaoyan.com/bj/bupt/daoshi/20130811/1376182278164094.shtml
** 智能信息处理、信息安全、网络安全
* 北大可视化研究中心
** http://vis.pku.edu.cn
* 吴国仕
** http://school.freekaoyan.com/bj/bupt/daoshi/20130811/1376188859164239.shtml
** 大数据与智能信息处理

!!! 购书

* Android 系 https://sale.jd.com/act/RBGaVDt3qnjd58.html
* 人工智能与深度学习系 https://sale.jd.com/act/FUTLwVHIil71C.html

!!! 考研

* 王道论坛 - 计算机考研论坛 http://www.cskaoyan.com/forum.php

!!! 出国

* 最全CMU计算机各项目录取要求与就业统计解析—总有一款适合你 https://mp.weixin.qq.com/s/eeAHhmvA7Eyib7mfhD891Q

!!! 鸡汤

* 来不及,你就不学了吗? http://wenda.tianya.cn/jinghua/1a9bqsn7l5n80asl3r9pis84e856p152imgdt

!!! 脑洞

* 代码的深渊:2022年,一个试图用AI取代程序员的故事  https://mp.weixin.qq.com/s/M_2mygXpdRVe6Sk_bsNRPg
  

  颜渊第十二

  

  颜渊问仁。子曰:“克己复礼为仁。一日克己复礼,天下归仁焉。为仁由己,而由人乎哉?”颜渊曰:“请问其目?”子曰:“非礼勿视,非礼勿听,非礼勿言,非礼勿动。”

  颜渊曰:“回虽不敏,请事斯语矣。”

  仲弓问仁。子曰:“出门如见大宾,使民如承大祭。己所不欲,勿施于人。

  在邦无怨,在家无怨。”

  仲弓曰:“雍虽不敏,请事斯语矣。”

  司马牛问仁。子曰:“仁者,其言也讱。”

  曰:“其言也讱,斯谓之仁已乎?”子曰:“为之难,言之得无讱乎?”司马牛问君子。子曰:“君子不忧不惧。”

  曰:“不忧不惧,斯谓之君子已乎?”子曰:“内省不疚,夫何忧何惧?”司马牛忧曰:“人皆有兄弟,我独亡!”子夏曰:“商闻之矣,死生有命,富贵在天。君子敬而无失,与人恭而有礼。四海之内皆兄弟也,君子何患乎无兄弟也?”子张问明。子曰:“浸润之谮,肤受之愬,不行焉,可谓明也已矣。浸润之谮,肤受之愬,不行焉,可谓远也已矣。”

  子贡问政。子曰:“足食,足兵,民信之矣。”

  子贡曰:“必不得已而去,于斯三者何先?”曰:“去兵。”

  子贡曰:“必不得已而去,于斯二者何先?”曰:“去食。自古皆有死,民无信不立。”

  棘子成曰:“君子质而已矣,何以文为?”子贡曰:“惜乎,夫子之说君子也,驷不及舌。文犹质也,质犹文也。虎豹之鞟犹犬羊之鞟。”

  哀公问于有若曰:“年饥,用不足,如之何?”有若对曰:“盍彻乎?”曰:“二,吾犹不足,如之何其彻也?”对曰:“百姓足,君孰与不足?百姓不足,君孰与足?”子张问崇德辨惑。子曰:“主忠信,徙义,崇德也。爱之欲其生,恶之欲其死。既欲其生,又欲其死,是惑也。‘诚不以富,亦祇以异。’”齐景公问政于孔子。孔子对曰:“君君、臣臣、父父、子子。”

  公曰:“善哉!信如君不君、臣不臣、父不父、子不子,虽有粟,吾得而食诸?”子曰:“片言可以折狱者,其由也与?”子路无宿诺。

  子曰:“听讼,吾犹人也,必也使无讼乎。”

  子张问政。子曰:“居之无倦,行之以忠。”

  子曰:“博学于文,约之以礼,亦可以弗畔矣夫!”子曰:“君子成人之美,不成人之恶。小人反是。”

  季康子问政于孔子。孔子对曰:“政者,正也。子帅以正,孰敢不正?”季康子患盗,问于孔子。孔子对曰:“苟子之不欲,虽赏之不窃。”

  季康子问政于孔子曰:“如杀无道,以就有道,何如?”孔子对曰:“子为政,焉用杀?子欲善而民善矣。君子之德风,小人之德草,草上之风,必偃。”

  子张问:“士何如斯可谓之达矣?”子曰:“何哉,尔所谓达者?”子张对曰:“在邦必闻,在家必闻。”子曰:“是闻也,非达也。夫达也者,质直而好义,察言而观色,虑以下人。在邦必达,在家必达。夫闻也者,色取仁而行违,居之不疑。在邦必闻,在家必闻。”

  樊迟从游于舞雩之下,曰:“敢问崇德,修慝,辨惑。”子曰:“善哉问!先事后得,非崇德与?攻其恶,勿攻人之恶,非修慝与?一朝之忿,忘其身以及其亲,非惑与?”樊迟问仁。子曰:“爱人。”问知。子曰:“知人。”

  樊迟未达。子曰:“举直错诸枉,能使枉者直。”

  樊迟退,见子夏曰:“乡也吾见于夫子而问知,子曰:‘举直错诸枉,能使枉者直。’何谓也?”子夏曰:“富哉,言乎!舜有天下,选于众,举皋陶,不仁者远矣。汤有天下,选于众,举伊尹,不仁者远矣。”

  子贡问友。子曰:“忠告而善道之,不可则止,毋自辱焉。”

  曾子曰:“君子以文会友,以友辅仁。”

  《礼记燕义》

  

  古者周天子之官,有庶子官。庶子官职诸侯卿大夫士之庶子之卒,掌其戒令,与其教治,别其等,正其位。国有大事,则率国子而致于大子,唯所用之。若有甲兵之事,则授之以车甲,合其卒伍,置其有司,以军法治之,司马弗正。凡国之政事,国子存游卒,使之修德学道。春合诸学,秋合诸射,以考其艺而进退之。

  

  诸侯燕礼之义,君立阼阶之东南,南乡尔。卿大夫皆少进,定位也。君席阼阶之上,居主位也。君独升立席上,西面特立,莫敢适之义也。

  

  设宾主,饮酒之礼也。使宰夫为献主,臣莫敢与君亢礼也。不以公卿为宾,而以大夫为宾,为疑也,明嫌之义也。宾入中庭,君降一等而揖之,礼之也。

  

  君举旅于宾,及君所赐爵,皆降再拜稽首。升成拜,明臣礼也。君荅拜之,礼无不荅,明君上之礼也。臣下竭力尽能以立功于国,君必报之以爵禄,故臣下皆务竭力尽能以立功,是以国安而君宁。礼无不荅,言上之不虚取于下也。上必明正道以道民,民道之而有功,然后取其什一。故上用足而下不匮也,是以上下和亲而不相怨也。和宁,礼之用也,此君臣上下之大义也。故曰:燕礼者,所以明君臣之义也。

  

  席,小卿次上卿,大夫次小卿,士庶子以次就位于下。献君,君举旅行酬,而后献卿。卿举旅行酬,而后献大夫。大夫举旅行酬,而后献士。士举旅行酬,而后献庶子。俎豆,牲体,荐羞,皆有等差,所以明贵贱也。

  

  
  阳货第十七

  

  阳货欲见孔子,孔子不见,归孔子豚。

  孔子时其亡也,而往拜之。遇诸途。谓孔子曰:“来!予与尔言。”曰:“怀其宝而迷其邦,可谓仁乎?”曰:“不可!”好从事而亟失时,可谓知乎?”曰:“不可!”“日月逝矣,岁不我与。”

  孔子曰:“诺,吾将仕矣。”

  子曰:“性相近也,习相远也。”

  子曰:“唯上知与下愚不移。”

  子之武城,闻弦歌之声。夫子莞尔而笑,曰:“割鸡焉用牛刀?”子游对曰:“昔者偃也闻诸夫子曰:‘君子学道则爱人,小人学道则易使也。’”子曰:“二三子!偃之言是也。前言戏之耳。”

  公山弗扰以费畔,召,子欲往。

  子路不说,曰:“末之也,已,何必公山氏之之也?”子曰:“夫召我者,而岂徒哉?如有用我者,吾其为东周乎!”子张问仁于孔子。孔子曰:“能行五者于天下为仁矣。”

  请问之。曰:“恭、宽、信、敏、惠。恭则不侮,宽则得众,信则人任焉,敏则有功,惠则足以使人。”

  佛肸召,子欲往。

  子路曰:“昔者由也闻诸夫子曰:‘亲于其身为不善者,君子不入也。’佛肸以中牟畔,子之往也,如之何?”子曰:“然,有是言也。不曰坚乎,磨而不磷;不曰白乎,涅而不缁。吾岂匏瓜也哉?焉能系而不食?”子曰:“由也,女闻六言六蔽矣乎?”对曰:“未也。”

  “居,吾语女。好仁不好学,其蔽也愚;好知不好学,其蔽也荡;好信不好学,其蔽也贼;好直不好学,其蔽也绞;好勇不好学,其蔽也乱;好刚不好学,其蔽也狂。”

  子曰:“小子何莫学夫诗?诗,可以兴,可以观,可以群,可以怨。迩之事父,远之事君。多识于鸟兽草木之名。”

  子谓伯鱼曰:“女为《周南》、《召南》矣乎?人而不为《周南》、《召南》,其犹正墙面而立也与!”子曰:“礼云礼云,玉帛云乎哉?乐云乐云,钟鼓云乎哉?”子曰:“色厉而内荏,譬诸小人,其犹穿窬之盗也与!”子曰:“乡原,德之贼也。”

  子曰:“道听而途说,德之弃也。”

  子曰:“鄙夫可与事君也与哉?其未得之也,患得之;既得之,患失之;苟患失之,无所不至矣。”

  子曰:“古者民有三疾,今也或是之亡也。古之狂也肆,今之狂也荡;古之矜也廉,今之矜也忿戾;古之愚也直,今之愚也诈而已矣。”

  子曰:“巧言令色,鲜矣仁。”

  子曰:“恶紫之夺朱也,恶郑声之乱雅乐也,恶利口之覆邦家者。”

  子曰:“予欲无言。”子贡曰:“子如不言,则小子何述焉?”子曰:“天何言哉?四时行焉,百物生焉,天何言哉?”孺悲欲见孔子,孔子辞以疾。将命者出户,取瑟而歌,使之闻之。

  宰我问:“三年之丧,期已久矣。君子三年不为礼,礼必坏;三年不为乐,乐必崩。旧谷既没,新谷既升,钻燧改火,期可已矣。”

  子曰:“食夫稻,衣夫锦,于女安乎?”曰:“安!”“女安则为之。夫君子之居丧,食旨不甘,闻乐不乐,居处不安,故不为也。今女安,则为之。”

  宰我出。子曰:“予之不仁也!子生三年,然后免于父母之怀。夫三年之丧,天下之通丧也。予也有三年之爱于其父母乎?”子曰:“饱食终日,无所用心,难矣哉!不有博弈者乎?为之,犹贤乎已。”

  子路曰:“君子尚勇乎?”子曰:“君子义以为上。君子有勇而无义为乱;小人有勇而无义为盗。”

  子贡曰:“君子亦有恶乎?”子曰:“有恶:恶称人之恶者,恶居下流而讪上者,恶勇而无礼者,恶果敢而窒者。”

  曰:“赐也,亦有恶乎?”“恶徼以为知者,恶不孙以为勇者,恶讦以为直者。”

  子曰:“唯女子与小人为难养也,近之则不孙,远之则怨。”

  子曰:“年四十而见恶焉,其终也已。”

尧曰第二十

   

  尧曰:“咨!尔舜!天之历数在尔躬,允执其中。四海困穷,天禄永终。”

  舜亦以命禹。

  曰:“予小子履,敢用玄牡,敢昭告于皇皇后帝:有罪不敢赦。帝臣不蔽,简在帝心。朕躬有罪,无以万方;万方有罪,罪在朕躬。”

  周有大赉,善人是富。“虽有周亲,不如仁人。百姓有过,在予一人。”

  谨权量,审法度,修废官,四方之政行焉。兴灭国,继绝世,举逸民,天下之民归心焉。所重:民、食、丧、祭。宽则得众,信则民任焉,敏则有功,公则说。

  子张问于孔子曰:“何如斯可以从政矣?”子曰:“尊五美,屏四恶,斯可以从政矣。”

  子张曰:“何谓五美?”子曰:“君子惠而不费,劳而不怨,欲而不贪,泰而不骄,威而不猛。”

  子张曰:“何谓惠而不费?”子曰:“因民之所利而利之,斯不亦惠而不费乎?择可劳而劳之,又谁怨?欲仁而得仁,又焉贪?君子无众寡,无小大,无敢慢,斯不亦泰而不骄乎?君子正其衣冠,尊其瞻视,俨然人望而畏之,斯不亦威而不猛乎?”子张曰:“何谓四恶?”子曰:“不教而杀谓之虐。不戒视成谓之暴。慢令致期谓之贼。犹之与人也,出纳之吝,谓之有司。”

  孔子曰:“不知命,无以为君子也;不知礼,无以立也;不知言,无以知人也。”
周易

  

  ![[上经]]

  ![[下经]]

  ![[系辞上]]

  ![[系辞下]]

  ![[说卦]]

  ![[序卦]]

  ![[杂卦]]

  

  隐公(元年~十一年)

  

  【传】惠公元妃孟子。孟子卒,继室以声子,生隐公。宋武公生仲子。仲子生而有文在其手,曰为鲁夫人,故仲子归于我。生桓公而惠公薨,是以隐公立而奉之。

  

  

  !隐公元年

  【经】元年春王正月。三月,公及邾仪父盟于蔑。夏五月,郑伯克段于鄢。

  秋七月,天王使宰咺来归惠公、仲子之赗。九月,及宋人盟于宿。冬十有二月,祭伯来。公子益师卒。

  

  【传】元年春,王周正月。不书即位,摄也。

  三月,公及邾仪父盟于蔑,邾子克也。未王命,故不书爵。曰“仪父”,贵之也。公摄位而欲求好于邾,故为蔑之盟。

  夏四月,费伯帅师城郎。不书,非公命也。

  初,郑武公娶于申,曰武姜,生庄公及共叔段。庄公寤生,惊姜氏,故名曰“寤生”,遂恶之。爱共叔段,欲立之。亟请于武公,公弗许。及庄公即位,为之请制。公曰:“制,岩邑也,虢叔死焉。佗邑唯命。”请京,使居之,谓之京城大叔。祭仲曰:“都,城过百雉,国之害也。先王之制:大都,不过参国之一;中,五之一;小,九之一。今京不度,非制也,君将不堪。”公曰:“姜氏欲之,焉辟害?”对曰:“姜氏何厌之有?不如早为之所,无使滋蔓!蔓,难图也。蔓草犹不可除,况君之宠弟乎?”公曰:“多行不义,必自毙,子姑待之。”

  既而大叔命西鄙、北鄙贰于己。公子吕曰:“国不堪贰,君将若之何?欲与大叔,臣请事之;若弗与,则请除之,无生民心。”公曰:“无庸,将自及。”

  大叔又收贰以为己邑,至于廪延。子封曰:“可矣,厚将得众。”公曰:“不义不暱,厚将崩。”

  大叔完聚,缮甲兵,具卒乘,将袭郑,夫人将启之。公闻其期,曰:“可矣!”命子封帅车二百乘以伐京。京叛大叔段,段入于鄢,公伐诸鄢。五月辛丑,大叔出奔共。

  书曰:“郑伯克段于鄢。”段不弟,故不言弟;如二君,故曰克;称郑伯,讥失教也:谓之郑志。不言出奔,难之也。

  遂寘姜氏于城颍,而誓之曰:“不及黄泉,无相见也。”既而悔之。

  颍考叔为颍谷封人,闻之,有献于公,公赐之食,食舍肉。公问之,对曰:“小人有母,皆尝小人之食矣,未尝君之羹,请以遗之。”公曰:“尔有母遗,繄我独无!”颍考叔曰:“敢问何谓也?”公语之故,且告之悔。对曰:“君何患焉?若阙地及泉,隧而相见,其谁曰不然?”公从之。公入而赋:“大隧之中,其乐也融融!”姜出而赋:“大隧之外,其乐也泄泄!”遂为母子如初。

  君子曰:“颍考叔,纯孝也,爱其母,施及庄公。《诗》曰‘孝子不匮,永锡尔类。’其是之谓乎!”秋七月,天王使宰咺来归惠公、仲子之赗。缓,且子氏未薨,故名。天子七月而葬,同轨毕至;诸侯五月,同盟至;大夫三月,同位至;士逾月,外姻至。

  赠死不及尸,吊生不及哀,豫凶事,非礼也。

  八月,纪人伐夷。夷不告,故不书。

  有蜚。不为灾,亦不书。

  惠公之季年,败宋师于黄。公立而求成焉。九月,及宋人盟于宿,始通也。

  冬十月庚申,改葬惠公。公弗临,故不书。惠公之薨也,有宋师,太子少,葬故有阙,是以改葬。卫侯来会葬,不见公,亦不书。郑共叔之乱,公孙滑出奔卫。卫人为之伐郑,取廪延。郑人以王师、虢师伐卫南鄙。请师于邾。邾子使私于公子豫,豫请往,公弗许,遂行。及邾人、郑人盟于翼。不书,非公命也。

  新作南门。不书,亦非公命也。

  十二月,祭伯来,非王命也。

  众父卒。公不与小敛,故不书日。

  

  

  !隐公二年

  【经】二年春,公会戎于潜。夏五月,莒人入向。无骇帅师入极。秋八月庚辰,公及戎盟于唐。九月,纪裂繻来逆女。冬十月,伯姬归于纪。纪子帛、莒子盟于密。十有二月乙卯,夫人子氏薨。郑人伐卫。

  

  【传】二年春,公会戎于潜,修惠公之好也。戎请盟,公辞。

  莒子娶于向,向姜不安莒而归。夏,莒人入向,以姜氏还。

  司空无骇入极,费庈父胜之。

  戎请盟。秋,盟于唐,复修戎好也。

  九月,纪裂繻来逆女,卿为君逆也。

  冬,纪子帛、莒子盟于密,鲁故也。

  郑人伐卫,讨公孙滑之乱也。

  

  

  !隐公三年

  【经】三年春王二月,己巳,日有食之。三月庚戌,天王崩。夏四月辛卯,君氏卒。秋,武氏子来求赙。八月庚辰,宋公和卒。冬十有二月,齐侯,郑伯盟于石门。癸未,葬宋穆公。

  

  【传】三年春,王三月壬戌,平王崩。赴以庚戌,故书之。

  夏,君氏卒。声子也。不赴于诸侯,不反哭于寝,不祔于姑,故不曰薨。不称夫人,故不言葬,不书姓。为公故,曰“君氏”。

  郑武公、庄公为平王卿士。王贰于虢,郑伯怨王,王曰“无之”。故周、郑交质。王子狐为质于郑,郑公子忽为质于周。王崩,周人将畀虢公政。四月,郑祭足帅师取温之麦。秋,又取成周之禾。周、郑交恶。

  君子曰:“信不由中,质无益也。明恕而行,要之以礼,虽无有质,谁能间之?苟有明信,涧溪沼沚之毛,蘋蘩蕰藻之菜,筐筥锜釜之器,潢汙行潦之水,可荐于鬼神,可羞于王公,而况君子结二国之信,行之以礼,又焉用质?《风》有《采繁》、《采蘋》,《雅》有《行苇》、《泂酌》,昭忠信也。”

  武氏子来求赙,王未葬也。

  宋穆公疾,召大司马孔父而属殇公焉,曰:“先君舍与夷而立寡人,寡人弗敢忘。若以大夫之灵,得保首领以没,先君若问与夷,其将何辞以对?请子奉之,以主社稷,寡人虽死,亦无悔焉。”对曰:“群臣愿奉冯也。”公曰:“不可。

  先君以寡人为贤,使主社稷,若弃德不让,是废先君之举也,岂曰能贤?光昭先君之令德,可不务乎?吾子其无废先君之功。”使公子冯出居于郑。八月庚辰,宋穆公卒。殇公即位。

  君子曰:“宋宣公可谓知人矣。立穆公,其子飨之,命以义夫。《商颂》曰:‘殷受命咸宜,百禄是荷。’其是之谓乎!”冬,齐、郑盟于石门,寻卢之盟也。庚戌,郑伯之车偾于济。

  卫庄公娶于齐东宫得臣之妹,曰庄姜,美而无子,卫人所为赋《硕人》也。

  又娶于陈,曰厉妫,生孝伯,早死。其娣戴妫生桓公,庄姜以为己子。公子州吁,嬖人之子也,有宠而好兵,公弗禁,庄姜恶之。石碏谏曰:“臣闻爱子,教之以义方,弗纳于邪。骄、奢、淫、泆,所自邪也。四者之来,宠禄过也。将立州吁,乃定之矣,若犹未也,阶之为祸。夫宠而不骄,骄而能降,降而不憾,憾而能眕者鲜矣。且夫贱妨贵,少陵长,远间亲,新间旧,小加大,淫破义,所谓六逆也。君义,臣行,父慈,子孝,兄爱,弟敬,所谓六顺也。去顺效逆,所以速祸也。君人者将祸是务去,而速之,无乃不可乎?”弗听,其子厚与州吁游,禁之,不可。桓公立,乃老。

  

  

  !隐公四年

  【经】四年春王二月,莒人伐杞,取牟娄。戊申,卫州吁弑其君完。夏,公及宋公遇于清。宋公、陈侯、蔡人、卫人伐郑。秋,翚帅师会宋公、陈侯、蔡人、卫人伐郑。九月,卫人杀州吁于濮。冬十有二月,卫人立晋。

  

  【传】四年春,卫州吁弑桓公而立。公与宋公为会,将寻宿之盟。未及期,卫人来告乱。夏,公及宋公遇于清。

  宋殇公之即位也,公子冯出奔郑,郑人欲纳之。及卫州吁立,将修先君之怨于郑,而求宠于诸侯以和其民,使告于宋曰:“君若伐郑以除君害,君为主,敝邑以赋与陈、蔡从,则卫国之愿也。”宋人许之。于是,陈、蔡方睦于卫,故宋公、陈侯、蔡人、卫人伐郑,围其东门,五日而还。

  公问于众仲曰:“卫州吁其成乎?”对曰:“臣闻以德和民,不闻以乱。以乱,犹治丝而棼之也。夫州吁,阻兵而安忍。阻兵无众,安忍无亲,众叛亲离,难以济矣。夫兵犹火也,弗戢,将自焚也。夫州吁弑其君而虐用其民,于是乎不务令德,而欲以乱成,必不免矣。”

  秋,诸侯复伐郑。宋公使来乞师,公辞之。羽父请以师会之,公弗许,固请而行。故书曰“翚帅师”,疾之也。诸侯之师败郑徒兵,取其禾而还。

  州吁未能和其民,厚问定君于石子。石子曰:“王觐为可。”曰:“何以得觐?”曰:“陈桓公方有宠于王,陈、卫方睦,若朝陈使请,必可得也。”厚从州吁如陈。石碏使告于陈曰:“卫国褊小,老夫耄矣,无能为也。此二人者,实弑寡君,敢即图之。”陈人执之而请莅于卫。九月,卫人使右宰丑莅杀州吁于濮,石碏使其宰獳羊肩莅杀石厚于陈。

  君子曰:“石碏,纯臣也,恶州吁而厚与焉。‘大义灭亲’,其是之谓乎!”卫人逆公子晋于邢。冬十二月,宣公即位。书曰“卫人立晋”众也。

  

  

  !隐公五年

  【经】五年春,公矢鱼于棠。夏四月,葬卫桓公。秋,卫师入郕。九月,考仲子之宫。初献六羽。邾人、郑人伐宋。螟。冬十有二月辛巳,公子彄卒。

  宋人伐郑,围长葛。

  

  【传】五年春,公将如棠观鱼者。臧僖伯谏曰:“凡物不足以讲大事,其材不足以备器用,则君不举焉。君将纳民于轨物者也。故讲事以度轨量谓之轨,取材以章物采谓之物,不轨不物谓之乱政。乱政亟行,所以败也。故春蒐夏苗,秋狝冬狩,皆于农隙以讲事也。三年而治兵,入而振旅,归而饮至,以数军实。昭文章,明贵贱,辨等列,顺少长,习威仪也。鸟兽之肉不登于俎,皮革齿牙、骨角毛羽不登于器,则公不射,古之制也。若夫山林川泽之实,器用之资,皂隶之事,官司之守,非君所及也。”公曰:“吾将略地焉。”遂往,陈鱼而观之。僖伯称疾,不从。书曰“公矢鱼于棠”,非礼也,且言远地也。

  曲沃庄伯以郑人、邢人伐翼,王使尹氏、武氏助之。翼侯奔随。

  夏,葬卫桓公。卫乱,是以缓。

  四月,郑人侵卫牧,以报东门之役。卫人以燕师伐郑。郑祭足、原繁、泄驾以三军军其前,使曼伯与子元潜军军其后。燕人畏郑三军而不虞制人。六月,郑二公子以制人败燕师于北制。君子曰:“不备不虞,不可以师。”

  曲沃叛王。秋,王命虢公伐曲沃而立哀侯于翼。

  卫之乱也,郕人侵卫,故卫师入郕。

  九月,考仲子之宫,将万焉。公问羽数于众仲。对曰:“天子用八,诸侯用六,大夫四,士二。夫舞所以节八音而行八风,故自八以下。”公从之。于是初献六羽,始用六佾也。

  宋人取邾田。邾人告于郑曰:“请君释憾于宋,敝邑为道。”郑人以王师会之。伐宋,入其郛,以报东门之役。宋人使来告命。公闻其入郛也,将救之,问于使者曰:“师何及?”对曰:“未及国。”公怒,乃止,辞使者曰:“君命寡人同恤社稷之难,今问诸使者,曰‘师未及国’,非寡人之所敢知也。”

  冬十二月辛已,臧僖伯卒。公曰:“叔父有憾于寡人,寡人弗敢忘。葬之加一等。

  宋人伐郑,围长葛,以报入郛之役也。

  

  

  !隐公六年

  【经】六年春,郑人来渝平。夏五月辛酉,公会齐侯盟于艾。秋七月。冬,宋人取长葛。

  

  【传】六年春,郑人来渝平,更成也。

  翼九宗、五正、顷父之子嘉父逆晋侯于随,纳诸鄂。晋人谓之鄂侯。

  夏,盟于艾,始平于齐也。

  五月庚申,郑伯侵陈,大获。

  往岁,郑伯请成于陈,陈侯不许。五父谏曰:“亲仁善邻,国之宝也。君其许郑。”陈侯曰:“宋、卫实难,郑何能为?”遂不许。

  君子曰:“善不可失,恶不可长,其陈桓公之谓乎!长恶不悛,从自及也。

  虽欲救之,其将能乎?《商书》曰:‘恶之易也,如火之燎于原,不可乡迩,其犹可扑灭?’周任有言曰:‘为国家者,见恶如农夫之务去草焉,芟夷蕴崇之,绝其本根,勿使能殖,则善者信矣。’”秋,宋人取长葛。

  冬,京师来告饥。公为之请籴于宋、卫、齐、郑,礼也。

  郑伯如周,始朝桓王也。王不礼焉。周桓公言于王曰:“我周之东迁,晋、郑焉依。善郑以劝来者,犹惧不<艹既>,况不礼焉?郑不来矣!”

  

  !隐公七年

  【经】七年春王三月,叔姬归于纪。滕侯卒。夏,城中丘。齐侯使其弟年来聘。秋,公伐邾。冬,天王使凡伯来聘。戎伐凡伯于楚丘以归。

  

  【传】七年春,滕侯卒。不书名,未同盟也。凡诸侯同盟,于是称名,故薨则赴以名,告终嗣也,以继好息民,谓之礼经。

  夏,城中丘,书,不时也。

  齐侯使夷仲年来聘,结艾之盟也。

  秋,宋及郑平。七月庚申,盟于宿。公伐邾,为宋讨也。

  初,戎朝于周,发币于公卿,凡伯弗宾。冬,王使凡伯来聘。还,戎伐之于楚丘以归。

  陈及郑平。十二月,陈五父如郑莅盟。壬申,及郑伯盟,歃如忘,泄伯曰:“五父必不免,不赖盟矣。”

  郑良佐如陈莅盟,辛巳,及陈侯盟,亦知陈之将乱也。

  郑公子忽在王所,故陈侯请妻之。郑伯许之,乃成昏。

  

  

  !隐公八年

  【经】八年春,宋公、卫侯遇于垂。三月,郑伯使宛来归祊。庚寅,我入祊。夏六月己亥,蔡侯考父卒。辛亥,宿男卒。秋七月庚午,宋公、齐侯、卫侯盟于瓦屋。八月,葬蔡宣公。九月辛卯,公及莒入盟于浮来。螟。冬十有二月,无骇卒。

  

  【传】八年春,齐侯将平宋、卫,有会期。宋公以币请于卫,请先相见,卫侯许之,故遇于犬丘。

  郑伯请释泰山之祀而祀周公,以泰山之祊易许田。三月,郑伯使宛来归祊,不祀泰山也。

  夏,虢公忌父始作卿士于周。

  四月甲辰,郑公子忽如陈逆妇妫。辛亥,以妫氏归。甲寅,入于郑。陈鍼子送女。先配而后祖。鍼子曰:“是不为夫妇。诬其祖矣,非礼也,何以能育?”齐人卒平宋、卫于郑。秋,会于温,盟于瓦屋,以释东门之役,礼也。

  八月丙戌,郑伯以齐人朝王,礼也。

  公及莒人盟于浮来,以成纪好也。

  冬,齐侯使来告成三国。公使众仲对曰:“君释三国之图以鸠其民,君之惠也。寡君闻命矣,敢不承受君之明德。”

  无骇卒。羽父请谥与族。公问族于众仲。众仲对曰:“天子建德,因生以赐姓,胙之土而命之氏。诸侯以字为谥,因以为族。官有世功,则有官族,邑亦如之。”公命以字为展氏。

  

  

  !隐公九年

  【经】九年春,天子使南季来聘。三月癸酉,大雨,震电。庚辰,大雨雪。

  挟卒。夏,城郎。秋七月。冬,公会齐侯于防。

  

  【传】九年春,王三月癸酉,大雨霖以震,书始也。庚辰,大雨雪,亦如之。

  书,时失也。凡雨,自三日以往为霖。平地尺为大雪。

  夏,城郎,书,不时也。

  宋公不王。郑伯为王左卿士,以王命讨之,伐宋。宋以入郛之役怨公,不告命。公怒,绝宋使。

  秋,郑人以王命来告伐宋。

  冬,公会齐侯于防,谋伐宋也。

  北戎侵郑,郑伯御之。患戎师,曰;“彼徒我车,惧其侵轶我也。”公子突曰:“使勇而无刚者尝寇,而速去之。君为三覆以待之。戎轻而不整,贪而无亲,胜不相让,败不相救。先者见获必务进,进而遇覆必速奔,后者不救,则无继矣。

  乃可以逞。”从之。

  戎人之前遇覆者奔。祝聃逐之。衷戎师,前后击之,尽殪。戎师大奔。十一月甲寅,郑人大败戎师。

  

  

  !隐公十年

  【经】十年春王二月,公会齐侯、郑伯于中丘。夏,翚帅师会齐人、郑人伐宋。六月壬戌,公败宋师于菅。辛未,取郜。辛巳,取防。秋,宋人、卫人入郑。

  宋人、蔡人、卫人伐戴。郑伯伐取之。冬十月壬午,齐人、郑人入郕。

  

  【传】十年春,王正月,公会齐侯、郑伯于中丘。癸丑,盟于邓,为师期。

  夏五月,羽父先会齐侯、郑伯伐宋。

  六月戊申,公会齐侯、郑伯于老桃。壬戌,公败宋师于菅。庚午,郑师入郜。

  辛未,归于我。庚辰,郑师入防。辛巳,归于我。

  君子谓:“郑庄公于是乎可谓正矣。以王命讨不庭,不贪其土以劳王爵,正之体也。”

  蔡人、卫人、郕人不会王命。

  秋七月庚寅,郑师入郊。犹在郊,宋人、卫人入郑。蔡人从之,伐戴。八月壬戌,郑伯围戴。癸亥,克之,取三师焉。宋、卫既入郑,而以伐戴召蔡人,蔡人怒,故不和而败。

  九月戊寅,郑伯入宋。

  冬,齐人、郑人入郕,讨违王命也。

  

  

  !隐公十一年

  【经】十有一年春,滕侯、薛侯来朝。夏,公会郑伯于时来。秋七月壬午,公及齐侯、郑伯入许。冬十有一月壬辰,公薨。

  

  【传】十一年春,滕侯、薛侯来朝,争长。薛侯曰:“我先封。”滕侯曰:“我,周之卜正也。薛,庶姓也,我不可以后之。”

  公使羽父请于薛侯曰:“君与滕君辱在寡人。周谚有之曰:‘山有木,工则度之;宾有礼,主则择之。’周之宗盟,异姓为后。寡人若朝于薛,不敢与诸任齿。君若辱贶寡人,则愿以滕君为请。”

  薛侯许之,乃长滕侯。

  夏,公会郑伯于郲,谋伐许也。

  郑伯将伐许,五月甲辰,授兵于大宫。公孙阏与颍考叔争车,颍考叔挟辀以走,子都拔棘以逐之,及大逵,弗及,子都怒。

  秋七月,公会齐侯、郑伯伐许。庚辰,傅于许,颍考叔取郑伯之旗蝥弧以先登。子都自下射之,颠。瑕叔盈又以蝥弧登,周麾而呼曰:“君登矣!”郑师毕登。壬午,遂入许。许庄公奔卫。

  齐侯以许让公。公曰:“君谓许不共,故从君讨之。许既伏其罪矣,虽君有命,寡人弗敢与闻。”乃与郑人。

  郑伯使许大夫百里奉许叔以居许东偏,曰:“天祸许国,鬼神实不逞于许君,而假手于我寡人。寡人唯是一二父兄不能共亿,其敢以许自为功乎?寡人有弟,不能和协,而使糊其口于四方,其况能久有许乎?吾子其奉许叔以抚柔此民也,吾将使获也佐吾子。若寡人得没于地,天其以礼悔祸于许?无宁兹许公复奉其社稷。唯我郑国之有请谒焉,如旧昏媾,其能降以相从也。无滋他族,实逼处此,以与我郑国争此土也。吾子孙其覆亡之不暇,而况能禋祀许乎?寡人之使吾子处此,不唯许国之为,亦聊以固吾圉也。”

  乃使公孙获处许西偏,曰:“凡而器用财贿,无置于许。我死,乃亟去之。

  吾先君新邑于此,王室而既卑矣,周之子孙日失其序。夫许,大岳之胤也,天而既厌周德矣,吾其能与许争乎?”君子谓:“郑庄公于是乎有礼。礼,经国家,定社稷,序民人,利后嗣者也。

  许无刑而伐之,服而舍之,度德而处之,量力而行之,相时而动,无累后人,可谓知礼矣。”

  郑伯使卒出豭,行出犬鸡,以诅射颍考叔者。君子谓:“郑庄公失政刑矣。

  政以治民,刑以正邪,既无德政,又无威刑,是以及邪。邪而诅之,将何益矣!”王取邬、刘、功蒍、邗之田于郑,而与郑人苏忿生之田温、原、絺、樊、隰郕、欑茅、向、盟、州、陉、隤、怀。君子是以知桓王之失郑也。恕而行之,德之则也,礼之经也。己弗能有而以与人,人之不至,不亦宜乎?郑、息有违言,息侯伐郑。郑伯与战于竟,息师大败而还。君子是以知息之将亡也。不度德,不量力,不亲亲,不征辞,不察有罪,犯五不韪而以伐人,其丧师也,不亦宜乎!冬十月,郑伯以虢师伐宋。壬戌,大败宋师,以报其入郑也。宋不告命,故不书。凡诸侯有命,告则书,不然则否。师出臧否,亦如之。虽及灭国,灭不告败,胜不告克,不书于策。羽父请杀桓公,将以求大宰。公曰:“为其少故也,吾将授之矣。使营菟裘,吾将老焉。”羽父惧,反谮公于桓公而请弑之。公之为公子也,与郑人战于狐壤,止焉。郑人囚诸尹氏,赂尹氏而祷于其主钟巫,遂与尹氏归而立其主。十一月,公祭钟巫,齐于社圃,馆于寪氏。壬辰,羽父使贼弑公于寪氏,立桓公而讨寪氏,有死者。不书葬,不成丧也。

  雍也第六

  

  子曰:“雍也,可使南面。”

  仲弓问子桑伯子。子曰:“可也,简。”

  仲弓曰:“居敬而行简,以临其民,不亦可乎?居简而行简,无乃大简乎?”子曰:“雍之言然!”哀公问:“弟子孰为好学?”孔子对曰:“有颜回者好学,不迁怒,不贰过。

  不幸短命死矣。今也则亡,未闻好学者也。”

  子华使于齐,冉子为其母请粟。子曰:“与之釜。”请益。曰:“与之庾。”

  冉子与之粟五秉。

  子曰:“赤之适齐也,乘肥马,衣轻裘。吾闻之也:君子周急不继富。”

  原思为之宰,与之粟九百,辞。子曰:“毋!以与尔邻里乡党乎。”

  子谓仲弓曰:“犁牛之子骍且角。虽欲勿用,山川其舍诸?”子曰:“回也,其心三月不违仁,其余则日月至焉而已矣。”

  季康子问:“仲由可使从政也与?”子曰:“由也果,于从政乎何有?”曰:“赐也可使从政也与?”曰:“赐也达,于从政乎何有?”曰:“求也可使从政也与?”曰:“求也艺,于从政乎何有?”季氏使闵子骞为费宰。闵子骞曰:“善为我辞焉!如有复我者,则吾必在汶上矣。”

  伯牛有疾,子问之,自牖执其手,曰:“亡之,命矣夫!斯人也而有斯疾也!斯人也而有斯疾也!”子曰:“贤哉回也!一箪食,一瓢饮,在陋巷,人不堪其忧,回也不改其乐。

  贤哉回也!”冉求曰:“非不说子之道,力不足也。”子曰:“力不足者,中道而废,今女画。”

  子谓子夏曰:“女为君子儒,无为小人儒。”

  子游为武城宰。子曰:“女得人焉耳乎?”曰:“有澹台灭明者,行不由径,非公事,未尝至于偃之室也。”

  子曰:“孟之反不伐,奔而殿,将入门,策其马曰:‘非敢后也,马不进也。’”子曰:“不有祝鮀之佞,而有宋朝之美,难乎免于今之世矣。”

  子曰:“谁能出不由户?何莫由斯道也?”子曰:“质胜文则野,文胜质则史。文质彬彬,然后君子。”

  子曰:“人之生也直,罔之生也幸而免。”

  子曰:“知之者,不如好之者;好之者,不如乐之者。”

  子曰:“中人以上,可以语上也;中人以下,不可以语上也。”

  樊迟问知。子曰:“务民之义,敬鬼神而远之,可谓知矣。”

  问仁。曰:“仁者先难而后获,可谓仁矣。”

  子曰:“知者乐水,仁者乐山;知者动,仁者静;知者乐,仁者寿。”

  子曰:“齐一变,至于鲁;鲁一变,至于道。”

  子曰:“觚不觚,觚哉!觚哉!”宰我问曰:“仁者,虽告之曰:‘井有仁焉。’其从之也?”子曰:“何为其然也?君子可逝也,不可陷也;可欺也,不可罔也。”

  子曰:“君子博学于文,约之以礼,亦可以弗畔矣夫!”子见南子,子路不说。夫子矢之曰:“予所否者,天厌之!天厌之!”子曰:“中庸之为德也,其至矣乎!民鲜久矣。”

  子贡曰:“如有博施于民而能济众,何如?可谓仁乎?”子曰:“何事于仁,必也圣乎!尧、舜其犹病诸!夫仁者,己欲立而立人;己欲达而达人。能近取譬,可谓仁之方也已。”

  
  !虞书 尧典第一

  昔在帝尧,聪明文思,光宅天下。将逊于位,让于虞舜,作《尧典》。

  曰若稽古帝尧,曰放勋,钦、明、文、思、安安,允恭克让,光被四表,格于上下。克明俊德,以亲九族。九族既睦,平章百姓。百姓昭明,协和万邦。黎民于变时雍。

  乃命羲和,钦若昊天,历象日月星辰,敬授人时。分命羲仲,宅嵎夷,曰旸谷。寅宾出日,平秩东作。日中,星鸟,以殷仲春。厥民析,鸟兽孳尾。申命羲叔,宅南交。平秩南为,敬致。日永,星火,以正仲夏。厥民因,鸟兽希革。分命和仲,宅西,曰昧谷。寅饯纳日,平秩西成。宵中,星虚,以殷仲秋。厥民夷,鸟兽毛毨。申命和叔,宅朔方,曰幽都。平在朔易。日短,星昴,以正仲冬。

  厥民隩,鸟兽鹬毛。帝曰:“咨!汝羲暨和。期三百有六旬有六日,以闰月定四时,成岁。允厘百工,庶绩咸熙。”

  帝曰:“畴咨若时登庸?”放齐曰:“胤子朱启明。”帝曰:“吁!嚣讼可乎?”帝曰:“畴咨若予采?”驩兜曰:“都!共工方鸠僝功。”帝曰:“吁!静言庸违,象恭滔天。”

  帝曰:“咨!四岳,汤汤洪水方割,荡荡怀山襄陵,浩浩滔天。下民其咨,有能俾乂?”佥曰:“於!鲧哉。”帝曰:“吁!咈哉,方命圮族。”岳曰:“异哉!试可乃已。”

  帝曰,“往,钦哉!”九载,绩用弗成。

  帝曰:“咨!四岳。朕在位七十载,汝能庸命,巽朕位?”岳曰:“否德忝帝位。”曰:“明明扬侧陋。”师锡帝曰:“有鳏在下,曰虞舜。”帝曰:“俞?予闻,如何?”岳曰:“瞽子,父顽,母嚣,象傲;克谐以孝,烝烝乂,不格奸。”

  帝曰:“我其试哉!女于时,观厥刑于二女。”厘降二女于妫汭,嫔于虞。帝曰:“钦哉!”

  !虞书 舜典第二

  虞舜侧微,尧闻之聪明,将使嗣位,历试诸难,作《舜典》。

  曰若稽古帝舜,曰重华协于帝。濬哲文明,温恭允塞,玄德升闻,乃命以位。

  慎徽五典,五典克从;纳于百揆,百揆时叙;宾于四门,四门穆穆;纳于大麓,烈风雷雨弗迷。帝曰:“格!汝舜。询事考言,乃言底可绩,三载。汝陟帝位。”

  舜让于德,弗嗣。正月上日,受终于文祖。在璿玑玉衡,以齐七政。肆类于上帝,禋于六宗,望于山川,遍于群神。辑五瑞。既月乃日,觐四岳群牧,班瑞于群后。

  岁二月,东巡守,至于岱宗,柴。望秩于山川,肆觐东后。协时月正日,同律度量衡。修五礼、五玉、三帛、二生、一死贽。如五器,卒乃复。五月南巡守,至于南岳,如岱礼。八月西巡守,至于西岳,如初。十有一月朔巡守,至于北岳,如西礼。归,格于艺祖,用特。五载一巡守,群后四朝。敷奏以言,明试以功,车服以庸。

  肇十有二州,封十有二山,濬川。

  象以典刑,流宥五刑,鞭作官刑,扑作教刑,金作赎刑。眚灾肆赦,怙终贼刑。钦哉,钦哉,惟刑之恤哉!流共工于幽州,放欢兜于崇山,窜三苗于三危,殛鲧于羽山,四罪而天下咸服。

  二十有八载,帝乃殂落。百姓如丧考妣,三载,四海遏密八音。

  月正元日,舜格于文祖,询于四岳,辟四门,明四目,达四聪。“咨,十有二牧!”曰,“食哉惟时!柔远能迩,惇德允元,而难任人,蛮夷率服。”

  舜曰:“咨,四岳!有能奋庸熙帝之载,使宅百揆亮采,惠畴?”佥曰:“伯禹作司空。”帝曰:“俞,咨!禹,汝平水土,惟时懋哉!”禹拜稽首,让于稷、契暨皋陶。帝曰:“俞,汝往哉!”帝曰:“弃,黎民阻饥,汝后稷,播时百谷。”

  帝曰:“契,百姓不亲,五品不逊。汝作司徒,敬敷五教,在宽。”

  帝曰:“皋陶,蛮夷猾夏,寇贼奸宄。汝作士,五刑有服,五服三就。五流有宅,五宅三居。惟明克允!”帝曰:“畴若予工?”佥曰:“垂哉!”帝曰:“俞,咨!垂,汝共工。”

  垂拜稽首,让于殳斨暨伯与。”帝曰:“俞,往哉!汝谐。”

  帝曰:“畴若予上下草木鸟兽?”佥曰:“益哉!”帝曰:“俞,咨!益,汝作朕虞。”益拜稽首,让于朱虎、熊罴。帝曰:“俞,往哉!汝谐。”

  帝曰:“咨!四岳,有能典朕三礼?’佥曰:“伯夷!”帝曰:“俞,咨!伯,汝作秩宗。夙夜惟寅,直哉惟清。”伯拜稽首,让于夔、龙。帝曰:“俞,往,钦哉!”帝曰:“夔!命汝典乐,教胄子,直而温,宽而栗,刚而无虐,简而无傲。

  诗言志,歌永言,声依永,律和声。八音克谐,无相夺伦,神人以和。”夔曰:“於!予击石拊石,百兽率舞。”

  帝曰:“龙,朕塈谗说殄行,震惊朕师。命汝作纳言,夙夜出纳朕命,惟允!”帝曰:“咨!汝二十有二人,钦哉!惟时亮天功。”三载考绩,三考,黜陟幽明,庶绩咸熙。分北三苗。

  舜生三十征,庸三十,在位五十载,陟方乃死。

  〖汩作 九共 槀饫〗帝釐下土,方设居方,别生分类。作《汩作》、《九共》九篇、《槀饫》。

  !虞书 大禹谟第三

  皋陶矢厥谟,禹成厥功,帝舜申之。作《大禹》、《皋陶谟》、《益稷》。

  曰若稽古大禹,曰文命敷于四海,祗承于帝。曰:“后克艰厥后,臣克艰厥臣,政乃乂,黎民敏德。”

  帝曰:“俞!允若兹,嘉言罔攸伏,野无遗贤,万邦咸宁。稽于众,舍己从人,不虐无告,不废困穷,惟帝时克。”

  益曰:“都,帝德广运,乃圣乃神,乃武乃文。皇天眷命,奄有四海为天下君。”

  禹曰:“惠迪吉,从逆凶,惟影响。”

  益曰:“吁!戒哉!儆戒无虞,罔失法度。罔游于逸,罔淫于乐。任贤勿贰,去邪勿疑。疑谋勿成,百志惟熙。罔违道以干百姓之誉,罔咈百姓以从己之欲。

  无怠无荒,四夷来王。”

  禹曰:“於!帝念哉!德惟善政,政在养民。水、火、金、木、土、谷,惟修;正德、利用、厚生、惟和。九功惟叙,九叙惟歌。戒之用休,董之用威,劝之以九歌俾勿坏。”

  帝曰:“俞!地平天成,六府三事允治,万世永赖,时乃功。”

  帝曰:“格,汝禹!朕宅帝位三十有三载,耄期倦于勤。汝惟不怠,总朕师。”

  禹曰:“朕德罔克,民不依。皋陶迈种德,德乃降,黎民怀之。帝念哉!念兹在兹,释兹在兹,名言兹在兹,允出兹在兹,惟帝念功。”

  帝曰:“皋陶,惟兹臣庶,罔或干予正。汝作士,明于五刑,以弼五教。期于予治,刑期于无刑,民协于中,时乃功,懋哉。”

  皋陶曰:“帝德罔愆,临下以简,御众以宽;罚弗及嗣,赏延于世。宥过无大,刑故无小;罪疑惟轻,功疑惟重;与其杀不辜,宁失不经;好生之德,洽于民心,兹用不犯于有司。”

  帝曰:“俾予从欲以治,四方风动,惟乃之休。”

  帝曰:“来,禹!降水儆予,成允成功,惟汝贤。克勤于邦,克俭于家,不自满假,惟汝贤。汝惟不矜,天下莫与汝争能。汝惟不伐,天下莫与汝争功。予懋乃德,嘉乃丕绩,天之历数在汝躬,汝终陟元后。人心惟危,道心惟微,惟精惟一,允执厥中。无稽之言勿听,弗询之谋勿庸。可爱非君?可畏非民?众非元后,何戴?后非众,罔与守邦?钦哉!慎乃有位,敬修其可愿,四海困穷,天禄永终。惟口出好兴戎,朕言不再。”

  禹曰:“枚卜功臣,惟吉之从。”

  帝曰:“禹!官占惟先蔽志,昆命于元龟。朕志先定,询谋佥同,鬼神其依,龟筮协从,卜不习吉。”禹拜稽首,固辞。

  帝曰:“毋!惟汝谐。”

  正月朔旦,受命于神宗,率百官若帝之初。

  帝曰:“咨,禹!惟时有苗弗率,汝徂征。”

  禹乃会群后,誓于师曰;“济济有众,咸听朕命。蠢兹有苗,昏迷不恭,侮慢自贤,反道败德,君子在野,小人在位,民弃不保,天降之咎,肆予以尔众士,奉辞伐罪。尔尚一乃心力,其克有勋。”

  三旬,苗民逆命。益赞于禹曰:“惟德动天,无远弗届。满招损,谦受益,时乃天道。帝初于历山,往于田,日号泣于旻天,于父母,负罪引慝。祗载见瞽叟,夔夔斋栗,瞽亦允若。至諴感神,矧兹有苗。”

  禹拜昌言曰:“俞!”班师振旅。帝乃诞敷文德,舞干羽于两阶,七旬有苗格。

  !虞书 皋陶谟第四

  曰若稽古皋陶曰:“允迪厥德,谟明弼谐。”禹曰:“俞,如何?”皋陶曰:“都!慎厥身,修思永。惇叙九族,庶明励翼,迩可远在兹。”禹拜昌言曰:“俞!”皋陶曰:“都!在知人,在安民。”禹曰:“吁!咸若时,惟帝其难之。知人则哲,能官人。安民则惠,黎民怀之。能哲而惠,何忧乎驩兜?何迁乎有苗?何畏乎巧言令色孔壬?”皋陶曰:“都!亦行有九德。亦言,其人有德,乃言曰,载采采。”禹曰:“何?”皋陶曰:“宽而栗,柔而立,愿而恭,乱而敬,扰而毅,直而温,简而廉,刚而塞,强而义。彰厥有常,吉哉!日宣三德,夙夜浚明有家;日严祗敬六德,亮采有邦。翕受敷施,九德咸事,俊乂在官。百僚师师,百工惟时,抚于五辰,庶绩其凝。无教逸欲,有邦兢兢业业,一日二日万几。无旷庶官,天工,人其代之。天叙有典,敕我五典五惇哉!天秩有礼,自我五礼有庸哉!同寅协恭和衷哉!天命有德,五服五章哉!天讨有罪,五刑五用哉!政事懋哉懋哉!”“天聪明,自我民聪明。天明畏,自我民明威。达于上下,敬哉有土!”皋陶曰:“朕言惠可厎行?”禹曰:“俞!乃言厎可绩。”皋陶曰:“予未有知,思曰赞赞襄哉!”

        !虞书 益稷第五

  帝曰:“来,禹!汝亦昌言。”禹拜曰:“都!帝,予何言?予思日孜孜。”

  皋陶曰:“吁!如何?”禹曰:“洪水滔天,浩浩怀山襄陵,下民昏垫。予乘四载,随山刊木,暨益奏庶鲜食。予决九川,距四海,浚畎浍距川;暨稷播,奏庶艰食鲜食。懋迁有无,化居。烝民乃粒,万邦作乂。”皋陶曰:“俞!师汝昌言。”

  禹曰:“都!帝,慎乃在位。”帝曰:“俞!禹曰:“安汝止,惟几惟康。

  其弼直,惟动丕应。徯志以昭受上帝,天其申命用休。”

  帝曰:“吁!臣哉邻哉!邻哉臣哉!”禹曰:“俞!”帝曰:“臣作朕股肱耳目。予欲左右有民,汝翼。予欲宣力四方,汝为。予欲观古人之象,日、月、星辰、山、龙、华虫、,作会;宗彝、藻、火、粉米、黼、黻,絺绣,以五采彰施于五色,作服,汝明。予欲闻六律五声八音,在治忽,以出纳五言,汝听。予违,汝弼,汝无面从,退有后言。钦四邻!庶顽谗说,若不在时,侯以明之,挞以记之,书用识哉,欲并生哉!工以纳言,时而飏之,格则承之庸之,否则威之。”

  禹曰:“俞哉!帝光天之下,至于海隅苍生,万邦黎献,共惟帝臣,惟帝时举。敷纳以言,明庶以功,车服以庸。谁敢不让,敢不敬应?帝不时敷,同,日奏,罔功。无若丹朱傲,惟慢游是好,傲虐是作。罔昼夜頟頟,罔水行舟。朋淫于家,用殄厥世。予创若时,娶于涂山,辛壬癸甲。启呱呱而泣,予弗子,惟荒度土功。弼成五服,至于五千。州十有二师,外薄四海,咸建五长,各迪有功,苗顽弗即工,帝其念哉!”帝曰:“迪朕德,时乃功,惟叙。”

  皋陶方祗厥叙,方施象刑,惟明。

  夔曰:“戛击鸣球、搏拊、琴、瑟、以咏。”祖考来格,虞宾在位,群后德让。下管鼗鼓,合止柷敔,笙镛以间。鸟兽跄跄;箫韶九成,凤皇来仪。夔曰:“於!予击石拊石,百兽率舞。”

  庶尹允谐,帝庸作歌。曰:“敕天之命,惟时惟几。”乃歌曰:“股肱喜哉!元首起哉!百工熙哉!”皋陶拜手稽首飏言曰:“念哉!率作兴事,慎乃宪,钦哉!屡省乃成,钦哉!”乃赓载歌曰:“元首明哉,股肱良哉,庶事康哉!”又歌曰:“元首丛脞哉,股肱惰哉,万事堕哉!”帝拜曰:“俞,往钦哉!”
 

  《礼记玉藻》

  天子玉藻,十有二旒,前后邃延,龙卷以祭。玄端而朝日于东门之外,听朔于南门之外。闰月,则阖门左扉,立于其中,皮弁以日视朝,遂以食,日中而馂,奏而食。日少牢,朔月大牢。五饮,上水、浆、酒、醴、酏。卒食,玄端而居。动则左史书之,言则右史书之,御瞽几声之上下。年不顺成,则天子素服,乘素车,食无乐。

  

  诸侯玄端以祭,裨冕以朝,皮弁以听朔于大庙,朝服以日视朝于内朝。朝,辨色始入,君日出而视之,退适路寝听政,使人视大夫。大夫退,然后适小寝,释服。又朝服以食,特牲三俎,祭肺。夕深衣,祭牢肉,朔月少牢,五俎四簋,子卯,稷食菜羹,夫人与君同庖。君无故不杀牛,大夫无故不杀羊,士无故不杀犬豕。君子远庖厨,凡有血气之类,弗身践也。至于八月不雨,君不举,年不顺成,君衣布搢本,关梁不租,山泽列而不赋,土功不兴,大夫不得造车马。

  

  卜人定龟,史定墨,君定体。

  

  君羔幦虎犆,大夫齐车,鹿幦豹犆,朝车,士齐车,鹿幦豹犆。

  

  君子之居恒当户,寝恒东首。若有疾风、迅雷、甚雨,则必变,虽夜必兴,衣服冠而坐。日五盥,沐稷而靧梁,栉用樿栉,发晞用象栉,进禨进羞,工乃升歌。浴用二巾,上絺下绤。出杅,履蒯席。连用汤,履蒲席。衣布晞身,乃屦。进饮,将适公所,宿齐戒,居外寝,沐浴。史进象笏,书思对命。既服,习容观玉声乃出。揖私朝,辉如也,登车则有光矣。

  

  天子搢珽,方正于天下也。诸侯荼,前诎后直,让于天子也。大夫前诎后诎,无所不让也。

  

  侍坐则必退席,不退,则必引而去君之党。登席不由前,为躐席,徒坐不尽席尺。读书,食,则齐。豆,去席尺。

  

  若赐之食,而君客之,则命之祭,然后祭。先饭,辩尝羞,饮而俟,若有尝羞者,则俟君之食然后食,饭饮而俟。君命之羞,羞近者,命之品尝之,然后唯所欲。凡尝远食,必顺近食。君未覆手,不敢飧。君既食,又饭飧。饭飧者,三饭也。君既彻,执饭与酱,乃出授从者。

  

  凡侑食,不尽食。食于人不饱。唯水酱不祭,若祭为已●卑。

  

  君若赐之爵,则越席再拜稽首受。登席,祭之,饮卒爵而俟。君卒爵,然后授虚爵。君子之饮酒也,受一爵而色洒如也,二爵而言言斯,礼已三爵而油油以退。退则坐。取屦,隐辟而后屦,坐左纳右,坐右纳左。

  

  凡尊,必上玄酒,唯君面尊,唯飨野人皆酒。大夫侧尊用棜,士侧尊用禁。

  

  始冠,缁布冠。自诸侯下达,冠而敝之可也。玄冠朱组缨,天子之冠也。缁布冠缋緌,诸侯之冠也。玄冠丹组缨,诸侯之齐冠也。玄冠綦组缨,士之齐冠也。缟冠玄武,子姓之冠也。缟冠素纰,既祥之冠也。垂緌五寸,惰游之士也。玄冠缟武,不齿之服也。居冠属武,自天子下达,有事然后緌。五十不散送,亲没不髦,大帛不緌。玄冠紫緌,自鲁桓公始也。

  

  朝玄端,夕深衣,深衣三袪,缝齐倍要,衽当旁,袂可以回肘,长中继揜尺,袷二寸,袪尺二寸,缘广寸半。以帛里布,非礼也。

  

  士不衣织,无君者不贰采。衣正色,裳间色,非列采不入公门,振絺绤不入公门,表裘不入公门,袭裘不入公门。

  

  纩为茧,缊为袍,襌为絅,帛为褶。

  

  朝服之以缟也,自季康子始也。孔子曰:“朝服而朝,卒朔然后服之。”曰:“国家未道,则不充其服焉。”

  

  唯君有黼裘以誓省,大裘非古也。

  

  君衣狐白裘,锦衣以裼之,君之右虎裘,厥左狼裘。士不衣狐白,君子狐青裘豹褎,玄绡衣以裼之。麛裘青豻褎,绞衣以裼之。羔裘豹饰,锱衣以裼之。狐裘,黄衣以裼之。锦衣狐裘,诸侯之服也。犬羊之裘不裼,不文饰也,不裼,裘之裼也,见美也,吊则袭,不尽饰也。君在则裼,尽饰也。服之袭也,充美也,是故尸袭。执玉龟,袭,无事则裼,弗敢充也。

  

  笏天子以球玉,诸侯以象,大夫以鱼须文竹,士竹本,象可也。见于天子,与射,无说笏。入大庙说笏,非古也。小功不说笏,当事免则说之。既搢必盥,虽有执于朝,弗有盥矣。凡有指画于君前,用笏。造受命于君前,则书于笏。笏,毕用也,因饰焉。笏度,二尺有六寸,其中博三寸,其杀六分而去一。

  

  而素带,终辟。大夫素带,辟垂。士练带,率下辟。居士锦带,弟子缟带,幷纽约用组三寸,长齐于带。绅长制,士三尺,有司二尺有五寸。子游曰:“参分带下,绅居二焉。绅、鞸、结,三齐。”

  

  大夫大带四寸,杂带。君朱绿,大夫玄华。士缁辟二寸,再缭四寸。凡带有率无箴功。肆束及带,勤者有事则收之,走则拥之。

  

  鞸,君朱,大夫素,士爵韦。圜杀直,天子直。公侯前后方,大夫前方后挫角,士前后正。鞸,下广二尺,上广一尺,长三尺,其颈五寸,肩革带,博二寸。

  

  一命缊韨幽衡,再命赤韨幽衡,三命赤韨葱衡。

  

  王后袆衣,夫人揄狄,君命屈狄,再命袆衣,一命襢衣,士褖衣。唯世妇命于奠茧,其它则皆从男子。

  

  凡侍于君,绅垂,足如履齐,颐溜垂拱,视下而听上,视带以及袷,听乡任左。

  

  凡君召以三节,二节以走,一节以趋。在官不俟屦,在外不俟车。

  

  士于大夫,不敢拜迎,而拜送。士于尊者先拜,进面,荅之拜则走。

  

  士于君所言大夫,没矣则称谥若字,名士。与大夫言,名士,字大夫。于大夫所,有公讳,无私讳。凡祭不讳,庙中不讳,教学临文不讳。

  

  古之君子必佩玉,右征角,左宫羽,趋以采齐,行以肆夏,周还中规,折还中矩,进则揖之,退则扬之,然后玉锵鸣也。故君子在车则闻鸾和之声,行则鸣佩玉,是以非辟之心无自入也。

  

  君在不佩玉,左结佩,右设佩。居则设佩,朝则结佩。齐则綪结佩,而爵鞸。凡带必有佩玉,唯丧否。佩玉有冲牙。君子无故,玉不去身,君子于玉比德焉。天子佩白玉而玄组绶,公侯佩山玄玉而朱组绶,大夫佩水苍玉而纯组绶,世子佩瑜玉而綦织绶,士佩瓀玟而缊组绶。孔子佩象环五寸而綦组绶。

  

  童子之节也,缁布衣,锦缘,锦绅幷纽,锦束发,皆朱锦也。童子不裘不帛,不屦絇,无缌服,听事不麻。无事则立主人之北,南面见先生,从人而入。

  

  侍食于先生,异爵者,后祭先饭。客祭,主人辞曰:“不足祭也。”客飧,主人辞以疏。主人自置其酱,则客自彻之。一室之人,非宾客,一人彻。壹食之人,一人彻。凡燕食,妇人不彻。

  

  食枣桃李,弗致于核。瓜祭上环,食中,弃所操。凡食果实者后君子,火孰者先君子。

  

  有庆,非君赐不贺。有忧者。(此下有缺文)

  

  孔子食于季氏,不辞,不食肉而飧。

  

  君赐车马,乘以拜赐,衣服,服以拜赐。君未有命,弗敢即乘服也。君赐,稽首据掌致诸地。酒肉之赐弗再拜。凡赐,君子与小人不同日。

  

  凡献于君,大夫使宰,士亲,皆再拜稽首送之。膳于君,有荤桃茢,于大夫去茢,于士去荤,皆造于膳宰。大夫不亲拜,为君之荅已也。

  

  大夫拜赐而退,士待诺而退,又拜弗荅拜。大夫亲赐士,士拜受,又拜于其室,衣服弗服以拜。敌者不在,拜于其室。凡在尊者有献,而弗敢以闻。士于大夫不承贺,下大夫于上大夫承贺。亲在,行礼于人称父。人或赐之,则称父拜之。

  

  礼不盛,服不充,故大裘不裼,乘路车不式。

  

  父命呼,唯而不诺。手执业则投之,食在口则吐之,走而不趋。亲老,出不易方,复不过时。亲癠,色容不盛,此孝子之疏节也。父没而不能读父之书,手泽存焉尔。母没而杯圈不能饮焉,口泽之气存焉尔。

  

  君入门,介拂闑,大夫中枨与闑之间,士介拂枨。

  

  宾入不中门,不履阈。公事自闑西,私事自闑东。

  

  君与尸行接武,大夫继武,士中武。徐趋皆用是,疾趋则欲发,而手足毋移,圈豚行,不举足,齐如流。席上亦然。端行,颐溜如矢,弁行,剡剡起屦,执龟玉,举前曳踵,蹜蹜如也。

  

  凡行容惕惕。

  

  庙中齐齐,朝廷济济翔翔。

  

  君子之容舒迟,见所尊者齐遫,足容重,手容恭,目容端,口容止,声容静,头容直,气容肃,立容德,色容庄,坐如尸。

  

  燕居告温温。

  

  凡祭,容貌颜色如见所祭者。

  

  丧容累累,色容颠颠,视容瞿瞿梅梅,言容茧茧。

  

  戎容暨暨,言容咯咯,色容厉肃,视容清明,立容辨卑。毋讇,头颈必中,山立,时行,盛气颠实扬休,玉色。

  

  凡自称,天子曰予一人,伯曰天子之力臣。诸侯之于天子,曰某土之守臣某,其在边邑,曰某屏之臣某,其于敌以下,曰寡人。小国之君曰孤,摈者亦曰孤。上大夫曰下臣,摈者曰寡君之老,下大夫自名,摈者曰寡大夫,世子自名,摈者曰寡君之适,公子曰臣孽,士曰传遽之臣。于大夫曰外私。大夫私事使,私人摈则称名,公士摈则曰寡大夫。寡君之老,大夫有所往,必与公士为宾也。

  
  


  《礼记月令》

  孟春之月,日在营室,昏参中,旦尾中,其日甲乙,其帝大皞,其神句芒,其虫鳞,其音角,律中大蔟,其数八,其味酸,其臭膻,其祀户,祭先脾。

  

  东风解冻,蛰虫始振,鱼上冰,獭祭鱼,鸿鴈来。

  

  天子居青阳左个,乘鸾路,驾仓龙,载青旗,衣青衣,服仓玉,食麦与羊,其器疏以达。

  

  是月也,以立春。先立春三日,大史谒之天子,曰:“某日立春,盛德在木。”天子乃齐。立春之日,天子亲帅三公、九卿、诸侯、大夫以迎春于东郊。还反,赏公卿诸侯大夫于朝。

  

  命相布德和令,行庆施惠,下及兆民。庆赐遂行,毋有不当。

  

  乃命大史,守典奉法,司天日月星辰之行,宿离不贷,毋失经纪,以初为常。

  

  是月也,天子乃以元日祈谷于上帝,乃择元辰。天子亲载耒耜,措之于参保介之御间,帅三公、九卿、诸侯、大夫躬耕帝借。天子三推,三公五推,卿诸侯九推。反,爵于大寝,三公、九卿、诸侯、大夫皆御,命曰劳酒。

  

  是月也,天气下降,地气上腾,天地和同,草木萌动。王命布农事,命田舍东郊,皆修封疆,审端经术,善相丘陵,阪险,原隰,土地所宜,五谷所殖,以教道。民必躬亲之,田事既饬,先定准直,农乃不惑。

  

  是月也,命乐正入学习舞,乃修祭典,命祀山林川泽,牺牲毋用牝。

  

  禁止伐木,毋覆巢,毋杀孩虫、胎夭飞鸟,毋麛毋卵,毋聚大众,毋置城郭,掩骼埋胔。

  

  是月也,不可以称兵,称兵必天殃。兵戎不起,不可从我始。毋变天之道,毋绝地之理,毋乱人之纪。

  

  孟春行夏令,则雨水不时,草木蚤落,国时有恐。行秋令,则其民大疫,猋风暴雨总至,藜莠蓬蒿并兴。行冬令,则水潦为败,雪霜大挚,首种不入。

  

  仲春之月,日在奎,昏弧中,旦建星中。其日甲乙,其帝大皞,其神句芒,其虫鳞,其音角,律中夹钟,其数八,其味酸,其臭膻,其祀户,祭先脾。

  

  始雨水,桃始华,仓庚鸣,鹰化为鸠。

  

  天子居青阳大庙,乘鸾路,驾仓龙,载青旗,衣青衣,服仓玉,食麦与羊,其器疏以达。是月也,安萌牙,养幼少,存诸孤。择元日,命民社。命有司,省囹圄,去桎梏,毋肆掠,止狱讼。

  

  是月也,玄鸟至。至之日,以大牢祠于高禖,天子亲往,后妃帅九嫔御。乃礼天子所御,带以弓韣,授以弓矢,于高禖之前。

  

  是月也,日夜分,雷乃发声,始电,蛰虫咸动,启户始出。先雷三日,奋木铎以令兆民曰:“雷将发声,有不戒其容止者,生子不备,必有凶灾。”日夜分,则同度量,钧衡石,角斗甬,正权概。

  

  是月也,耕者少舍,乃修阖扇,寝庙毕备。毋作大事,以妨农之事。是月也,毋竭川泽,毋漉陂池,毋焚山林。

  

  天子乃鲜羔开冰,先荐寝庙。

  

  上丁,命乐正习舞,释菜。天子乃帅三公、九卿、诸侯、大夫亲往视之。仲丁,又命乐正入学习舞。

  

  是月也,祀不用牺牲,用圭璧,更皮币。

  

  仲春行秋令,则其国大水,寒气摠,至寇戎来征。行冬令,则阳气不胜,麦乃不熟,民多相掠。行夏令,则国乃大旱,暖气早来,虫螟为害。

  

  季春之月,日在胃,昏七星中,旦牵牛中。其日甲乙,其帝大皞,其神句芒,其虫鳞,其音角,律中姑洗,其数八,其味酸,其臭膻,其祀户,祭先脾。

  

  桐始华,田鼠化为鴽,虹始见,萍始生。

  

  天子居青阳石个,乘鸾路,驾仓龙,载青旗,衣青衣,服仓玉,食麦与羊,其器疏以达。

  

  是月也,天子乃荐鞠衣于先帝。命舟牧覆舟,五覆五反,乃告舟备具于天子焉。天子始乘舟,荐鲔于寝庙,乃为麦祈实。

  

  是月也,生气方盛,阳气发泄,句者毕出,萌者尽达,不可以内。天子布德行惠,命有司,发仓廪,赐贫穷,振乏绝,开府库,出币帛,周天下,勉诸侯,聘名士,礼贤者。

  

  是月也,命司空曰:“时雨将降,下水上腾,循行国邑,周视原野,修利堤防,道达沟渎,开通道路,毋有障塞。”田猎罝罘、罗罔、毕翳、餧兽之药,毋出九门。

  

  是月也,命野虞无伐桑柘。鸣鸠拂其羽,戴胜降于桑,具曲植蘧筐,后妃齐戒,亲东乡躬桑,禁妇女毋观,省妇使,以劝蚕事。蚕事既登,分茧称丝效功,以共郊庙之服,无有敢惰。

  

  是月也,命工师,令百工,审五库之量,金、铁、皮、革、筋、角、齿、羽、箭、干、脂、胶、丹、漆,毋或不良。

  

  百工咸理,监工日号,毋悖于时,毋或作为淫巧,以荡上心。

  

  是月之末,择吉日大合乐,天子乃率三公、九卿、诸侯、大夫亲往视之。

  

  是月也,乃合累牛腾马,游牝于牧。牺牲驹犊,举书其数。

  

  命国难,九门磔攘,以毕春气。

  

  季春行冬令,则寒气时发,草木皆肃,国有大恐。行夏令,则民多疾疫,时雨不降,山林不收。行秋令,则天多沈阴,淫雨蚤降,兵革并起。

  

  孟夏之月,日在毕,昏翼中,日婺女中。其日丙丁,其帝炎帝,其神祝融,其虫羽,其音征,律中中吕,其数七,其味苦,其臭焦,其祀灶,祭先肺。

  

  蝼蝈鸣,蚯蚓出,王瓜生,苦菜秀。

  

  天子居明堂左个,乘朱路,驾赤马,载赤旗,衣朱衣,服赤玉,食菽与鸡,其器高以粗。

  

  是月也,以立夏。先立夏三日,大史谒之天子曰:“某日立夏,盛德在火。”天子乃齐。立夏之日,天子亲帅三公、九卿、大夫以迎夏于南郊。还反,行赏,封诸侯,庆赐遂行,无不欣说。

  

  乃命乐师,习合礼乐。命太尉,赞桀俊,遂贤良,举长大。行爵出禄,必当其位。

  

  是月也,继长增高,毋有坏堕。毋起土功,毋发大众,毋伐人树。

  

  是月也,天子始絺,命野虞,出行田原,为天子劳农劝民,毋或失时。

  

  命司徒巡行县鄙,命农勉作,毋休于都。

  

  是月也,驱兽毋害五谷,毋大田猎。农乃登麦,天子乃以彘尝麦,先荐寝庙。

  

  是月也,聚畜百药,靡草死,麦秋至,断薄刑,决小罪,出轻系。蚕事毕,后妃献茧,乃收茧税,以桑为均,贵贱长幼如一,以给郊庙之服。

  

  是月也,天子饮酎,用礼乐。

  

  孟夏行秋令,则苦雨数来,五谷不滋,四鄙入保。行冬令,则草木蚤枯,后乃大水,败其城郭。行春令,则蝗虫为灾,暴风来格,秀草不实。

  

  仲夏之月,日在东井,昏亢中,旦危中。其日丙丁,其帝炎帝,其神祝融,其虫羽,其音征,律中蕤宾,其数七,其味苦,其臭焦,其祀灶,祭先肺。

  

  小暑至,螳螂生,鵙始鸣,反舌无声。

  

  天子居明堂太庙,乘朱路,驾赤马,载赤旗,衣朱衣,服赤玉,食菽与鸡,其器高以粗,养壮佼。

  

  是月也,命乐师修鼗鞞鼓,均琴瑟管箫,执干戚戈羽,调竽笙(上“竹”下“也”)簧,饬钟磬柷敔。

  

  命有司为民祈祀山川百源,大雩帝,用盛。乃命百县雩祀百辟卿士有益于民者,以祈谷实。农乃登黍。

  

  是月也,天子乃以雏尝黍,羞以含桃,先荐寝庙。

  

  令民毋艾蓝以染,毋烧灰,毋暴布,门闾毋闭,关市毋索,挺重囚,益其食。

  

  游牝别群,则絷腾驹,班马政。

  

  是月也,日长至,阴阳争,死生分,君子齐戒,处必掩身。毋躁,止声色,毋或进,薄滋味,毋致和,节耆欲,定心气,百官静,事毋刑,以定晏阴之所成。

  

  鹿角解,蝉始鸣,半夏生,木堇荣。

  

  是月也,毋用火南方。可以居高明,可以远眺望,可以升山陵,可以处台榭。

  

  仲夏行冬令,则雹冻伤谷,道路不通,暴兵来至。行春令,则五谷晚熟,百螣时起,其国乃饥。行秋令,则草木零落,果实早成,民殃于疫。

  

  季夏之月,日在柳,昏火中,旦奎中。其日丙丁,其帝炎帝,其神祝融,其虫羽,其音征,律中林钟,其数七,其味苦,其臭焦,其祀灶,祭先肺,温风始至,蟋蟀居壁,鹰乃学习,腐草为萤。

  

  天子居明堂右个,乘朱路,驾赤马,载赤旗,衣朱衣,服赤玉,食菽与鸡,其器高以粗。

  

  命渔师伐蛟,取鼍,登龟,取鼋。命泽人纳材苇。

  

  是月也,命四监大合百县之秩刍,以养牺牲。令民无不咸出其力,以共皇天上帝、名山大川、四方之神,以祠宗庙社稷之灵,以为民祈福。

  

  是月也,命妇官染采。黼黻文章,必以法故,无或差贷。黑黄仓赤,莫不质良,毋敢诈伪。以给郊庙祭祀之服,以为旗章,以别贵贱等给之度。

  

  是月也,树木方盛,乃命虞人入山行木,毋有斩伐,可以兴土功,不可以合诸侯,不可以起兵动众。毋举大事,以摇养气。毋发令而待,以妨神农之事也。水潦盛昌,神农将持功,举大事则有天殃。

  

  是月也,土润溽暑,大雨时行,烧薙行水,利以杀草,如以热汤,可以粪田畴,可以美土疆。

  

  季夏行春令,则谷实鲜落,国多风欬,民乃迁徙。行秋令,则丘隰水潦,禾稼不熟,乃多女灾。行冬令,则风寒不时,鹰隼蚤鸷,四鄙入保。

  

  中央土,其日戊己,其帝黄帝,其神后土,其虫倮,其音宫,律中黄钟之宫,其数五,其味甘,其臭香,其祀中溜,祭先心。

  

  天子居大庙大室,乘大路,驾黄马,载黄旗,衣黄衣,服黄玉,食稷与牛,其器圜以闳。

  

  孟秋之月,日在翼,昏建星中,旦毕中。其日庚辛,其帝少皞,其神蓐收,其虫毛,其音商,律中夷则,其数九,其味辛,其臭腥,其祀门,祭先肝。

  

  凉风至,白露降,寒蝉鸣,鹰乃祭鸟,用始行戮。

  

  天子居总章左个,乘戎路,驾白骆,载白旗,衣白衣,服白玉,食麻与犬,其器廉以深。

  

  是月也,以立秋。先立秋三日,大史谒之天子曰:“某日立秋,盛德在金。”天子乃齐。立秋之日,天子亲帅三公、九卿、诸侯、大夫以迎秋于西郊。还反,赏军帅武人于朝。

  

  天子乃命将帅选士厉兵,简练桀俊。专任有功,以征不义。诘诛暴慢,以明好恶,顺彼远方。

  

  是月也,命有司修法制,缮囹圄,具桎梏,禁止奸,慎罪邪,务搏执。命理瞻伤,察创,视折,审断决,狱讼必端平,戮有罪,严断刑。天地始肃,不可以赢。

  

  是月也,农乃登谷,天子尝新,先荐寝庙。命百官始收敛,完堤防,谨壅塞,以备水潦。修宫室,坏墙垣,补城郭。

  

  是月也,毋以封诸侯,立大官,毋以割地,行大使,出大币。

  

  孟秋行冬令,则阴气大胜,介虫败谷,戎兵乃来。行春令,则其国乃旱,阳气复还,五谷无实。行夏令,则国多火灾,寒热不节,民多疟疾。

  

  仲秋之月,日在角,昏牵牛中,旦觜觿中。其日庚辛,其帝少皞,其神蓐收,其虫毛,其音商,律中南吕,其数九,其味辛,其臭腥,其祀门,祭先肝。

  

  盲风至,鸿鴈来,玄鸟归,群鸟养羞。

  

  天子居总章大庙,乘戎路,驾白骆,载白旗,衣白衣,服白玉,食麻与犬,其器廉以深。

  

  是月也,养衰老,授几杖,行麋粥饮食。

  

  乃命司服具饬衣裳,文绣有恒,制有小大,度有长短,衣服有量,必循其故,冠带有常。

  

  乃命有司申严百刑,斩杀必当,毋或枉桡。枉桡不当,反受其殃。

  

  是月也,乃命宰祝循行牺牲。视全具,案刍豢,瞻肥瘠,察物色,必比类,量小大,视长短,皆中度。五者备当,上帝其飨。

  

  天子乃难,以达秋气。

  

  以犬尝麻,先荐寝庙。

  

  是月也,可以筑城郭,建都邑,穿窦窖,修囷仓。

  

  乃命有司趣民收敛,务畜菜,多积聚。乃劝种麦,毋或失时,其有失时,行罪无疑。

  

  是月也,日夜分,雷始收声,蛰虫坏户,杀气浸盛,阳气日衰,水始涸。

  

  日夜分,则同度量、平权衡、正钧石、角斗甬。

  

  是月也,易关市,来商旅,纳货贿,以便民事。四方来集,远乡皆至,则财不匮,上无乏用,百事乃遂。

  

  凡举大事,毋逆大数,必顺其时,慎因其类。

  

  仲秋行春令,则秋雨不降,草木生荣,国乃有恐。行夏令,则其国乃旱,蛰虫不藏,五谷复生。行冬令,则风灾数起,收雷先行,草木蚤死。

  

  季秋之月,日在房,昏虚中,旦柳中。其日庚辛,其帝少皞,其神蓐收,其虫毛,其音商,律中无射,其数九,其味辛,其臭腥,其祀门,祭先肝。

  

  鸿鴈来宾,爵入大水为蛤,鞠有黄华,豺乃祭兽戮禽。

  

  天子居总章右个,乘戎路,驾白骆,载白旗,衣白衣,服白玉,食麻与犬,其器廉以深。

  

  是月也,申严号令。命百官贵贱无不务内,以会天地之藏,无有宣出。

  

  乃命冢宰,事备收,举五谷之要,藏帝借之收于神仓,祗敬必饬。

  

  是月也.霜始降,则百工休。

  

  乃命有司曰:“寒气总至,民力不堪,其皆入室。”

  

  上丁,命乐正,入学习吹。

  

  是月也,大飨帝,尝牺牲,告备于天子。

  

  合诸侯,制百县,来岁受朔日,与诸侯所税于民,轻重之法,贡职之数,以远近土地所宜为度。以给郊庙之事,无有所私。

  

  是月也,天子乃教于田猎,以习五戎,班马政。命仆及七驺咸驾,载旌旐,授车以级,整设于屏外。司徒搢扑,北面誓之,天子乃厉饰,执弓挟矢以猎,命主祠祭禽于四方。

  

  是月也,草木黄落,乃伐薪为炭。

  

  蛰虫咸俯在内,皆墐其户。乃趣狱刑,毋留有罪,收禄秩之不当、供养之不宜者。

  

  是月也,天子乃以犬尝稻,先荐寝庙。

  

  季秋行夏令,则其国大水,冬藏殃败,民多鼽嚏。行冬令,则国多盗贼,边竟不宁,土地分裂。行春令,则暖风来至,民气解惰,师兴不居。

  

  孟冬之月,日在尾,昏危中,旦七星中。其日壬癸,其帝颛顼,其神玄冥,其虫介,其音羽,律中应钟,其数六,其味咸,其臭朽,其祀行,祭先肾。

  

  水始冰,地始冻,雉入大水为蜃,虹藏不见。

  

  天子居玄堂左个,乘玄路,驾铁骊,载玄旗,衣黑衣,服玄玉,食黍与彘,其器闳以奄。

  

  是月也,以立冬。先立冬三日,太史谒之天子曰:“某日立冬,盛德在水。”天子乃齐。立冬之日,天子亲帅三公、九卿、大夫以迎冬于北郊。还反,赏死事,恤孤寡。

  

  是月也,命大史衅龟筴占兆,审卦吉凶,是察阿党,则罪无有掩蔽。

  

  是月也,天子始裘。

  

  命有司曰:“天气上腾,地气下降。天地不通,闭塞而成冬。”命百官谨盖藏,命司徒循行积聚,无有不敛。坏城郭,戒门闾,修键闭,慎管钥,固封疆,备边竟,完要塞,谨关梁,塞徯径。

  

  饬丧纪,辨衣裳,审棺椁之薄厚,茔丘垄之大小,高卑厚薄之度,贵贱之等级。

  

  是月也,命工师效功,陈祭器,按度程,毋或作为淫巧,以荡上心。必功致为上,物勒工名,以考其诚。功有不当,必行其罪,以穷其情。

  

  是月也,大饮烝。

  

  天子乃祈来年于天宗,大割祠于公社。及门闾,腊先祖五祀,劳农以休息之。

  

  天子乃命将帅讲武,习射御,角力。

  

  是月也,乃命水虞渔师收水泉池泽之赋,毋或敢侵削众庶兆民,以为天子取怨于下。其有若此者,行罪无赦。

  

  孟冬行春令,则冻闭不密,地气上泄,民多流亡。行夏令,则国多暴风,方冬不寒,蛰虫复出。行秋令,则雪霜不时,小兵时起,土地侵削。

  

  仲冬之月,日在斗,昏东壁中,轸旦中。其日壬癸,其帝颛顼,其神玄冥,其虫介,其音羽,律中黄钟,其数六,其味咸,其臭朽,其祀行,祭先肾。

  

  冰益壮,地始坼,鹖旦不鸣,虎始交。

  

  天子居玄堂大庙,乘玄路,驾铁骊,载玄旗,衣黑衣,服玄玉,食黍与彘,其器闳以奄。

  

  饬死事,命有司曰:“土事毋作,慎毋发盖,毋发室屋,及起大众,以固而闭。”地气沮泄,是谓发天地之房,诸蛰则死,民必疾疫,又随以丧,命之曰畅月。

  

  是月也,命奄尹,申宫令,审门闾,谨房室,必重闭,省妇事,毋得淫。虽有贵戚近习,毋有不禁。

  

  乃命大酋,稻必齐,曲櫱必时,湛炽必絜,水泉必香,陶器必良,火齐必得。兼用六物,大酋监之,毋有差贷。

  

  天子命有司祈祀四海、大川、名源、渊泽、井泉。

  

  是月也,农有不收藏积聚者,马牛畜兽有放佚者,取之不诘。山林薮泽,有能取蔬食田猎禽兽者,野虞教道之。其有相侵夺者,罪之不赦。

  

  是月也,日短至,阴阳争,诸生荡。君子齐戒,处必掩身,身欲宁,去声色,禁耆欲,安形性,事欲静,以待阴阳之所定。

  

  芸始生,荔挺出,蚯蚓结,麋角解,水泉动。

  

  日短至,则伐木取竹箭。

  

  是月也,可以罢官之无事,去器之无用者。

  

  涂阙廷门闾,筑囹圄,此以助天地之闭藏也。

  

  仲冬行夏令,则其国乃旱,氛雾冥冥,雷乃发声。行秋令,则天时雨汁,瓜瓠不成,国有大兵。行春令,则蝗虫为败,水泉咸竭,民多疥疠。

  

  季冬之月,日在婺女,昏娄中,旦氐中。其日壬癸,其帝颛顼,其神玄冥,其虫介,其音羽,律中大吕,其数六,其味咸,其臭朽,其祀行,祭先肾。

  

  鴈北乡,鹊始巢,雉雊,鸡乳。

  

  天子居玄堂右个,乘玄路,驾铁骊,载玄旗,衣黑衣,服玄玉,食黍与彘,其器闳以奄。

  

  命有司,大难旁磔,出土牛,以送寒气。

  

  征鸟厉疾,乃毕山川之祀,及帝之大臣,天之神祗。

  

  是月也,命渔师始渔,天子亲往,乃尝鱼,先荐寝庙。

  

  冰方盛,水泽腹坚,命取冰,冰以入。令告民出五种,命农计耦耕事,修耒耟,具田器。

  

  命乐师大合吹而罢。

  

  乃命四监,收秩薪柴,以共郊庙,及百祀之薪燎。

  

  是月也,日穷于次,月穷于纪,星回于天,数将几终,岁且更始,专而农民,毋有所使。

  

  天子乃与公卿大夫,共饬国典,论时令,以待来岁之宜。

  

  乃命太史,次诸侯之列,赋之牺牲,以共皇天上帝社稷之飨。乃命同姓之邦,共寝庙之刍豢。命宰历卿大夫,至于庶民,土田之数,而赋牺牲,以共山林名川之祀。凡在天下九州之民者,无不咸献其力,以共皇天上帝、社稷寝庙、山林名川之祀。

  

  季冬行秋令,则白露蚤降,介虫为妖,四鄙入保。行春令,则胎夭多伤,国多固疾,命之曰逆。行夏令,则水潦败国,时雪不降,冰冻消释。

  杂卦

  

  《乾》刚《坤》柔,《比》乐《师》忧;《临》《观》之义,或与或求。

  《屯》见而不失其居。《蒙》杂而著。《震》,起也。《艮》,止也。《损》、《益》盛衰之始也。《大畜》,时也。《无妄》,灾也。《萃》聚而《升》不来也。《谦》轻而《豫》怠也。《噬嗑》,食也。《贲》,无色也。《兑》见而《巽》伏也。《随》无故也。《蛊》则饬也。《剥》,烂也。《复》,反也。

  《晋》,昼也。《明夷》,诛也。《井》通而《困》相遇也。《咸》速也。

  《恒》,久也。《涣》,离也。《节》,止也。《解》,缓也。《蹇》,难也。

  《睽》,外也。《家人》,内也。《否》、《泰》反其类也。《大壮》则止,《遯》则退也。《大有》,众也。《同人》,亲也。《革》,去故也。《鼎》,取新也。《小过》,过也。《中孚》,信也。《丰》,多故也。亲寡《旅》也。

  《离》上而《坎》下也。《小畜》,寡也。《履》,不处也。《需》,不进也。

  《讼》,不亲也。《大过》,颠也。《姤》,遇也,柔遇刚也。《渐》,女归待男行也。《颐》,养正也。《既济》,定也。《归妹》,女之终也。《未济》,男之穷也。《夬》,决也,刚决柔也。君子道长,小人道忧也。

  
  《礼记杂记》

  诸侯行而死于馆,则其复如于其国。如于道,则升其乘车之左毂,以其绥复,其輤有裧,缁布裳帷,素锦以为屋而行。至于庙门,不毁墙遂入,适所殡,唯輤为说,于庙门外。

  

  大夫士死于道,则升其乘车之左毂,以其绥复。如于馆死,则其复如于家。大夫以布为輤而行,至于家而说輤,载以輲车,入自门,至于阼阶下而说车,举自阼阶,升适所殡。士輤,苇席以为屋,蒲席以为裳帷。

  

  凡讣于其君,曰:“君之臣某死。”父母妻长子,曰:“君之臣某之某死。”君讣于他国之君,曰:“寡君不禄,敢告于执事。”夫人,曰:“寡小君不禄。”大子之丧,曰:“寡君之适子某死。”大夫讣于同国,适者曰:“某不禄。”讣于士,亦曰:“某不禄。”讣于他国之君,曰:“君之外臣寡大夫某死。”讣于适者,曰:“吾子之外私寡大夫某不禄,使某实。”讣于士,亦曰:“吾子之外私寡大夫某不禄,使某实。”士讣于同国大夫,曰:“某死。”讣于士,亦曰:“某死。”讣于他国之君,曰:“君之外臣某死。”讣于大夫,曰:“吾子之外私某死。”讣于士,亦曰:“吾子之外私某死。”

  

  大夫次于公馆以终丧。士练而归,士次于公馆。大夫居庐,士居垩室。

  

  大夫为其父母兄弟之未为大夫者之丧,服如士服。士为其父母兄弟之为大夫者之丧,服如士服。

  

  大夫之适子,服大夫之服。

  

  大夫之庶子为大夫,则为其父母服大夫服,其位与未为大夫者齿。

  

  士之子为大夫,则其父母弗能主也,使其子主之。无子则为之置后。

  

  大夫卜宅与葬日,有司麻衣,布衰,布带,因丧屦,缁布冠不蕤,占者皮弁。如筮,则史练冠长衣以筮。占者朝服。

  

  大夫之丧,既荐马,荐马者哭踊,出乃包奠,而读书。

  

  大夫之丧,大宗人相,小宗人命龟,卜人作龟。

  

  内子以鞠衣,褒衣,素沙,下大夫以襢衣,其余如士。复,诸侯以褒衣,冕服,爵弁服。夫人税衣揄狄,狄税素沙,复西上。

  

  大夫不揄绞,属于池下。

  

  大夫附于士,士不附于大夫,附于大夫之昆弟。无昆弟则从其昭穆,虽王父母在亦然。妇附于其夫之所附之妃,无妃则亦从其昭穆之妃。妾附于妾祖姑,无妾祖姑则亦从其昭穆之妾。男子附于王父则配,女子附于王母则不配。公子附于公子。

  

  君薨,大子号称子,待犹君也。

  

  有三年之练冠,则以大功之麻易之。唯杖屦不易。

  

  有父母之丧,尚功衰,而附兄弟之殇,则练冠附于殇,称阳童某甫,不名神也。

  

  凡异居,始闻兄弟之丧,唯以哭对可也。其始麻,散带绖,未服麻而奔丧,及主人之未成绖也,疏者与主人皆成之,亲者终其麻带绖之日数。

  

  主妾之丧,则自祔。至于练祥,皆使其子主之。其殡,祭,不于正室。

  

  君不抚仆妾。

  

  女君死,则妾为女君之党服。摄女君,则不为先女君之党服。

  

  闻兄弟之丧,大功以上,见丧者之乡而哭。

  

  适兄弟之送丧者弗及,遇主人于道,则遂之于墓。

  

  凡主兄弟之丧,虽疏亦虞之。

  

  凡哭服未毕,有吊者则为位而哭,拜,踊。

  

  大夫之哭大夫弁绖,大夫与殡亦弁绖。

  

  大夫有私丧之葛,则于其兄弟之轻丧则弁绖。

  

  为长子杖,则其子不以杖即位。

  

  为妻,父母在,不杖不稽颡。母在,不稽颡。稽颡者,其赠也拜。

  

  违诸侯,之大夫,不反服。违大夫,之诸侯,不反服。

  

  丧冠条属,以别吉凶。三年之练冠,亦条属右缝。小功以下,左,缌冠缲缨。

  

  大功以上散带。

  

  朝服十五升去其半而缌,加灰锡也。

  

  诸侯相襚,以后路与冕服,先路与褒衣不以襚。

  

  遣车视牢具,疏布輤,四面有章,置于四隅。

  

  载粻,有子曰:“非礼也。丧奠,脯醢而已。”

  

  祭称孝子孝孙,丧称哀子哀孙。

  

  端衰,丧车,皆无等。

  

  大白冠,缁布之冠,皆不蕤。委武玄缟而后蕤。

  

  大夫冕而祭于公,弁而祭于己。士弁而祭于公,冠而祭于己。士弁而亲迎,然则士弁而祭于己可也。

  

  畅,臼以椈,杵以梧,枇以桑。长三尺,或曰五尺。毕用桑,长三尺,刊其柄与末。

  

  率带,诸侯大夫皆五采,士二采。

  

  醴者,稻醴也,瓮甒筲衡实见间,而后折入。

  

  重既虞而埋之。

  

  凡妇人,从其夫之爵位。

  

  小敛大敛启,皆辩拜。

  

  朝夕哭不帷,无柩者不帷。

  

  君若载而后吊之,则主人东面而拜,门右北面而踊,出待,反而后奠。

  

  子羔之袭也,茧衣裳与税衣纁袡为一,素端一,皮弁一,爵弁一,玄冕一。曾子曰:“不袭妇服。”

  

  为君使而死,公馆复,私馆不复。公馆者,公宫与公所为也。私馆者,自卿大夫以下之家也。

  

  公七踊,大夫五踊,妇人居间,士三踊,妇人皆居间。

  

  公袭卷衣一,玄端一,朝服一,素积一,纁裳一,爵弁二,玄冕一,褒衣一,朱绿带,申加大带于上。

  

  小敛,环绖,公大夫士一也。

  

  公视大敛,公升商祝铺席乃敛。

  

  鲁人之赠也,三玄二纁,广尺,长终幅。

  

  吊者即位于门西,东面,其介在其东南。北面西上,西于门,主孤西面,相者受命曰:“孤某使某请事。”客曰:“寡君使某,如何不淑?”相者入告,出曰:“孤某须矣!”吊者入,主人升堂西面,吊者升自西阶,东面致命曰:“寡君闻君之丧,寡君使某,如何不淑?”子拜稽颡,吊者降反位。

  

  含者执璧,将命曰:“寡君使某含。”相者入告,出曰:“孤某须矣!”含者入,升堂致命,再拜稽颡,含者坐委于殡东南,有苇席。既葬,蒲席,降出反位。宰夫朝服即丧屦,升自西阶,西面坐取璧,降自西阶以东。襚者曰:“寡君使某襚。”相者入告,出曰:“孤某须矣!”襚者执冕服,左执领,右执要,入,升堂致命曰:“寡君使某襚。”子拜稽颡,委衣于殡东,襚者降,受爵弁服于门内溜。将命,子拜稽颡如初,受皮弁服于中庭,自西阶受朝服,自堂受玄端。将命,子拜稽颡皆如初,襚者降出反位。宰夫五人,举以东,降自西阶,其举亦西面,上介赗,执圭将命曰:“寡君使某赗。”相者入告,反命曰:“孤某须矣!”陈乘黄大路于中庭,北辀,执圭将命。客使自下由路西,子拜稽颡,坐委于殡东南隅,宰举以东,凡将命,乡殡将命。子拜稽颡,西面而坐委之,宰举璧与圭,宰夫举襚,升自西阶,西面坐取之,降自西阶,赗者出,反位于门外。

  

  上客临曰:“寡君有宗庙之事,不得承事,使一介老某相执綍。”相者反命曰:“孤某须

  

  矣!”临者入门右,介者皆从之,立于其左。东上,宗人纳宾,升,受命于君,降曰:“孤敢辞吾子之辱,请吾子之复位。”客对曰:“寡君命某,毋敢视宾客,敢辞。”宗人反命曰:“孤敢固辞,吾子之辱,请吾子之复位。”客对曰:“寡君命某,毋敢视宾客,敢固辞。”宗人反命曰:“孤敢固辞,吾子之辱,请吾子之复位。”客对曰:“寡君命使臣某,毋敢视宾客,是以敢固辞。固辞不获命,敢不敬从。”客立于门西,介立于其左,东上,孤降自阼阶拜之,升哭,与客拾踊三。客出,送于门外,拜稽颡。

  

  其国有君丧,不敢受吊。

  

  外宗房中南面,小臣铺席,商祝铺绞紟衾,士盥于盘北,举迁尸于敛上。卒敛,宰告,子冯之踊,夫人东面坐冯之,兴踊。

  

  士丧有与天子同者三,其终夜燎,及乘人,专道而行。

  

  有父之丧,如未没丧而母死,其除父之丧也,服其除服,卒事,反丧服。

  

  虽诸父昆弟之丧,如当父母之丧,其除诸父昆弟之丧也,皆服其除服之服,卒事,反丧服。如三年之丧,则既顈其练祥皆行,王父死,未练祥而孙又死,犹是附于王父也。

  

  有殡,闻外丧,哭之他室。入奠,卒奠出,改服即位,如始即位之礼。

  

  大夫士将与祭于公,既视濯而父母死,则犹是与祭也。次于异宫,既祭,释服出公门外,哭而归其它如奔丧之礼。如未视濯,则使人告,告者反而后哭。如诸父昆弟姑姊妹之丧,则既宿则与祭,卒事,出公门,释服而后归,其它如奔丧之礼。如同宫,则次于异宫。

  

  曾子问曰:“卿大夫将为尸于公,受宿矣,而有齐衰内丧,则如之何?”孔子曰:“出舍乎公宫以待事,礼也。”孔子曰:“尸弁冕而出,卿大夫士皆下之,尸必式,必有前驱。”

  

  父母之丧,将祭,而昆弟死,既殡而祭,如同宫。则虽臣妾,葬而后祭。祭主人之升降散等,执事者亦散等,虽虞附亦然。

  

  自诸侯达诸士,小祥之祭,主人之酢也,哜之,众宾兄弟,则皆啐之。大祥,主人啐之,众宾兄弟皆饮之可也。

  

  凡侍祭丧者,告宾祭荐而不食。

  

  子贡问丧,子曰:“敬为上,哀次之,瘠为下。颜色称其情,戚容称其服。”“请问兄弟之丧?”子曰:“兄弟之丧则存乎书策矣。”

  

  君子不夺人之丧,亦不可夺丧也。

  

  孔子曰:“少连、大连,善居丧,三日不怠,三月不解,期悲哀,三年忧,东夷之子也。”

  

  三年之丧,言而不语,对而不问。庐垩室之中,不与人坐焉。在垩室之中,非时见乎母也,不入门。疏衰皆居垩室,不庐,庐严者也。

  

  妻视叔父母,姑姊妹视兄弟,长中下殇视成人。

  

  亲丧外除,兄弟之丧内除。

  

  视君之母与妻,比之兄弟,发诸颜色者,亦不饮食也。

  

  免丧之外,行于道路,见似目瞿,闻名心瞿,吊死而问疾,颜色戚容,必有以异于人也。如此而后可以服三年之丧,其余则直道而行之是也。

  

  祥,主人之除也,于夕为期,朝服,祥因其故服。

  

  子游曰:“既祥,虽不当缟者必缟,然后反服。”

  

  当袒,大夫至,虽当踊,绝踊而拜之,反改成踊,乃袭。于士,既事成踊,袭而后拜之,不改成踊。

  

  上大夫之虞也少牢,卒哭成事附皆大牢。下大夫之虞也犆牲,卒哭成事附皆少牢。

  

  祝称卜葬虞,子孙曰哀,夫曰乃,兄弟曰某,卜葬其兄弟曰伯子某。

  

  古者贵贱皆杖。叔孙武叔朝,见轮人以其杖关毂而輠轮者,于是有爵而后杖也。

  

  凿巾以饭,公羊贾为之也。

  

  冒者何也?所以揜形也,自袭以至小敛,不设冒则形,是以袭而后设冒也。

  

  或问于曾子曰:“夫既遣而包其余,犹既食而裹其余与?君子既食则裹其余乎?”曾子

  

  曰:“吾子不见大飨乎?夫大飨既飨,卷三牲之俎,归于宾馆,父母而宾客之,所以为哀也。子不见大飨乎?”

  

  非为人丧,问与?赐与?

  

  三年之丧,以其丧拜。非三年之丧,以吉拜。三年之丧,如或遗之酒肉,则受之,必三辞,主人衰绖而受之。如君命,则不敢辞,受而荐之。丧者不遗人,人遗之,虽酒肉受也。从父昆弟以下,既卒哭,遗人可也。

  

  县子曰:“三年之丧如斩,期之丧如剡。”

  

  期之丧,十一月而练,十三月而祥,十五月而禫。

  

  三年之丧,虽功衰不吊,自诸侯达诸士。如有服而将往哭之,则服其服而往。练则吊,既葬,大功吊,哭而退,不听事焉。期之丧未葬,吊于乡人,哭而退,不听事焉。功衰吊,待事不执事。小功缌,执事不与于礼。

  

  相趋也,出宫而退;相揖也,哀次而退;相问也,既封而退;相见也,反哭而退;朋友,虞附而退。

  

  吊非从主人也,四十者执綍,乡人,五十者从反哭,四十者待盈坎。

  

  丧食虽恶,必充饥,饥而废事,非礼也,饱而忘哀,亦非礼也。视不明,听不聪,行不正,不知哀,君子病之。故有疾,饮酒食肉。五十不致毁,六十不毁,七十饮酒食肉,皆为疑死。

  

  有服,人召之食,不往。大功以下,既葬适人,人食之,其党也食之,非其党弗食也。功衰食菜果,饮水浆,无盐酪,不能食食,盐酪可也。孔子曰:“身有疡则浴,首有创则沐,病则饮酒食肉。毁瘠为病,君子弗为也。毁而死,君子谓之无子。”

  

  非从柩与反哭,无免于堩。

  

  凡丧,小功以上,非虞附练祥,无沐浴。

  

  疏衰之丧,既葬,人请见之则见,不请见人。小功请见人可也,大功不以执挚。唯父母之丧,不辟涕泣而见人。

  

  三年之丧,祥而从政。期之丧,卒哭而从政。九月之丧,既葬而从政。小功缌之丧,既殡而从政。

  

  曾申问于曾子曰:“哭父母有常声乎?”曰:“中路婴儿失其母焉,何常声之有?”

  

  卒哭而讳,王父母、兄弟、世父、叔父、姑姊妹、子与父同讳。母之讳,宫中讳。妻之讳,不举诸其侧,与从祖昆弟同名则讳。

  

  以丧冠者,虽三年之丧可也。既冠于次,入哭踊三者三,乃出。

  

  大功之末,可以冠子,可以嫁子。父小功之末,可以冠子,所以嫁子,可以取妇。己虽小功,既卒哭,可以冠,取妻。下殇之小,功则不可。

  

  凡弁绖,其衰侈袂。

  

  父有服,宫中子不与于乐。母有服,声闻焉不举乐。妻有服,不举乐于其侧。大功将至,辟琴瑟。小功至,不绝乐。

  

  姑姊妹,其夫死,而夫党无兄弟,使夫之族人主丧。妻之党,虽亲弗主,夫若无族矣,则前后家,东西家,无有,则里尹主之。或曰:主之而附于夫之党。

  

  麻者不绅,执玉不麻,麻不加于采。

  

  国禁哭则止,朝夕之奠即位,自因也。

  

  童子哭不偯,不踊,不杖,不菲,不庐。

  

  孔子曰:“伯母叔母疏衰,踊不绝地。姑姊妹之大功,踊绝于地。如知此者,由文矣哉!由文矣哉!”

  

  世柳之母死,相者由左。世柳死,其徒由右相。由右相,世柳之徒为之也。

  

  天子饭九贝,诸侯七,大夫五,士三。士三月而葬,是月也卒哭。大夫三月而葬,五月而卒哭。诸侯五月而葬,七月而卒哭。士三虞,大夫五,诸侯七。

  

  诸侯使人吊,其次含襚赗临,皆同日而毕事者也。其次如此也。

  

  卿大夫疾,君问之无筭。士壹问之。君于卿大夫,比葬不食肉,比卒哭不举乐,为士比殡不举乐。

  

  升正柩,诸侯执綍五百人,四綍,皆衔枚。司马执铎,左八人,右八人。匠人执羽葆御柩。大夫之丧,其升正柩也,执引者三百人,执铎者左右各四人,御柩以茅。

  

  孔子曰:“管仲镂簋而朱纮,旅树而反坫,山节而藻梲,贤大夫也,而难为上也。晏平仲祀其先人,豚肩不揜豆,贤大夫也,而难为下也。君子上不僭上,下不偪下。”

  

  妇人非三年之丧,不踰封而吊。如三年之丧,则君夫人归,夫人其归也,以诸侯之吊礼。其待之也,若待诸侯然。夫人至,入自闱门,升自侧阶。君在阼,其它如奔丧礼然。

  

  嫂不抚叔,叔不抚嫂。

  

  君子有三患:未之闻,患弗得闻也;既闻之,患弗得学也;既学之,患弗能行也。君子有五耻:居其位,无其言,君子耻之;有其言,无其行,君子耻之;既得之而又失之,君子耻之;地有余而民不足,君子耻之;众寡均而倍焉,君子耻之。

  

  孔子曰:“凶年则乘驽马,祀以下牲。”

  

  恤由之丧,哀公使孺悲之孔子,学士丧礼。士丧礼于是乎书。

  

  子贡观于蜡,孔子曰:“赐也乐乎?”对曰:“一国之人皆若狂,赐未知其乐也。”子曰:“百日之蜡,一日之泽,非尔所知也。张而不弛,文武弗能也。弛而不张,文武弗为也。一张一弛,文武之道也。”

  

  孟献之曰:“正月日至,可以有事于上帝。七月日至,可以有事于祖。”七月而禘,献子为之也。

  

  夫人之不命于天子,自鲁昭公始也。

  

  外宗为君夫人,犹内宗也。

  

  厩焚,孔子拜乡人,为火来者,拜之,士壹,大夫再,亦相吊之道也。

  

  孔子曰:“管仲遇盗,取二人焉,上以为公臣,曰:‘其所与游辟也,可人也。’管仲死,桓公使为之服。官于大夫者之为之服也,自管仲始也,有君命焉尔也。”

  

  过而举君之讳则起,与君之讳同则称字。

  

  内乱不与焉,外患弗辟也。

  

  赞大行曰:“圭,公九寸,侯、伯七寸,子、男五寸,博三寸,厚半寸,剡上左右各寸半。玉也,藻三采六等。”

  

  哀公问子羔曰:“子之食奚当?”对曰:“文公之下执事也。”

  

  成庙则衅之,其礼,祝宗人,宰夫,雍人,皆爵弁纯衣。雍人拭羊,宗人视之,宰夫北面于碑南,东上,雍人举羊升屋,自中。中屋南面,刲羊血流于前,乃降。门,夹室皆用鸡,先门而后夹室,其衈皆于屋下。割鸡,门,当门,夹室,中室,有司皆乡室而立。门,则有司当门北面。既事,宗人告事毕,乃皆退,反命于君曰:“衅某庙事毕。”反命于寝,君南乡于门内,朝服,既反命,乃退。路寝成,则考之而不衅。衅屋者,交神明之道也。凡宗庙之器,其名者成则衅之以豭豚。

  

  诸侯出夫人,夫人比至于其国,以夫人之礼行,至,以夫人入。使者将命曰:“寡君不敏,不能从而事社稷宗庙,使使臣某敢告于执事。”主人对曰:“寡君固前辞不教矣,寡君敢不敬须以俟命。”有司官陈器皿,主人有司亦官受之。妻出,夫使人致之曰:“某不敏,不能从而共粢盛,使某也敢告于侍者。”主人对曰:“某之子不肖,不敢辟诛,敢不敬须以俟命?”使者退,主人拜送之。如舅在则称舅,舅没则称兄,无兄则称夫。主人之辞曰:“某之子不肖。”如姑姊妹亦皆称之。

  

  孔子曰:“吾食于少施氏而饱,少施氏食我以礼。吾祭,作而辞曰:‘疏食不足祭也。’吾飧,作而辞曰:‘疏食也,不敢以伤吾子。’”

  

  纳币一束.束五两.两五寻。

  

  妇见舅姑,兄弟姑姊妹皆立于堂下,西面北上,是见已,见诸父,各就其寝。

  

  女虽未许嫁,年二十而笄,礼之。妇人执其礼,燕则鬈首。

  

  縪长三尺,下广二尺,上广一尺,会去上五寸,纰以爵韦六寸,不至下五寸。纯以素,紃以五采。

  
  昭公(元年~三十二年)

  

  !昭公元年

  【经】元年春王正月,公即位。叔孙豹会晋赵武、楚公子围、齐国弱、宋向戌、卫齐恶、陈公子招、蔡公孙归生、郑罕虎、许人、曹人于虢。三月,取郓。

  夏,秦伯之弟鍼出奔晋。六月丁巳,邾子华卒。晋荀吴帅师败狄于大卤。秋,莒去疾自齐入于莒。莒展舆出奔吴。叔弓帅师疆郓田。葬邾悼公。冬十有一月己酉,楚子麇卒。公子比出奔晋。

  

  【传】元年春,楚公子围聘于郑,且娶于公孙段氏,伍举为介。将入馆,郑人恶之,使行人子羽与之言,乃馆于外。既聘,将以众逆。子产患之,使子羽辞,曰:“以敝邑褊小,不足以容从者,请墠听命!”令尹命大宰伯州犁对曰:“君辱贶寡大夫围,谓围:‘将使丰氏抚有而室。围布几筵,告于庄、共之庙而来。若野赐之,是委君贶于草莽也!是寡大夫不得列于诸卿也!不宁唯是,又使围蒙其先君,将不得为寡君老,其蔑以复矣。唯大夫图之!”子羽曰:“小国无罪,恃实其罪。将恃大国之安靖己,而无乃包藏祸心以图之。小国失恃而惩诸侯,使莫不憾者,距违君命,而有所壅塞不行是惧!不然,敝邑,馆人之属也,其敢爱丰氏之祧?”伍举知其有备也,请垂橐而入。许之。

  正月乙未,入,逆而出。遂会于虢,寻宋之盟也。祁午谓赵文子曰:“宋之盟,楚人得志于晋。今令尹之不信,诸侯之所闻也。子弗戒,惧又如宋。子木之信称于诸侯,犹诈晋而驾焉,况不信之尤者乎?楚重得志于晋,晋之耻也。子相晋国以为盟主,于今七年矣!再合诸侯,三合大夫,服齐、狄,宁东夏,平秦乱,城淳于,师徒不顿,国家不罢,民无谤讟,诸侯无怨,天无大灾,子之力也。有令名矣,而终之以耻,午也是惧。吾子其不可以不戒!”文子曰:“武受赐矣!然宋之盟,子木有祸人之心,武有仁人之心,是楚所以驾于晋也。今武犹是心也,楚又行僣,非所害也。武将信以为本,循而行之。譬如农夫,是穮是蓘,虽有饥馑,必有丰年。且吾闻之:‘能信不为人下。’吾未能也。《诗》曰:‘不僣不贼,鲜不为则。’信也。能为人则者,不为人下矣。吾不能是难,楚不为患。”

  楚令尹围请用牲,读旧书,加于牲上而已。晋人许之。

  三月甲辰,盟。楚公子围设服离卫。叔孙穆子曰:“楚公子美矣,君哉!”郑子皮曰:“二执戈者前矣!”蔡子家曰:“蒲宫有前,不亦可乎?”楚伯州犁曰:“此行也,辞而假之寡君。”郑行人挥曰:“假不反矣!”伯州犁曰:“子姑忧子皙之欲背诞也。”子羽曰:“当璧犹在,假而不反,子其无忧乎?”齐国子曰:“吾代二子愍矣!”陈公子招曰:“不忧何成,二子乐矣。”卫齐子曰:“苟或知之,虽忧何害?”宋合左师曰:“大国令,小国共。吾知共而已。”晋乐王鲋曰:“《小旻》之卒章善矣,吾从之。”

  退会,子羽谓子皮曰:“叔孙绞而婉,宋左师简而礼,乐王鲋字而敬,子与子家持之,皆保世之主也。齐、卫、陈大夫其不免乎?国子代人忧,子招乐忧,齐子虽忧弗害。夫弗及而忧,与可忧而乐,与忧而弗害,皆取忧之道也,忧必及之。《大誓》曰:‘民之所欲,天必从之。’三大夫兆忧,能无至乎?言以知物,其是之谓矣。”

  季武子伐莒,取郓,莒人告于会。楚告于晋曰:“寻盟未退,而鲁伐莒,渎齐盟,请戮其使。”乐桓子相赵文子,欲求货于叔孙而为之请,使请带焉,弗与。

  梁其踁曰:“货以藩身,子何爱焉?”叔孙曰:“诸侯之会,卫社稷也。我以货免,鲁必受师。是祸之也,何卫之为?人之有墙,以蔽恶也。墙之隙坏,谁之咎也?卫而恶之,吾又甚焉。虽怨季孙,鲁国何罪?叔出季处,有自来矣,吾又谁怨?然鲋也贿,弗与,不已。”召使者,裂裳帛而与之,曰:“带其褊矣。”

  赵孟闻之,曰:“临患不忘国,忠也。思难不越官,信也;图国忘死,贞也;谋主三者,义也。有是四者,又可戮乎?”乃请诸楚曰:“鲁虽有罪,其执事不辟难,畏威而敬命矣。子若免之,以劝左右可也。若子之群吏处不辟污,出不逃难,其何患之有?患之所生,污而不治,难而不守,所由来也。能是二者,又何患焉?不靖其能,其谁从之?鲁叔孙豹可谓能矣,请免之以靖能者。子会而赦有罪,又赏其贤,诸侯其谁不欣焉望楚而归之,视远如迩?疆埸之邑,一彼一此,何常之有?王伯之令也,引其封疆,而树之官。举之表旗,而著之制令。过则有刑,犹不可壹。于是乎虞有三苗,夏有观、扈,商有姺、邳,周有徐、奄。自无令王,诸侯逐进,狎主齐盟,其又可壹乎?恤大舍小,足以为盟主,又焉用之?封疆之削,何国蔑有?主齐盟者,谁能辩焉?吴、濮有衅,楚之执事岂其顾盟?莒之疆事,楚勿与知,诸侯无烦,不亦可乎?莒、鲁争郓,为日久矣,苟无大害于其社稷,可无亢也。去烦宥善,莫不竞劝。子其图之!”固请诸楚,楚人许之,乃免叔孙。

  令尹享赵孟,赋《大明》之首章。赵孟赋《小宛》之二章。事毕,赵孟谓叔向曰:“令尹自以为王矣,何如?”对曰:“王弱,令尹强,其可哉!虽可,不终。”赵孟曰:“何故?”对曰:“强以克弱而安之,强不义也。不义而强,其毙必速。《诗》曰:‘赫赫宗周,褒姒灭之。’强不义也。令尹为王,必求诸侯。

  晋少懦矣,诸侯将往。若获诸侯,其虐滋甚。民弗堪也,将何以终?夫以强取,不义而克,必以为道。道以淫虐,弗可久已矣!”夏四月,赵孟、叔孙豹、曹大夫入于郑,郑伯兼享之。子皮戒赵孟,礼终,赵孟赋《瓠叶》。子皮遂戒穆叔,且告之。穆叔曰:“赵孟欲一献,子其从之!”子皮曰:“敢乎?”穆叔曰:“夫人之所欲也,又何不敢?”及享,具五献之笾豆于幕下。赵孟辞,私于子产曰:“武请于冢宰矣。”乃用一献。赵孟为客,礼终乃宴。穆叔赋《鹊巢》。赵孟曰:“武不堪也。”又赋《采蘩》,曰:“小国为蘩,大国省穑而用之,其何实非命?”子皮赋《野有死麇》之卒章。赵孟赋《常棣》,且曰:“吾兄弟比以安,尨也可使无吠。”穆叔、子皮及曹大夫兴,拜,举兕爵,曰:“小国赖子,知免于戾矣。”饮酒乐。赵孟出,曰:“吾不复此矣。”

  天王使刘定公劳赵孟于颍,馆于洛汭。刘子曰:“美哉禹功,明德远矣!微禹,吾其鱼乎!吾与子弁冕端委,以治民临诸侯,禹之力也。子盍亦远绩禹功,而大庇民乎?”对曰:“老夫罪戾是惧,焉能恤远?吾侪偷食,朝不谋夕,何其长也?”刘子归,以语王曰:“谚所为老将知而耄及之者,其赵孟之谓乎!为晋正卿,以主诸侯,而侪于隶人,朝不谋夕,弃神人矣。神怒民叛,何以能久?赵孟不复年矣。神怒,不歆其祀;民叛,不即其事。祀事不从,又何以年?”叔孙归,曾夭御季孙以劳之。旦及日中不出。曾夭谓曾阜曰:“旦及日中,吾知罪矣。鲁以相忍为国也,忍其外不忍其内,焉用之?”阜曰:“数月于外,一旦于是,庸何伤?贾而欲赢,而恶嚣乎?”阜谓叔孙曰:“可以出矣!”叔孙指楹曰:“虽恶是,其可去乎?”乃出见之。

  郑徐吾犯之妹美,公孙楚聘之矣,公孙黑又使强委禽焉。犯惧,告子产。子产曰:“是国无政,非子之患也。唯所欲与。”犯请于二子,请使女择焉。皆许之,子皙盛饰入,布币而出。子南戎服入。左右射,超乘而出。女自房观之,曰:“子皙信美矣,抑子南夫也。夫夫妇妇,所谓顺也。”适子南氏。子皙怒,既而櫜甲以见子南,欲杀之而取其妻。子南知之,执戈逐之。及冲,击之以戈。子皙伤而归,告大夫曰:“我好见之,不知其有异志也,故伤。”

  大夫皆谋之。子产曰:“直钧,幼贱有罪。罪在楚也。”乃执子南而数之,曰:“国之大节有五,女皆奸之:畏君之威,听其政,尊其贵,事其长,养其亲。

  五者所以为国也。今君在国,女用兵焉,不畏威也。奸国之纪,不听政也。子皙,上大夫,女,嬖大夫,而弗下之,不尊贵也。幼而不忌,不事长也。兵其从兄,不养亲也。君曰:‘余不女忍杀,宥女以远。’勉,速行乎,无重而罪!”五月庚辰,郑放游楚于吴,将行子南,子产咨于大叔。大叔曰:“吉不能亢身,焉能亢宗?彼,国政也,非私难也。子图郑国,利则行之,又何疑焉?周公杀管叔而蔡蔡叔,夫岂不爱?王室故也。吉若获戾,子将行之,何有于诸游?”秦后子有宠于桓,如二君于景。其母曰:“弗去,惧选。”癸卯,鍼适晋,其车千乘。书曰:“秦伯之弟鍼出奔晋。”罪秦伯也。后子享晋侯,造舟于河,十里舍车,自雍及绛。归取酬币,终事八反。司马侯问焉,曰:“子之车,尽于此而已乎?”对曰:“此之谓多矣!若能少此,吾何以得见?”女叔齐以告公,且曰:“秦公子必归。臣闻君子能知其过,必有令图。令图,天所赞也。”

  后子见赵孟。赵孟曰:“吾子其曷归?”对曰:“鍼惧选于寡君,是以在此,将待嗣君。”赵孟曰:“秦君何如?”对曰:“无道。”赵孟曰:“亡乎?”对曰:“何为?一世无道,国未艾也。国于天地,有与立焉。不数世淫,弗能毙也。”赵孟曰:“天乎?”对曰:“有焉。”赵孟曰:“其几何?”对曰:“鍼闻之,国无道而年谷和熟,天赞之也。鲜不五稔。”赵孟视荫,曰:“朝夕不相及,谁能待五?”后子出,而告人曰:“赵孟将死矣。主民,玩岁而愒日,其与几何?”郑为游楚乱故,六月丁巳,郑伯及其大夫盟于公孙段氏,罕虎、公孙侨、公孙段、印段、游吉、驷带私盟于闺门之外,实薰隧。公孙黑强与于盟,使大史书其名,且曰七子。子产弗讨。

  晋中行穆子败无终及群狄于大原,崇卒也。将战,魏舒曰:“彼徒我车,所遇又厄,以什共车必克。困诸厄,又克。请皆卒,自我始。”乃毁车以为行,五乘为三伍。荀吴之嬖人不肯即卒,斩以徇。为五陈以相离,两于前,伍于后,专为右角,参为左角,偏为前拒,以诱之。翟人笑之。未陈而薄之,大败之。

  莒展舆立,而夺群公子秩。公子召去疾于齐。秋,齐公子鉏纳去疾,展舆奔吴。

  叔弓帅师疆郓田,因莒乱也。于是莒务娄、瞀胡及公子灭明以大厖与常仪靡奔齐。君子曰:“莒展之不立,弃人也夫!人可弃乎?《诗》曰:‘无竞维人。’善矣。”

  晋侯有疾,郑伯使公孙侨如晋聘,且问疾。叔向问焉,曰:“寡君之疾病,卜人曰:‘实沈、台骀为祟。’史莫之知,敢问此何神也?”子产曰:“昔高辛氏有二子,伯曰阏伯,季曰实沈,居于旷林,不相能也。日寻干戈,以相征讨。

  后帝不臧,迁阏伯于商丘,主辰。商人是因,故辰为商星。迁实沈于大夏,主参。

  唐人是因,以服事夏、商。其季世曰唐叔虞。当武王邑姜方震大叔,梦帝谓己:‘余命而子曰虞,将与之唐,属诸参,而蕃育其子孙。’及生,有文在其手曰:‘虞’,遂以命之。及成王灭唐而封大叔焉,故参为晋星。由是观之,则实沈,参神也。昔金天氏有裔子曰昧,为玄冥师,生允格、台骀。台骀能业其官,宣汾、洮,障大泽,以处大原。帝用嘉之,封诸汾川。沈、姒、蓐、黄,实守其祀。今晋主汾而灭之矣。由是观之,则台骀,汾神也。抑此二者,不及君身。山川之神,则水旱疠疫之灾,于是乎禜之。日月星辰之神,则雪霜风雨之不时,于是乎禜之。

  若君身,则亦出入饮食哀乐之事也,山川星辰之神,又何为焉”?侨闻之,君子有四时:朝以听政,昼以访问,夕以修令,夜以安身。于是乎节宣其气,勿使有所壅闭湫底,以露其体。兹心不爽,而昏乱百度。今无乃壹之,则生疾矣。侨又闻之,内官不及同姓,其生不殖,美先尽矣,则相生疾,君子是以恶之。故《志》曰:‘买妾不知其姓,则卜之。’违此二者,古之所慎也。男女辨姓,礼之大司也。今君内实有四姬焉,其无乃是也乎?若由是二者,弗可为也已。四姬有省犹可,无则必生疾矣。”叔向曰:“善哉!肸未之闻也。此皆然矣。”

  叔向出,行人挥送之。叔向问郑故焉,且问子皙。对曰:“其与几何?无礼而好陵人,怙富而卑其上,弗能久矣。”

  晋侯闻子产之言,曰:“博物君子也。”重贿之。

  晋侯求医于秦。秦伯使医和视之,曰:“疾不可为也。是谓:‘近女室,疾如蛊。非鬼非食,惑以丧志。良巨将死,天命不佑’”公曰:“女不可近乎?”对曰:“节之。先王之乐,所以节百事也。故有五节,迟速本末以相及,中声以降,五降之后,不容弹矣。于是有烦手淫声,慆堙心耳,乃忘平和,君子弗德也。物亦如之,至于烦,乃舍也已,无以生疾。君子之近琴瑟,以仪节也,非以慆心也。天有六气,降生五味,发为五色,征为五声,淫生六疾。六气曰阴、阳、风、雨、晦、明也。分为四时,序为五节,过则为灾。阴淫寒疾,阳淫热疾,风淫末疾,雨淫腹疾,晦淫惑疾,明淫心疾。女,阳物而晦时,淫则生内热惑蛊之疾。今君不节不时,能无及此乎?”出,告赵孟。赵孟曰:“谁当良臣?”对曰:“主是谓矣!主相晋国,于今八年,晋国无乱,诸侯无阙,可谓良矣。和闻之,国之大臣,荣其宠禄,任其宠节,有灾祸兴而无改焉,必受其咎。今君至于淫以生疾,将不能图恤社稷,祸孰大焉!主不能御,吾是以云也。”赵孟曰:“何谓蛊”对曰:“淫溺惑乱之所生也。于文,皿虫为蛊。谷之飞亦为蛊。在《周易》,女惑男,风落山,谓之《蛊》ⅶⅳ。皆同物也。”赵孟曰:“良医也。”厚其礼归之。

  楚公子围使公子黑肱、伯州犁城犨、栎、郏,郑人惧。子产曰:“不害。令尹将行大事,而先除二子也。祸不及郑,何患焉?”冬,楚公子围将聘于郑,伍举为介。未出竟,闻王有疾而还。伍举遂聘。十一月己酉,公子围至,入问王疾,缢而弑之。遂杀其二子幕及平夏。右尹子干出奔晋。宫厩尹子皙出奔郑。杀大宰伯州犁于郏。葬王于郏,谓之郏敖。使赴于郑,伍举问应为后之辞焉。对曰:“寡大夫围。”伍举更之曰:“共王之子围为长。”

  子干奔晋,从车五乘。叔向使与秦公子同食,皆百人之饩。赵文子曰:“秦公子富。”叔向曰:“厎禄以德,德钧以年,年同以尊。公子以国,不闻以富。

  且夫以千乘去其国,强御已甚。《诗》曰:‘不侮鳏寡,不畏强御。’秦、楚,匹也。”使后子与子干齿。辞曰:“鍼惧选,楚公子不获,是以皆来,亦唯命。

  且臣与羁齿,无乃不可乎?史佚有言曰:‘非羁何忌?’”楚灵王即位,薳罢为令尹,薳启强为大宰。郑游吉如楚,葬郏敖,且聘立君。

  归,谓子产曰:“具行器矣!楚王汰侈而自说其事,必合诸侯。吾往无日矣。”

  子产曰:“不数年,未能也。”

  十二月,晋既烝,赵孟适南阳,将会孟子余。甲辰朔,烝于温。庚戌,卒。

  郑伯如晋吊,及雍乃复。

  

  

  !昭公二年

  【经】二年春,晋侯使韩起来聘。夏,叔弓如晋。秋,郑杀其大夫公孙黑。

  冬,公如晋,至河乃复。季孙宿如晋。

  

  【传】二年春,晋侯使韩宣子来聘,且告为政而来见,礼也。观书于大史氏,见《易》《象》与《鲁春秋》,曰:“周礼尽在鲁矣。吾乃今知周公之德,与周之所以王也。”公享之。季武子赋《绵》之卒章。韩子赋《角弓》。季武子拜,曰:“敢拜子之弥缝敝邑,寡君有望矣。”武子赋《节》之卒章。既享,宴于季氏,有嘉树焉,宣子誉之。武子曰:“宿敢不封殖此树,以无忘《角弓》。”遂赋《甘棠》。宣子曰:“起不堪也,无以及召公。”

  宣子遂如齐纳币。见子雅。子雅召子旗,使见宣子。宣子曰:“非保家之主也,不臣。”见子尾。子尾见强,宣子谓之如子旗。大夫多笑之,唯晏子信之,曰:“夫子,君子也。君子有信,其有以知之矣。”自齐聘于卫。卫侯享之,北宫文子赋《淇澳》。宣子赋《木瓜》。

  夏四月,韩须如齐逆女。齐陈无宇送女,致少姜。少姜有宠于晋侯,晋侯谓之少齐。谓陈无宇非卿,执诸中都。少姜为之请曰:“送从逆班,畏大国也,犹有所易,是以乱作。”

  叔弓聘于晋,报宣子也。晋侯使郊劳。辞曰:“寡君使弓来继旧好,固曰:‘女无敢为宾!’彻命于执事,敝邑弘矣。敢辱郊使?请辞。”致馆。辞曰:“寡君命下臣来继旧好,好合使成,臣之禄也。敢辱大馆?”叔向曰:“子叔子知礼哉!吾闻之曰:‘忠信,礼之器也。卑让,礼之宗也。’辞不忘国,忠信也。

  先国后己,卑让也。《诗》曰:‘敬慎威仪,以近有德。’夫子近德矣。”

  秋,郑公孙黑将作乱,欲去游氏而代其位,伤疾作而不果。驷氏与诸大夫欲杀之。子产在鄙,闻之,惧弗及,乘遽而至。使吏数之,曰:“伯有之乱,以大国之事,而未尔讨也。尔有乱心,无厌,国不女堪。专伐伯有,而罪一也。昆弟争室,而罪二也。薰隧之盟,女矫君位,而罪三也。有死罪三,何以堪之?不速死,大刑将至。”再拜稽首,辞曰:“死在朝夕,无助天为虐。”子产曰:“人谁不死?凶人不终,命也。作凶事,为凶人。不助天,其助凶人乎?”请以印为褚师。子产曰:“印也若才,君将任之。不才,将朝夕从女。女罪之不恤,而又何请焉?不速死,司寇将至。”七月壬寅,缢。尸诸周氏之衢,加木焉。

  晋少姜卒。公如晋,及河。晋侯使士文伯来辞,曰:“非伉俪也。请君无辱!”公还,季孙宿遂致服焉。叔向言陈无宇于晋侯曰:“彼何罪?君使公族逆之,齐使上大夫送之。犹曰不共,君求以贪。国则不共,而执其使。君刑已颇,何以为盟主?且少姜有辞。”冬十月,陈无宇归。

  十一月,郑印段如晋吊。

  

  

  !昭公三年

  【经】三年春王正月丁未,滕子原卒。夏,叔弓如滕。五月,葬滕成公。秋,小邾子来朝。八月,大雩。冬,大雨雹。北燕伯款出奔齐。

  

  【传】三年春,王正月,郑游吉如晋,送少姜之葬。梁丙与张趯见之。梁丙曰:“甚矣哉!子之为此来也。”子大叔曰:“将得已乎?昔文、襄之霸也,其务不烦诸侯。令诸侯三岁而聘,五岁而朝,有事而会,不协而盟。君薨,大夫吊,卿共葬事。夫人,士吊,大夫送葬。足以昭礼命事谋阙而已,无加命矣。今嬖宠之丧,不敢择位,而数于守適,唯惧获戾,岂敢惮烦?少姜有宠而死,齐必继室。

  今兹吾又将来贺,不唯此行也。”张趯曰:“善哉!吾得闻此数也。然自今,子其无事矣。譬如火焉,火中,寒暑乃退。此其极也,能无退乎?晋将失诸侯,诸侯求烦不获。”二大夫退。子大叔告人曰:“张趯有知,其犹在君子之后乎!”丁未,滕子原卒。同盟,故书名。

  齐侯使晏婴请继室于晋,曰:“寡君使婴曰:‘寡人愿事君,朝夕不倦,将奉质币,以无失时,则国家多难,是以不获。不腆先君之適,以备内官,焜耀寡人之望,则又无禄,早世殒命,寡人失望。君若不忘先君之好,惠顾齐国,辱收寡人,徼福于大公、丁公,照临敝邑,镇抚其社稷,则犹有先君之適及遗姑姊妹若而人。君若不弃敝邑,而辱使董振择之,以备嫔嫱,寡人之望也。’”韩宣子使叔向对曰:“寡君之愿也。寡君不能独任其社稷之事,未有伉俪。在縗绖之中,是以未敢请。君有辱命,惠莫大焉。若惠顾敝邑,抚有晋国,赐之内主,岂唯寡君,举群臣实受其贶。其自唐叔以下,实宠嘉之。”

  既成昏,晏子受礼。叔向从之宴,相与语。叔向曰:“齐其何如?”晏子曰:“此季世也,吾弗知。齐其为陈氏矣!公弃其民,而归于陈氏。齐旧四量,豆、区、釜、钟。四升为豆,各自其四,以登于釜。釜十则钟。陈氏三量,皆登一焉,钟乃大矣。以家量贷,而以公量收之。山木如市,弗加于山。鱼盐蜃蛤,弗加于海。民参其力,二入于公,而衣食其一。公聚朽蠹,而三老冻馁。国之诸市,屦贱踊贵。民人痛疾,而或燠休之,其爱之如父母,而归之如流水,欲无获民,将焉辟之?箕伯、直柄、虞遂、伯戏,其相胡公、大姬,已在齐矣。”

  叔向曰:“然。虽吾公室,今亦季世也。戎马不驾,卿无军行,公乘无人,卒列无长。庶民罢敝,而宫室滋侈。道殣相望,而女富溢尤。民闻公命,如逃寇仇。栾、郤、胥、原、狐、续、庆、伯,降在皂隶。政在家门,民无所依,君日不悛,以乐慆忧。公室之卑,其何日之有?《谗鼎之铭》曰:‘昧旦丕显,后世犹怠。’况日不悛,其能久乎?”宴子曰:“子将若何?”叔向曰:“晋之公族尽矣。肸闻之,公室将卑,其宗族枝叶先落,则公从之。肸之宗十一族,唯羊舌氏在而已。肸又无子。公室无度,幸而得死,岂其获祀?”初,景公欲更晏子之宅,曰:“子之宅近市,湫隘嚣尘,不可以居,请更诸爽垲者。”辞曰:“君之先臣容焉,臣不足以嗣之,于臣侈矣。且小人近市,朝夕得所求,小人之利也。敢烦里旅?”公笑曰:“子近市,识贵贱乎?”对曰:“既利之,敢不识乎?”公曰:“何贵何贱?”于是景公繁于刑,有鬻踊者。故对曰:“踊贵屦贱。”既已告于君,故与叔向语而称之。景公为是省于刑。君子曰:“仁人之言,其利博哉。晏子一言而齐侯省刑。《诗》曰:‘君子如祉,乱庶遄已。’其是之谓乎!”及宴子如晋,公更其宅,反,则成矣。既拜,乃毁之,而为里室,皆如其旧。

  则使宅人反之,曰:“谚曰:‘非宅是卜,唯邻是卜。’二三子先卜邻矣,违卜不祥。君子不犯非礼,小人不犯不祥,古之制也。吾敢违诸乎?”卒复其旧宅。

  公弗许,因陈桓子以请,乃许之。

  夏四月,郑伯如晋,公孙段相,甚敬而卑,礼无违者。晋侯嘉焉,授之以策,曰:“子丰有劳于晋国,余闻而弗忘。赐女州田,以胙乃旧勋。”伯石再拜稽首,受策以出。君子曰:“礼,其人之急也乎!伯石之汰也,一为礼于晋,犹荷其禄,况以礼终始乎?《诗》曰:‘人而无礼,胡不遄死?’其是之谓乎!”初,州县,栾豹之邑也。及栾氏亡,范宣子、赵文子、韩宣子皆欲之。文子曰:“温,吾县也。”二宣子曰:“自郤称以别,三传矣。晋之别县不唯州,谁获治之?”文子病之,乃舍之。二子曰:“吾不可以正议而自与也。”皆舍之。

  及文子为政,赵获曰:“可以取州矣。”文子曰:“退!二子之言,义也。违义,祸也。余不能治余县,又焉用州?其以徼祸也?君子曰:‘弗知实难。’知而弗从,祸莫大焉。有言州必死。”

  丰氏故主韩氏,伯石之获州也,韩宣子为请之,为其复取之之故。

  五月,叔弓如滕,葬滕成公,子服椒为介。及郊,遇懿伯之忌,敬子不入。

  惠伯曰:“公事有公利,无私忌,椒请先入。”乃先受馆。敬子从之。

  晋韩起如齐逆女。公孙虿为少姜之有宠也,以其子更公女而嫁公子。人谓宣子:“子尾欺晋,晋胡受之?”宣子曰:“我欲得齐而远其宠,宠将来乎?”秋七月,郑罕虎如晋,贺夫人,且告曰:“楚人日征敝邑,以不朝立王之故。

  敝邑之往,则畏执事,其谓寡君‘而固有外心。’其不往,则宋之盟云。进退罪也。寡君使虎布之。”宣子使叔向对曰:“君若辱有寡君,在楚何害?修宋盟也。

  君苟思盟,寡君乃知免于戾矣。君若不有寡君,虽朝夕辱于敝邑,寡君猜焉。君实有心,何辱命焉?君其往也!苟有寡君,在楚犹在晋也。”

  张趯使谓大叔曰:“自子之归也,小人粪除先人之敝庐,曰子其将来。今子皮实来,小人失望。”大叔曰:“吉贱,不获来,畏大国,尊夫人也。且孟曰:‘而将无事。’吉庶几焉。”

  小邾穆公来朝。季武子欲卑之,穆叔曰:“不可。曹、滕、二邾,实不忘我好,敬以逆之,犹惧其贰。又卑一睦,焉逆群好也?其如旧而加敬焉!《志》曰:‘能敬无灾。’又曰:‘敬逆来者,天所福也。’”季孙从之。

  八月,大雩,旱也。

  齐侯田于莒,卢蒲弊见,泣且请曰:“余发如此种种,余奚能为?”公曰:“诺,吾告二子。”归而告之。子尾欲复之,子雅不可,曰:“彼其发短而心甚长,其或寝处我矣。”九月,子雅放卢蒲弊于北燕。

  燕简公多嬖宠,欲去诸大夫而立其宠人。冬,燕大夫比以杀公之外嬖。公惧,奔齐。书曰:“北燕伯款出奔齐。”罪之也。

  十月,郑伯如楚,子产相。楚子享之,赋《吉日》。既享,子产乃具田备,王以田江南之梦。

  齐公孙灶卒。司马灶见晏子,曰:“又丧子雅矣。”晏子曰:“惜也!子旗不免,殆哉!姜族弱矣,而妫将始昌。二惠竞爽,犹可,又弱一个焉,姜其危哉!”

  

  !昭公四年

  【经】四年春王正月,大雨雹。夏,楚子、蔡侯、陈侯、郑伯、许男、徐子、滕子、顿子、胡子、沈子、小邾子、宋世子佐、淮夷会于申。楚子执徐子。秋七月,楚子、蔡侯、陈侯、许男、顿子、胡子、沈子、淮夷伐吴,执齐庆封,杀之。

  遂灭赖。九月,取鄫。冬十有二月乙卯,叔孙豹卒。

  

  【传】四年春,王正月,许男如楚,楚子止之,遂止郑伯,复田江南,许男与焉。使椒举如晋求诸侯,二君待之。椒举致命曰:“寡君使举曰:‘日君有惠,赐盟于宋,曰:晋、楚之从,交相见也。以岁之不易,寡人愿结欢于二三君。’使举请间。君若苟无四方之虞,则愿假宠以请于诸侯。”

  晋侯欲勿许。司马侯曰:“不可。楚王方侈,天或者欲逞其心,以厚其毒而降之罚,未可知也。其使能终,亦未可知也。晋、楚唯天所相,不可与争。君其许之,而修德以待其归。若归于德,吾犹将事之,况诸侯乎?若适淫虐,楚将弃之,吾又谁与争?”曰:“晋有三不殆,其何敌之有?国险而多马,齐、楚多难。

  有是三者,何乡而不济?”对曰:“恃险与马,而虞邻国之难,是三殆也。四岳、三涂、阳城、大室、荆山、中南,九州之险也,是不一姓。冀之北土,马之所生,无兴国焉。恃险与马,不可以为固也,从古以然。是以先王务修德音以亨神人,不闻其务险与马也。邻国之难,不可虞也。或多难以固其国,启其疆土;或无难以丧其国,失其守宇。若何虞难?齐有仲孙之难而获桓公,至今赖之。晋有里、丕之难而获文公,是以为盟主。卫、邢无难,敌亦丧之。故人之难,不可虞也。

  恃此三者,而不修政德,亡于不暇,又何能济?君其许之!纣作淫虐,文王惠和,殷是以陨,周是以兴,夫岂争诸侯?”乃许楚使。使叔向对曰:“寡君有社稷之事,是以不获春秋时见。诸侯,君实有之,何辱命焉?”椒举遂请昏,晋侯许之。

  楚子问于子产曰:“晋其许我诸侯乎?”对曰:“许君。晋君少安,不在诸侯。其大夫多求,莫匡其君。在宋之盟,又曰如一,若不许君,将焉用之?”王曰:“诸侯其来乎?”对曰:“必来。从宋之盟,承君之欢,不畏大国,何故不来?不来者,其鲁、卫、曹、邾乎?曹畏宋,邾畏鲁,鲁、卫逼于齐而亲于晋,唯是不来。其余,君之所及也,谁敢不至?”王曰:“然则吾所求者,无不可乎?”对曰:“求逞于人,不可;与人同欲,尽济。”

  大雨雹。季武子问于申丰曰:“雹可御乎?”对曰:“圣人在上,无雹,虽有,不为灾。古者,日在北陆而藏冰;西陆,朝觌而出之。其藏冰也,深山穷谷,固阴冱寒,于是乎取之。其出之也,朝之禄位,宾食丧祭,于是乎用之。其藏之也,黑牲、秬黍,以享司寒。其出之也,桃弧、棘矢,以除其灾。其出入也时。

  食肉之禄,冰皆与焉。大夫命妇,丧浴用冰。祭寒而藏之,献羔而启之,公始用之。火出而毕赋。自命夫、命妇,至于老疾,无不受冰。山人取之,县人传之,舆人纳之,隶人藏之。夫冰以风壮,而以风出。其藏之也周,其用之也遍,则冬无愆阳,夏无伏阴,春无凄风,秋无苦雨,雷不出震,无灾霜雹,疠疾不降,民不夭札。今藏川池之冰,弃而不用。风不越而杀,雷不发而震。雹之为灾,谁能御之?《七月》之卒章,藏冰之道也。”

  夏,诸侯如楚,鲁、卫、曹、邾不会。曹、邾辞以难,公辞以时祭,卫侯辞以疾。郑伯先待于申。六月丙午,楚子合诸侯于申。椒举言于楚子曰:“臣闻诸侯无归,礼以为归。今君始得诸侯,其慎礼矣。霸之济否,在此会也。夏启有钧台之享,商汤有景亳之命,周武有孟津之誓,成有岐阳之搜,康有酆宫之朝,穆有涂山之会,齐桓有召陵之师,晋文有践土之盟。君其何用?宋向戌、郑公孙侨在,诸侯之良也,君其选焉。”王曰:“吾用齐桓。”王使问礼于左师与子产。

  左师曰:“小国习之,大国用之,敢不荐闻?”献公合诸侯之礼六。子产曰:“小国共职,敢不荐守?”献伯、子、男会公之礼六。君子谓合左师善守先代,子产善相小国。王使椒举侍于后,以规过。卒事,不规。王问其故,对曰:“礼,吾所未见者有六焉,又何以规?”宋大子佐后至,王田于武城,久而弗见。椒举请辞焉。王使往,曰:“属有宗祧之事于武城,寡君将堕币焉,敢谢后见。”

  徐子,吴出也,以为贰焉,故执诸申。

  楚子示诸侯侈,椒举曰:“夫六王二公之事,皆所以示诸侯礼也,诸侯所由用命也。夏桀为仍之会,有緍叛之。商纣为黎之蒐,东夷叛之。周幽为大室之盟,戎狄叛之。皆所以示诸侯汰也,诸侯所由弃命也。今君以汰,无乃不济乎?”王弗听。

  子产见左师曰:“吾不患楚矣,汰而愎谏,不过十年。”左师曰:“然。不十年侈,其恶不远,远恶而后弃。善亦如之,德远而后兴。”

  秋七月,楚子以诸侯伐吴。宋大子、郑伯先归。宋华费遂、郑大夫从。使屈申围朱方,八月甲申,克之。执齐庆封而尽灭其族。将戮庆封。椒举曰:“臣闻无瑕者可以戮人。庆封唯逆命,是以在此,其肯从于戮乎?播于诸侯,焉用之?”王弗听,负之斧钺,以徇于诸侯,使言曰:“无或如齐庆封,弑其君,弱其孤,以盟其大夫。”庆封曰:“无或如楚共王之庶子围,弑其君、兄之子麇而代之,以盟诸侯。”王使速杀之。

  遂以诸侯灭赖。赖子面缚衔璧,士袒,舆榇从之,造于中军。王问诸椒举,对曰:“成王克许,许僖公如是,王亲释其缚,受其璧,焚其榇。”王从之。迁赖于鄢。楚子欲迁许于赖,使斗韦龟与公子弃疾城之而还。申无宇曰:“楚祸之首,将在此矣。召诸侯而来,伐国而克,城竟莫校。王心不违,民其居乎?民之不处,其谁堪之?不堪王命,乃祸乱也。”

  九月,取鄫,言易也。莒乱,著丘公立而不抚鄫,鄫叛而来,故曰取。

  凡克邑不用师徒曰取。

  郑子产作丘赋。国人谤之,曰:“其父死于路,己为虿尾。以令于国,国将若之何?”子宽以告。子产曰:“何害?苟利社稷,死生以之。且吾闻为善者不改其度,故能有济也。民不可逞,度不可改。《诗》曰:‘礼义不愆,何恤于人言。’吾不迁矣。浑罕曰:“国氏其先亡乎!君子作法于凉,其敝犹贪。作法于贪,敝将若之何?姬在列者,蔡及曹、滕其先亡乎!逼而无礼。郑先卫亡,逼而无法。政不率法,而制于心。民各有心,何上之有?”冬,吴伐楚,入棘、栎、麻,以报朱方之役。楚沈尹射奔命于夏汭,咸尹宜咎城钟离,薳启强城巢,然丹城州来。东国水,不可以城。彭生罢赖之师。

  初,穆子去叔孙氏,及庚宗,遇妇人,使私为食而宿焉。问其行,告之故,哭而送之。适齐,娶于国氏,生孟丙、仲壬。梦天压己,弗胜。顾而见人,黑而上偻,深目而豭喙。号之曰:“牛!助余!”乃胜之。旦而皆召其徒,无之。且曰:“志之。”及宣伯奔齐,馈之。宣伯曰:“鲁以先子之故,将存吾宗,必召女。召女,何如?”对曰:“愿之久矣。”鲁人召之,不告而归。既立,所宿庚宗之妇人,献以雉。问其姓,对曰:“余子长矣,能奉雉而从我矣。”召而见之,则所梦也。未问其名,号之曰:“牛!”曰:“唯”。皆召其徒,使视之,遂使为竖。有宠,长使为政。公孙明知叔孙于齐,归,未逆国姜,子明取之。故怒,其子长而后使逆之。田于丘莸,遂遇疾焉。竖牛欲乱其室而有之,强与孟盟,不可。叔孙为孟钟,曰:“尔未际,飨大夫以落之。”既具,使竖牛请日。入,弗谒。出,命之日。及宾至,闻钟声。牛曰:“孟有北妇人之客。”怒,将往,牛止之。宾出,使拘而杀诸外,牛又强与仲盟,不可。仲与公御莱书观于公,公与之环。使牛入示之。入,不示。出,命佩之。牛谓叔孙:“见仲而何?”叔孙曰:“何为?”曰:“不见,既自见矣。公与之环而佩之矣。”遂逐之,奔齐。疾急,命召仲,牛许而不召。

  杜泄见,告之饥渴,授之戈。对曰:“求之而至,又何去焉?”竖牛曰:“夫子疾病,不欲见人。”使置馈于个而退。牛弗进,则置虚,命彻。十二月癸丑,叔孙不食。乙卯,卒。牛立昭子而相之。

  公使杜泄葬叔孙。竖牛赂叔仲昭子与南遗,使恶杜泄于季孙而去之。杜泄将以路葬,且尽卿礼。南遗谓季孙曰:“叔孙未乘路,葬焉用之?且冢卿无路,介卿以葬,不亦左乎?”季孙曰:“然。”使杜泄舍路。不可,曰:“夫子受命于朝,而聘于王。王思旧勋而赐之路。复命而致之君,君不敢逆王命而复赐之,使三官书之。吾子为司徒,实书名。夫子为司马,与工正书服。孟孙为司空,以书勋。今死而弗以,是弃君命也。书在公府而弗以,是废三官也。若命服,生弗敢服,死又不以,将焉用之?”乃使以葬。

  季孙谋去中军。竖牛曰:“夫子固欲去之。”

  

  

  !昭公五年

  【经】五年春王正月,舍中军。楚杀其大夫屈申。公如晋。夏,莒牟夷以牟娄及防、兹来奔。秋七月,公至自晋。戊辰,叔弓帅师败莒师于蚡泉。秦伯卒。

  冬,楚子、蔡侯、陈侯、许男、顿子、沈子、徐人、越人伐吴。

  

  【传】五年春,王正月,舍中军,卑公室也。毁中军于施氏,成诸臧氏。初作中军,三分公室而各有其一。季氏尽征之,叔孙氏臣其子弟,孟氏取其半焉。

  及其舍之也,四分公室,季氏择二,二子各一。皆尽征之,而贡于公。以书。使杜泄告于殡,曰:“子固欲毁中军,既毁之矣,故告。”杜泄曰:“夫子唯不欲毁也,故盟诸僖闳,诅诸五父之衢。”受其书而投之,帅士而哭之。叔仲子谓季孙曰:“带受命于子叔孙曰:‘葬鲜者自西门。’”季孙命杜泄。杜泄曰:“卿丧自朝,鲁礼也。吾子为国政,未改礼,而又迁之。群臣惧死,不敢自也。”既葬而行。

  仲至自齐,季孙欲立之。南遗曰:“叔孙氏厚则季氏薄。彼实家乱,子勿与知,不亦可乎?”南遗使国人助竖牛以攻诸大库之庭。司宫射之,中目而死。竖牛取东鄙三十邑,以与南遗。

  昭子即位,朝其家众,曰:“竖牛祸叔孙氏,使乱大从,杀适立庶,又披其邑,将以赦罪,罪莫大焉。必速杀之。”竖牛惧,奔齐。孟、仲之子杀诸塞关之外,投其首于宁风之棘上。

  仲尼曰:“叔孙昭子之不劳,不可能也。周任有言曰:‘为政者不赏私劳,不罚私怨。’《诗》云:‘有觉德行,四国顺之。’”初,穆子之生也,庄叔以《周易》筮之,遇《明夷》ⅱⅵ之《谦》ⅱⅶ,以示卜楚丘。曰:“是将行,而归为子祀。以谗人入,其名曰牛,卒以馁死。《明夷》,日也。日之数十,故有十时,亦当十位。自王已下,其二为公,其三为卿。

  日上其中,食日为二,旦日为三。《明夷》之《谦》,明而未融,其当旦乎,故曰:‘为子祀’。日之《谦》,当鸟,故曰‘明夷于飞’。明之未融,故曰‘垂其翼’。象日之动,故曰‘君子于行’。当三在旦,故曰‘三日不食’。《离》,火也。《艮》,山也。《离》为火,火焚山,山败。于人为言,败言为谗,故曰‘有攸往,主人有言’,言必谗也。纯《离》为牛,世乱谗胜,胜将适《离》,故曰‘其名曰牛’。谦不足,飞不翔,垂不峻,翼不广,故曰‘其为子后乎’。

  吾子,亚卿也,抑少不终。”

  楚子以屈申为贰于吴,乃杀之。以屈生为莫敖,使与令尹子荡如晋逆女。过郑,郑伯劳子荡于汜,劳屈生于菟氏。晋侯送女于邢丘。子产相郑伯,会晋侯于邢丘。

  公如晋,自郊劳至于赠贿,无失礼。晋侯谓女叔齐曰:“鲁侯不亦善于礼乎?”对曰:“鲁侯焉知礼?”公曰:“何为?自郊劳至于赠贿,礼无违者,何故不知?”对曰:“是仪也,不可谓礼。礼所以守其国,行其政令,无失其民者也。今政令在家,不能取也。有子家羁,弗能用也。奸大国之盟,陵虐小国。利人之难,不知其私。公室四分,民食于他。思莫在公,不图其终。为国君,难将及身,不恤其所。礼之本末,将于此乎在,而屑屑焉习仪以亟。言善于礼,不亦远乎?君子谓:“叔侯于是乎知礼。”

  晋韩宣子如楚送女,叔向为介。郑子皮、子大叔劳诸索氏。大叔谓叔向曰:“楚王汰侈已甚,子其戒之。”叔向曰:“汰侈已甚,身之灾也,焉能及人?若奉吾币帛,慎吾威仪,守之以信,行之以礼,敬始而思终,终无不复,从而不失仪,敬而不失威,道之以训辞,奉之以旧法,考之以先王,度之以二国,虽汰侈,若我何?”及楚,楚子朝其大夫,曰:“晋,吾仇敌也。苟得志焉,无恤其他。今其来者,上卿、上大夫也。若吾以韩起为阍,以羊舌肸为司宫,足以辱晋,吾亦得志矣。可乎?”大夫莫对。薳启强曰:“可。苟有其备,何故不可?耻匹夫不可以无备,况耻国乎?是以圣王务行礼,不求耻人,朝聘有珪,享覜有璋。小有述职,大有巡功。设机而不倚,爵盈而不饮;宴有好货,飧有陪鼎,入有郊劳,出有赠贿,礼之至也。国家之败,失之道也,则祸乱兴。城濮之役,晋无楚备,以败于邲。邲之役,楚无晋备,以败于鄢。自鄢以来,晋不失备,而加之以礼,重之以睦,是以楚弗能报而求亲焉。既获姻亲,又欲耻之,以召寇仇,备之若何?谁其重此?若有其人,耻之可也。若其未有,君亦图之。晋之事君,臣曰可矣:求诸侯而麇至;求昏而荐女,君亲送之,上卿及上大夫致之。犹欲耻之,君其亦有备矣。不然,奈何?韩起之下,赵成、中行吴、魏舒、范鞅、知盈;羊舌肸之下,祁午、张趯、籍谈、女齐、梁丙、张骼、辅跞、苗贲皇,皆诸侯之选也。韩襄为公族大夫,韩须受命而使矣。箕襄、邢带、叔禽、叔椒、子羽,皆大家也。

  韩赋七邑,皆成县也。羊舌四族,皆强家也。晋人若丧韩起、杨肸,五卿八大夫辅韩须、杨石,因其十家九县,长毂九百,其余四十县,遗守四千,奋其武怒,以报其大耻,伯华谋之,中行伯、魏舒帅之,其蔑不济矣。君将以亲易怨,实无礼以速寇,而未有其备,使群臣往遗之禽,以逞君心,何不可之有?”王曰:“不谷之过也,大夫无辱。”厚为韩子礼。王欲敖叔向以其所不知,而不能,亦厚其礼。

  韩起反,郑伯劳诸圉。辞不敢见,礼也。

  郑罕虎如齐,娶于子尾氏。晏子骤见之,陈桓子问其故,对曰:“能用善人,民之主也。”

  夏,莒牟夷以牟娄及防兹来奔。牟夷非卿而书,尊地也。莒人愬于晋。晋侯欲止公,范献子曰:“不可。人朝而执之,诱也。讨不以师,而诱以成之,惰也。

  为盟主而犯此二者,无乃不可乎?请归之,间而以师讨焉。”乃归公。秋七月,公至自晋。

  莒人来讨,不设备。戊辰,叔弓败诸蚡泉,莒未陈也。

  冬十月,楚子以诸侯及东夷伐吴,以报棘、栎、麻之役。薳射以繁扬之师,会于夏汭。越大夫常寿过帅师会楚子于琐。闻吴师出,薳启强帅师从之,遽不设备,吴人败诸鹊岸。

  楚子以驲至于罗汭。吴子使其弟蹶由犒师,楚人执之,将以衅鼓。王使问焉,曰:“女卜来吉乎?”对曰:“吉。寡君闻君将治兵于敝邑,卜之以守龟,曰:‘余亟使人犒师,请行以观王怒之疾徐,而为之备,尚克知之。’龟兆告吉,曰:‘克可知也。’君若欢焉,好逆使臣,滋敝邑休殆,而忘其死,亡无日矣。今君奋焉,震电冯怒,虐执使臣,将以衅鼓,则吴知所备矣。敝邑虽羸,若早修完,其可以息师。难易有备,可谓吉矣。且吴社稷是卜,岂为一人?使臣获衅军鼓,而敝邑知备,以御不虞,其为吉孰大焉?国之守龟,其何事不卜?一臧一否,其谁能常之?城濮之兆,其报在邲。今此行也,其庸有报志?”乃弗杀。

  楚师济于罗汭,沈尹赤会楚子,次于莱山。薳射帅繁扬之师,先入南怀,楚师从之。及汝清,吴不可入。楚子遂观兵于坻箕之山。是行也,吴早设备,楚无功而还,以蹶由归。楚子惧吴,使沈尹射待命于巢,薳启强待命于雩娄,礼也。

  秦后子复归于秦,景公卒故也。

  

  

  !昭公六年

  【经】六年春王正月,杞伯益姑卒。葬秦景公。夏,季孙宿如晋。葬杞文公。

  宋华合比出奔卫。秋九月,大雩。楚薳罢帅师伐吴。冬,叔弓如楚。齐侯伐北燕。

  

  【传】六年春,王正月,杞文公卒,吊如同盟,礼也。大夫如秦,葬景公,礼也。

  三月,郑人铸刑书。叔向使诒子产书,曰:“始吾有虞于子,今则已矣。昔先王议事以制,不为刑辟,惧民之有争心也。犹不可禁御,是故闲之以义,纠之以政,行之以礼,守之以信,奉之以仁,制为禄位以劝其从,严断刑罚以威其淫。

  惧其未也,故诲之以忠,耸之以行,教之以务,使之以和,临之以敬,莅之以强,断之以刚。犹求圣哲之上,明察之官,忠信之长,慈惠之师,民于是乎可任使也,而不生祸乱。民知有辟,则不忌于上,并有争心,以征于书,而徼幸以成之,弗可为矣。夏有乱政而作《禹刑》,商有乱政而作《汤刑》,周有乱政而作《九刑》,三辟之兴,皆叔世也。今吾子相郑国,作封洫,立谤政,制参辟,铸刑书,将以靖民,不亦难乎?《诗》曰:‘仪式刑文王之德,日靖四方。’又曰:‘仪刑文王,万邦作孚。’如是,何辟之有?民知争端矣,将弃礼而征于书。锥刀之末,将尽争之。乱狱滋丰,贿赂并行,终子之世,郑其败乎!肸闻之,国将亡,必多制,其此之谓乎!”复书曰:“若吾子之言,侨不才,不能及子孙,吾以救世也。

  既不承命,敢忘大惠?”士文伯曰:“火见,郑其火乎?火未出而作火以铸刑器,藏争辟焉。火如象之,不火何为?”夏,季孙宿如晋,拜莒田也。晋侯享之,有加笾。武子退,使行人告曰:“小国之事大国也,苟免于讨,不敢求贶。得贶不过三献。今豆有加,下臣弗堪,无乃戾也。”韩宣子曰:“寡君以为欢也。”对曰:“寡君犹未敢,况下臣,君之隶也,敢闻加贶?”固请彻加而后卒事。晋人以为知礼,重其好货。

  宋寺人柳有宠,大子佐恶之。华合比曰:“我杀之。”柳闻之,乃坎、用牲、埋书,而告公曰:“合比将纳亡人之族,既盟于北郭矣。”公使视之,有焉,遂逐华合比,合比奔卫。于是华亥欲代右师,乃与寺人柳比,从为之征,曰“闻之久矣。”公使代之,见于左师,左师曰:“女夫也。必亡!女丧而宗室,于人何有?人亦于女何有?《诗》曰:‘宗子维城,毋俾城坏,毋独斯畏。’女其畏哉!”六月丙戌,郑灾。

  楚公子弃疾如晋,报韩子也。过郑,郑罕虎、公孙侨、游吉从郑伯以劳诸柤。辞不敢见,固请见之,见,如见王,以其乘马八匹私面。见子皮如上卿,以马六匹。见子产,以马四匹。见子大叔,以马二匹。禁刍牧采樵,不入田,不樵树,不采刈,不抽屋,不强匄。誓曰:“有犯命者,君子废,小人降。”舍不为暴,主不慁宾。往来如是。郑三卿皆知其将为王也。

  韩宣子之适楚也,楚人弗逆。公子弃疾及晋竟,晋侯将亦弗逆。叔向曰:“楚辟我衷,若何效辟?《诗》曰:‘尔之教矣,民胥效矣。’从我而已,焉用效人之辟?《书》曰:‘圣作则。’无宁以善人为则,而则人之辟乎?匹夫为善,民犹则之,况国君乎?”晋侯说,乃逆之。

  秋九月,大雩,旱也。

  徐仪楚聘于楚。楚子执之,逃归。惧其叛也,使薳泄伐徐。吴人救之。令尹子荡帅师伐吴,师于豫章,而次于乾溪。吴人败其师于房钟,获宫厩尹弃疾。子荡归罪于薳泄而杀之。

  冬,叔弓如楚聘,且吊败也。

  十一月,齐侯如晋,请伐北燕也。士匄相士鞅,逆诸河,礼也。晋侯许之。

  十二月,齐侯遂伐北燕,将纳简公。晏子曰:“不入。燕有君矣,民不贰。吾君贿,左右谄谀,作大事不以信,未尝可也。”

  

  

  !昭公七年

  【经】七年春王正月,暨齐平。三月,公如楚。叔孙婼如齐莅盟。夏四月甲辰朔,日有食之。秋八月戊辰,卫侯恶卒。九月,公至自楚。冬十有一月癸未,季孙宿卒。十有二月癸亥,葬卫襄公。

  

  【传】七年春,王正月,暨齐平,齐求之也。癸巳,齐侯次于虢。燕人行成,曰:“敝邑知罪,敢不听命?先君之敝器,请以谢罪。”公孙皙曰:“受服而退,俟衅而动,可也。”二月戊午,盟于濡上。燕人归燕姬,赂以瑶瓮、玉椟、斗耳,不克而还。

  楚子之为令尹也,为王旌以田。芋尹无宇断之,曰:“一国两君,其谁堪之?”及即位,为章华之宫,纳亡人以实之。无宇之阍入焉。无宇执之,有司弗与,曰:“执人于王宫,其罪大矣。”执而谒诸王。王将饮酒,无宇辞曰:“天子经略,诸侯正封,古之制也。封略之内,何非君土?食土之毛,谁非君臣?故《诗》曰:‘普天之下,莫非王土。率土之滨,莫非王臣。’天有十日,人有十等,下所以事上,上所以共神也。故王臣公,公臣大夫,大夫臣士,士臣皂,皂臣舆,舆臣隶,隶臣僚,僚臣仆,仆臣台。马有圉,牛有牧,以待百事。今有司曰:‘女胡执人于王宫?’将焉执之?周文王之法曰:‘有亡,荒阅’,所以得天下也。吾先君文王,作仆区之法,曰:‘盗所隐器,与盗同罪’,所以封汝也。若从有司,是无所执逃臣也。逃而舍之,是无陪台也。王事无乃阙乎?昔武王数纣之罪,以告诸侯曰:‘纣为天下逋逃主,萃渊薮’,故夫致死焉。君王始求诸侯而则纣,无乃不可乎?若以二文之法取之,盗有所在矣。”王曰:“取而臣以往,盗有宠,未可得也。”遂赦之。

  楚子成章华之台,愿与诸侯落之。大宰薳启强曰:“臣能得鲁侯。”薳启强来召公,辞曰:“昔先君成公,命我先大夫婴齐曰:‘吾不忘先君之好,将使衡父照临楚国,镇抚其社稷,以辑宁尔民’。婴齐受命于蜀,奉承以来,弗敢失陨,而致诸宗祧。日我先君共王,引领北望,日月以冀。传序相授,于今四王矣。嘉惠未至,唯襄公之辱临我丧。孤与其二三臣,悼心失图,社稷之不皇,况能怀思君德!今君若步玉趾,辱见寡君,宠灵楚国,以信蜀之役,致君之嘉惠,是寡君既受贶矣,何蜀之敢望?其先君鬼神,实嘉赖之,岂唯寡君?君若不来,使臣请问行期,寡君将承质币而见于蜀,以请先君之贶。”

  公将往,梦襄公祖。梓慎曰:“君不果行。襄公之适楚也,梦周公祖而行。

  今襄公实祖,君其不行。”子服惠伯曰:“行。先君未尝适楚,故周公祖以道之。

  襄公适楚矣,而祖以道君,不行,何之?”三月,公如楚,郑伯劳于师之梁。孟僖子为介,不能相仪。及楚,不能答郊劳。

  夏四月甲辰朔,日有食之。晋侯问于士文伯曰:“谁将当日食?”对曰:“鲁、卫恶之,卫大鲁小。”公曰:“何故?”对曰:“去卫地,如鲁地。于是有灾,鲁实受之。其大咎,其卫君乎?鲁将上卿。”公曰:“《诗》所谓‘彼日而食,于何不臧’者,何也?”对曰:“不善政之谓也。国无政,不用善,则自取谪于日月之灾,故政不可不慎也。务三而已,一曰择人,二曰因民,三曰从时。”

  晋人来治杞田,季孙将以成与之。谢息为孟孙守,不可。曰:“人有言曰:‘虽有挈瓶之知,守不假器,礼也’。夫子从君,而守臣丧邑,虽吾子亦有猜焉。”

  季孙曰:“君之在楚,于晋罪也。又不听晋,鲁罪重矣。晋师必至,吾无以待之,不如与之,间晋而取诸杞。吾与子桃,成反,谁敢有之?是得二成也。鲁无忧而孟孙益邑,子何病焉?”辞以无山,与之莱、柞,乃迁于桃。晋人为杞取成。

  楚子享公于新台,使长鬛者相,好以大屈。既而悔之。薳启强闻之,见公。

  公语之,拜贺。公曰:“何贺?对曰:“齐与晋、越欲此久矣。寡君无適与也,而传诸君,君其备御三邻。慎守宝矣,敢不贺乎?”公惧,乃反之。

  郑子产聘于晋。晋侯疾,韩宣子逆客,私焉,曰:“寡君寝疾,于今三月矣,并走群望,有加而无瘳。今梦黄熊入于寝门,其何厉鬼也?”对曰:“以君之明,子为大政,其何厉之有?昔尧殛鲧于羽山,其神化为黄熊,以入于羽渊,实为夏郊,三代祀之。晋为盟主,其或者未之祀也乎?”韩子祀夏郊,晋侯有间,赐子产莒之二方鼎。

  子产为丰施归州田于韩宣子,曰:“日君以夫公孙段为能任其事,而赐之州田,今无禄早世,不获久享君德。其子弗敢有,不敢以闻于君,私致诸子。”宣子辞。子产曰:“古人有言曰:‘其父析薪,其子弗克负荷’。施将惧不能任其先人之禄,其况能任大国之赐?纵吾子为政而可,后之人若属有疆场之言,敝邑获戾,而丰氏受其大讨。吾子取州,是免敝邑于戾,而建置丰氏也。敢以为请。”

  宣子受之,以告晋侯。晋侯以与宣子。宣子为初言,病有之,以易原县于乐大心。

  郑人相惊以伯有,曰“伯有至矣”,则皆走,不知所往。铸刑书之岁二月,或梦伯有介而行,曰:“壬子,余将杀带也。明年壬寅,余又将杀段也。”及壬子,驷带卒,国人益惧。齐、燕平之月壬寅,公孙段卒。国人愈惧。其明月,子产立公孙泄及良止以抚之,乃止。子大叔问其故,子产曰:“鬼有所归,乃不为厉,吾为之归也。”大叔曰:“公孙泄何为?”子产曰:“说也。为身无义而图说,从政有所反之,以取媚也。不媚,不信。不信,民不从也。”

  及子产适晋,赵景子问焉,曰:“伯有犹能为鬼乎?”子产曰:“能。人生始化曰魄,既生魄,阳曰魂。用物精多,则魂魄强。是以有精爽,至于神明。匹夫匹妇强死,其魂魄犹能冯依于人,以为淫厉,况良霄,我先君穆公之胄,子良之孙,子耳之子,敝邑之卿,从政三世矣。郑虽无腆,抑谚曰‘蕞尔国’,而三世执其政柄,其用物也弘矣,其取精也多矣。其族又大,所冯厚矣。而强死,能为鬼,不亦宜乎?”子皮之族饮酒无度,故马师氏与子皮氏有恶。齐师还自燕之月,罕朔杀罕魋。

  罕朔奔晋。韩宣子问其位于子产。子产曰:“君之羁臣,苟得容以逃死,何位之敢择?卿违,从大夫之位,罪人以其罪降,古之制也。朔于敝邑,亚大夫也,其官,马师也。获戾而逃,唯执政所置之。得免其死,为惠大矣,又敢求位?”宣子为子产之敏也,使从嬖大夫。

  秋八月,卫襄公卒。晋大夫言于范献子曰:“卫事晋为睦,晋不礼焉,庇其贼人而取其地,故诸侯贰。《诗》曰:‘鹡鸰在原,兄弟急难。’又曰:‘死丧之威,兄弟孔怀。’兄弟之不睦,于是乎不吊,况远人,谁敢归之?今又不礼于卫之嗣,卫必叛我,是绝诸侯也。”献子以告韩宣子。宣子说,使献子如卫吊,且反戚田。

  卫齐恶告丧于周,且请命。王使成简公如卫吊,且追命襄公曰:“叔父陟恪,在我先王之左右,以佐事上帝。余敢高圉、亚圉?”九月,公至自楚。孟僖子病不能相礼,乃讲学之,苟能礼者从之。及其将死也,召其大夫曰:“礼,人之干也。无礼,无以立。吾闻将有达者曰孔丘,圣人之后也,而灭于宋。其祖弗父何,以有宋而授厉公。及正考父,佐戴、武、宣,三命兹益共。故其鼎铭云:‘一命而偻,再命而伛,三命而俯。循墙而走,亦莫余敢侮。饘于是,鬻于是,以糊余口。’其共也如是。臧孙纥有言曰:‘圣人有明德者,若不当世,其后必有达人。’今其将在孔丘乎?我若获没,必属说与何忌于夫子,使事之,而学礼焉,以定其位。”故孟懿子与南宫敬叔师事仲尼。

  仲尼曰:“能补过者,君子也。《诗》曰:‘君子是则是效。’孟僖子可则效已矣。”

  单献公弃亲用羁。冬十月辛酉,襄、顷之族杀献公而立成公。

  十一月,季武子卒。晋侯谓伯瑕曰:“吾所问日食,从矣,可常乎?”对曰:“不可。六物不同,民心不一,事序不类,官职不则,同始异终,胡可常也?《诗》曰:‘或燕燕居息,或憔悴事国。’其异终也如是。”公曰:“何谓六物?”对曰:“岁、时、日、月、星、辰,是谓也。”公曰:“多语寡人辰,而莫同。

  何谓辰?”对曰:“日月之会,是谓辰,故以配日。”

  卫襄公夫人姜氏无子,嬖人婤姶生孟絷。孔成子梦康叔谓己:“立元,余使羁之孙圉与史苟相之。”史朝亦梦康叔谓己:“余将命而子苟与孔烝鉏之曾孙圉相元。”史朝见成子,告之梦,梦协。晋韩宣子为政聘于诸侯之岁,婤姶生子,名之曰元。孟絷之足不良,能行。孔成子以《周易》筮之,曰:“元尚享卫国主其社稷。”遇《屯》ⅴⅲ。又曰:“余尚立絷,尚克嘉之。”遇《屯》ⅴⅲ之比ⅴⅱ。以示史朝。史朝曰:‘元亨’,又何疑焉?”成子曰:“非长之谓乎?”对曰:“康叔名之,可谓长矣。孟非人也,将不列于宗,不可谓长。且其繇曰‘利建侯’。嗣吉,何建?建非嗣也。二卦皆云,子其建之。康叔命之,二筮袭于梦,武王所用也,弗从何为?弱足者居,侯主社稷,临祭祀,奉民人,事民人,鬼神,从会朝,又焉得居?各以所利,不亦可乎?”故孔成子立灵公。

  十二月癸亥,葬卫襄公。

  

  

  !昭公八年

  【经】八年春,陈侯之弟招杀陈世子偃师。夏四月辛丑,陈侯溺卒。叔弓如晋。楚人执陈行人干征师杀之。陈公子留出奔郑。秋,蒐于红。陈人杀其大夫公子过。大雩,冬十月壬午,楚师灭陈。执陈公子招,放之于越。杀陈孔奂。葬陈哀公。

  

  【传】八年春,石言于晋魏榆。晋侯问于师旷曰:“石何故言?”对曰:“石不能言,或冯焉。不然,民听滥也。抑臣又闻之曰:‘作事不时,怨讟动于民,则有非言之物而言。’今宫室崇侈,民力凋尽,怨讟并作,莫保其性。石言,不亦宜乎?”于是晋侯方筑虒祁之宫。叔向曰:“子野之言,君子哉!君子之言,信而有征,故怨远于其身。小人之言,僣而无征,故怨咎及之。《诗》曰:‘哀哉不能言,匪舌是出,唯躬是瘁。哿矣能言,巧言如流,俾躬处休。’其是之谓乎?是宫也成,诸侯必叛,君必有咎,夫子知之矣。”

  陈哀公元妃郑姬,生悼大子偃师,二妃生公子留,下妃生公子胜。二妃嬖,留有宠,属诸徒招与公子过。哀公有废疾。三月甲申,公子招、公子过杀悼大子偃师,而立公子留。

  夏四月辛亥,哀公缢。干征师赴于楚,且告有立君。公子胜愬之于楚,楚人执而杀之。公子留奔郑。书曰“陈侯之弟招杀陈世子偃师”,罪在招也;“楚人执陈行人干征师杀之”,罪不在行人也。

  叔弓如晋,贺虒祁也。游吉相郑伯以如晋,亦贺虒祁也。史赵见子大叔,曰:“甚哉,其相蒙也!可吊也,而又贺之?”子大叔曰:“若何吊也?其非唯我贺,将天下实贺。”

  秋,大蒐于红,自根牟至于商、卫,革车千乘。

  七月甲戌,齐子尾卒,子旗欲治其室。丁丑,杀梁婴。八月庚戌,逐子成、子工、子车,皆来奔,而立子良氏之宰。其臣曰:“孺子长矣,而相吾室,欲兼我也。”授甲,将攻之。陈桓子善于子尾,亦授甲,将助之。或告子旗,子旗不信。则数人告。将往,又数人告于道,遂如陈氏。桓子将出矣,闻之而还,游服而逆之。请命,对曰:“闻强氏授甲将攻子,子闻诸?”曰:“弗闻。”“子盍亦授甲?无宇请从。”子旗曰:“子胡然?彼孺子也,吾诲之犹惧其不济,吾又宠秩之。其若先人何?子盍谓之?《周书》曰:‘惠不惠,茂不茂。’康叔所以服弘大也。”桓子稽颡曰:“顷、灵福子,吾犹有望。”遂和之如初。

  陈公子招归罪于公子过而杀之。九月,楚公子弃疾帅师奉孙吴围陈,宋戴恶会之。冬十一月壬午,灭陈。舆嬖袁克,杀马毁玉以葬。楚人将杀之,请置之。

  既又请私,私于幄,加绖于颡而逃。使穿封戌为陈公,曰:“城麇之役,不谄。”

  侍饮酒于王,王曰:“城麇之役,女知寡人之及此,女其辟寡人乎?”对曰:“若知君之及此,臣必致死礼,以息楚国。”晋侯问于史赵,曰:“陈其遂亡乎?”对曰:“未也。”公曰:“何故?”对曰:“陈,颛顼之族也。岁在鹑火,是以卒灭,陈将如之。今在析木之津,犹将复由。且陈氏得政于齐而后陈卒亡。自幕至于瞽瞍,无违命。舜重之以明德,置德于遂,遂世守之。及胡公不淫,胡周赐之姓,使祀虞帝。臣闻盛德必百世祀,虞之世数未也。继守将在齐,其兆既存矣。”

  

  

  !昭公九年

  【经】九年春,叔弓会楚子于陈。许迁于夷。夏四月,陈灾。秋,仲孙玃如齐。冬,筑郎囿。

  

  【传】九年春,叔弓、宋华亥、郑游吉、卫赵黡会楚子于陈。

  二月庚申,楚公子弃疾迁许于夷,实城父,取州来淮北之田以益之。伍举授许男田。然丹迁城父人于陈,以夷濮西田益之。迁方城外人于许。

  周甘人与晋阎嘉争阎田。晋梁丙、张趯率阴戎伐颍。王使詹桓伯辞于晋曰:“我自夏以后稷,魏、骀、芮、岐、毕,吾西土也。及武王克商,蒲姑、商奄,吾东土也;巴、濮、楚、邓,吾南土也;肃慎、燕、亳,吾北土也。吾何迩封之有?文、武、成、康之建母弟,以蕃屏周,亦其废队是为,岂如弁髦而因以敝之?先王居梼杌于四裔,以御螭魅,故允姓之奸,居于瓜州,伯父惠公归自秦,而诱以来,使逼我诸姬,入我郊甸,则戎焉取之。戎有中国,谁之咎也?后稷封殖天下,今戎制之,不亦难乎?伯父图之。我在伯父,犹衣服之有冠冕,木水之有本原,民人之有谋主也。伯父若裂冠毁冕,拔本塞原,专弃谋主,虽戎狄其何有余一人?”叔向谓宣子曰:“文之伯也,岂能改物?翼戴天子而加之以共。自文以来,世有衰德而暴灭宗周,以宣示其侈,诸侯之贰,不亦宜乎?且王辞直,子其图之。”宣子说。

  王有姻丧,使赵成如周吊,且致阎田与襚,反颍俘。王亦使宾滑执甘大夫襄以说于晋,晋人礼而归之。

  夏四月,陈灾。郑裨灶曰:“五年,陈将复封。封五十二年而遂亡。”子产问其故,对曰:“陈,水属也,火,水妃也,而楚所相也。今火出而火陈,逐楚而建陈也。妃以五成,故曰五年。岁五及鹑火,而后陈卒亡,楚克有之,天之道也,故曰五十二年。”

  晋荀盈如齐逆女,还,六月,卒于戏阳。殡于绛,未葬。晋侯饮酒,乐。膳宰屠蒯趋入,请佐公使尊,许之。而遂酌以饮工,曰:“女为君耳,将司聪也。

  辰在子卯,谓之疾日。君彻宴乐,学人舍业,为疾故也。君之卿佐,是谓股肱。

  股肱或亏,何痛如之?女弗闻而乐,是不聪也。”又饮外嬖嬖叔曰:“女为君目,将司明也。服以旌礼,礼以行事,事有其物,物有其容。今君之容,非其物也,而女不见。是不明也。”亦自饮也,曰:“味以行气,气以实志,志以定言,言以出令。臣实司味,二御失官,而君弗命,臣之罪也。”公说,彻酒。

  初,公欲废知氏而立其外嬖,为是悛而止。秋八月,使荀跞佐下军以说焉。

  孟僖子如齐殷聘,礼也。

  冬,筑郎囿,书,时也。季平子欲其速成也,叔孙昭子曰:“《诗》曰:‘经始勿亟,庶民子来。’焉用速成?其以剿民也?无囿犹可,无民其可乎?”

  

  !昭公十年

  【经】十年春王正月。夏,齐栾施来奔。秋七月,季孙意如、叔弓、仲孙玃帅师伐莒。戊子,晋侯彪卒。九月,叔孙婼如晋,葬晋平公。十有二月甲子,宋公成卒。

  

  【传】十年春,王正月,有星出于婺女。郑裨灶言于子产曰:“七月戊子,晋君将死。今兹岁在颛顼之虚,姜氏、任氏实守其地。居其维首,而有妖星焉,告邑姜也。邑姜,晋之妣也。天以七纪。戊子,逢公以登,星斯于是乎出。吾是以讥之。”

  齐惠栾、高氏皆耆酒,信内多怨,强于陈、鲍氏而恶之。

  夏,有告陈桓子曰:“子旗、子良将攻陈、鲍。”亦告鲍氏。桓子授甲而如鲍氏,遭子良醉而骋,遂见文子,则亦授甲矣。使视二子,则皆从饮酒。桓子曰:“彼虽不信,闻我授甲,则必逐我。及其饮酒也,先伐诸?”陈、鲍方睦,遂伐栾、高氏。子良曰:“先得公,陈、鲍焉往?”遂伐虎门。

  晏平仲端委立于虎门之外,四族召之,无所往。其徒曰:“助陈、鲍乎?”曰:“何善焉?”“助栾、高乎?”曰:“庸愈乎?”“然则归乎?”曰:“君伐,焉归?”公召之而后入。公卜使王黑以灵姑钅率,吉,请断三尺焉而用之。

  五月庚辰,战于稷,栾、高败,又败诸庄。国人追之,又败诸鹿门。栾施、高强来奔。陈、鲍分其室。

  晏子谓桓子:“必致诸公。让,德之主也,让之谓懿德。凡有血气,皆有争心,故利不可强,思义为愈。义,利之本也,蕴利生孽。姑使无蕴乎!可以滋长。”

  桓子尽致诸公,而请老于莒。

  桓子召子山,私具幄幕、器用、从者之衣屦,而反棘焉。子商亦如之,而反其邑。子周亦如之,而与之夫于。反子城、子公、公孙捷,而皆益其禄。凡公子、公孙之无禄者,私分之邑。国之贫约孤寡者,私与之粟。曰:“《诗》云:‘陈锡载周’,能施也,桓公是以霸。”

  公与桓子莒之旁邑,辞。穆孟姬为之请高唐,陈氏始大。秋七月,平子伐莒,取郠,献俘,始用人于亳社。臧武仲在齐,闻之,曰:“周公其不飨鲁祭乎!周公飨义,鲁无义。《诗》曰:‘德音孔昭,视民不佻。’佻之谓甚矣,而壹用之,将谁福哉?”戊子,晋平公卒。郑伯如晋,及河,晋人辞之。游吉遂如晋。九月,叔孙婼、齐国弱、宋华定、卫北宫喜、郑罕虎、许人、曹人、莒人、邾人、薛人、杞人、小邾人如晋,葬平公也。郑子皮将以币行。子产曰:“丧焉用币?用币必百两,百两必千人,千人至,将不行。不行,必尽用之。几千人而国不亡?”子皮固请以行。既葬,诸侯之大夫欲因见新君。叔孙昭子曰:“非礼也。”弗听。叔向辞之,曰:“大夫之事毕矣。而又命孤,孤斩焉在衰绖之中。其以嘉服见,则丧礼未毕。其以丧服见,是重受吊也。大夫将若之何?”皆无辞以见。子皮尽用其币,归,谓子羽曰:“非知之实难,将在行之。夫子知之矣,我则不足。《书》曰:‘欲败度,纵败礼。’我之谓矣。夫子知度与礼矣,我实纵欲而不能自克也。”

  昭子至自晋,大夫皆见。高强见而退。昭子语诸大夫曰:“为人子,不可不慎也哉!昔庆封亡,子尾多受邑而稍致诸君,君以为忠而甚宠之。将死,疾于公宫,辇而归,君亲推之。其子不能任,是以在此。忠为令德,其子弗能任,罪犹及之,难不慎也?丧夫人之力,弃德旷宗,以及其身,不亦害乎?《诗》曰:‘不自我先,不自我后。’其是之谓乎!”冬十二月,宋平公卒。初,元公恶寺人柳。欲杀之。及丧,柳炽炭于位,将至,则去之。比葬,又有宠。

  

  

  !昭公十一年

  【经】十有一年春王二月,叔弓如宋。葬宋平公。夏四月丁巳,楚子虔诱蔡侯般,杀之于申。楚公子弃疾帅师围蔡。五月甲申,夫人归氏薨。大蒐于比蒲。

  仲孙玃会邾子,盟于祲祥。秋,季孙意如会晋韩起、齐国弱、宋华亥、卫北宫佗、郑罕虎、曹人、杞人于厥慭。九月己亥,葬我小君齐归。冬十有一月丁酉,楚师灭蔡,执蔡世子有以归,用之。

  

  【传】十一年春,王二月,叔弓如宋,葬平公也。

  景王问于苌弘曰:“今兹诸侯,何实吉?何实凶?”对曰:“蔡凶。此蔡侯般弑其君之岁也,岁在豕韦,弗过此矣。楚将有之,然壅也。岁及大梁,蔡复,楚凶,天之道也。”

  楚子在申,召蔡灵侯。灵侯将往,蔡大夫曰:“王贪而无信,唯蔡于感,今币重而言甘,诱我也,不如无往。”蔡侯不可。五月丙申,楚子伏甲而飨蔡侯于申,醉而执之。夏四月丁巳,杀之,刑其士七十人。公子弃疾帅师围蔡。

  韩宣子问于叔向曰:“楚其克乎?”对曰:“克哉!蔡侯获罪于其君,而不能其民,天将假手于楚以毙之,何故不克?然肸闻之,不信以幸,不可再也。楚王奉孙吴以讨于陈,曰:‘将定而国。’陈人听命,而遂县之。今又诱蔡而杀其君,以围其国,虽幸而克,必受其咎,弗能久矣。桀克有緍以丧其国,纣克东夷而陨其身。楚小位下,而亟暴于二王,能无咎乎?天之假助不善,非祚之也,厚其凶恶而降之罚也。且譬之如天,其有五材而将用之,力尽而敝之,是以无拯,不可没振。”

  五月,齐归薨,大蒐于比蒲,非礼也。

  孟僖子会邾庄公,盟于祲祥,修好,礼也。泉丘人有女梦以其帷幕孟氏之庙,遂奔僖子,其僚从之。盟于清丘之社,曰:“有子,无相弃也。”僖子使助薳氏之簉。反自祲祥,宿于薳氏,生懿子及南宫敬叔于泉丘人。其僚无子,使字敬叔。

  楚师在蔡,晋荀吴谓韩宣子曰:“不能救陈,又不能救蔡,物以无亲,晋之不能,亦可知也已!为盟主而不恤亡国,将焉用之?”秋,会于厥慭,谋救蔡也。郑子皮将行,子产曰:“行不远。不能救蔡也。

  蔡小而不顺,楚大而不德,天将弃蔡以壅楚,盈而罚之。蔡必亡矣,且丧君而能守者,鲜矣。三年,王其有咎乎!美恶周必复,王恶周矣。”晋人使狐父请蔡于楚,弗许。

  单子会韩宣子于戚,视下言徐。叔向曰:“单子其将死乎!朝有著定,会有表,衣有禬,带有结。会朝之言,必闻于表著之位,所以昭事序也。视不过结、禬之中,所以道容貌也。言以命之,容貌以明之,失则有阙。今单子为王官伯,而命事于会,视不登带,言不过步,貌不道容,而言不昭矣。不道,不共;不昭,不从。无守气矣。”

  九月,葬齐归,公不戚。晋士之送葬者,归以语史赵。史赵曰:“必为鲁郊。”

  侍者曰:“何故?”曰:“归,姓也,不思亲,祖不归也。”叔向曰:“鲁公室其卑乎?君有大丧,国不废蒐。有三年之丧,而无一日之戚。国不恤丧,不忌君也。君无戚容,不顾亲也。国不忌君,君不顾亲,能无卑乎?殆其失国。”

  冬十一月,楚子灭蔡,用隐大子于冈山。申无宇曰:“不祥。五牲不相为用,况用诸侯乎?王必悔之。”

  十二月,单成公卒。

  楚子城陈、蔡、不羹。使弃疾为蔡公。王问于申无宇曰:“弃疾在蔡,何如?”对曰:“择子莫如父,择臣莫如君。郑庄公城栎而置子元焉,使昭公不立。齐桓公城谷而置管仲焉,至于今赖之。臣闻五大不在边,五细不在庭。亲不在外,羁不在内,今弃疾在外,郑丹在内。君其少戒。”王曰:“国有大城,何如?”对曰:“郑京、栎实杀曼伯,宋萧、亳实杀子游,齐渠丘实杀无知,卫蒲、戚实出献公,若由是观之,则害于国。末大必折,尾大不掉,君所知也。”

  

  

  !昭公十二年

  【经】十有二年春,齐高偃帅师纳北燕伯于阳。三月壬申,郑伯嘉卒。夏,宋公使华定来聘。公如晋,至河乃复。五月,葬郑简公。楚杀其大夫成熊。秋七月。冬十月,公子慭出奔齐。楚子伐徐。晋伐鲜虞。

  

  【传】十二年春,齐高偃纳北燕伯款于唐,因其众也。

  三月,郑简公卒,将为葬除。及游氏之庙,将毁焉。子大叔使其除徒执用以立,而无庸毁,曰:“子产过女,而问何故不毁,乃曰:‘不忍庙也!诺,将毁矣!’”既如是,子产乃使辟之。司墓之室有当道者,毁之,则朝而塴;弗毁,则日中而塴。子大叔请毁之,曰:“无若诸侯之宾何!”子产曰:“诸侯之宾,能来会吾丧,岂惮日中?无损于宾,而民不害,何故不为?”遂弗毁,日中而葬。

  君子谓:“子产于是乎知礼。礼,无毁人以自成也。”

  夏,宋华定来聘,通嗣君也。享之,为赋《蓼萧》,弗知,又不答赋。昭子曰:“必亡。宴语之不怀,宠光之不宣,令德之不知,同福之不受,将何以在?”齐侯、卫侯、郑伯如晋,朝嗣君也。公如晋,至河乃复。取郠之役,莒人诉于晋,晋有平公之丧,未之治也,故辞公。公子慭遂如晋。晋侯享诸侯,子产相郑伯,辞于享,请免丧而后听命。晋人许之,礼也。晋侯以齐侯宴,中行穆子相。投壶,晋侯先。穆子曰:“有酒如淮,有肉如坻。寡君中此,为诸侯师。”

  中之。齐侯举矢,曰:“有酒如渑,有肉如陵。寡人中此,与君代兴。”亦中之。

  伯瑕谓穆子曰:“子失辞。吾固师诸侯矣,壶何为焉,其以中俊也?齐君弱吾君,归弗来矣!”穆子曰:“吾军帅强御,卒乘竞劝,今犹古也,齐将何事?”公孙傁趋进曰:“日旰君勤,可以出矣!”以齐侯出。

  楚子谓成虎若敖之余也,遂杀之。或谮成虎于楚子,成虎知之而不能行。书曰:“楚杀其大夫成虎。”怀宠也。

  六月,葬郑简公。

  晋荀吴伪会齐师者,假道于鲜虞,遂入昔阳。秋八月壬午,灭肥,以肥子绵皋归。

  周原伯绞虐其舆臣,使曹逃。冬十月壬申朔,原舆人逐绞而立公子跪寻,绞奔郊。

  甘简公无子,立其弟过。过将去成、景之族,成、景之族赂刘献公。丙申,杀甘悼公,而立成公之孙鳅。丁酉,杀献太子之傅庾皮之子过,杀瑕辛于市,及宫嬖绰、王孙没、刘州鸠、阴忌、老阳子。

  季平子立,而不礼于南蒯。南蒯谓子仲:“吾出季氏,而归其室于公。子更其位。我以费为公臣。”子仲许之。南蒯语叔仲穆子,且告之故。

  季悼子之卒也,叔孙昭子以再命为卿。及平子伐莒,克之,更受三命。叔仲子欲构二家,谓平子曰:“三命逾父兄,非礼也。”平子曰:“然。”故使昭子。

  昭子曰:“叔孙氏有家祸,杀适立庶,故婼也及此。若因祸以毙之,则闻命矣。

  若不废君命,则固有著矣。”昭子朝,而命吏曰:“婼将与季氏讼,书辞无颇。”

  季孙惧,而归罪于叔仲子。故叔仲小、南蒯、公子慭谋季氏。慭告公,而遂从公如晋。南蒯惧不克,以费叛如齐。子仲还,及卫,闻乱,逃介而先。及郊,闻费叛,遂奔齐。

  南蒯之将叛也,其乡人或知之,过之而叹,且言曰:“恤恤乎,湫乎,攸乎!深思而浅谋,迩身而远志,家臣而君图,有人矣哉!”南蒯枚筮之,遇《坤》ⅱⅱ之《比》ⅴⅱ,曰:“黄裳元吉。”以为大吉也,示子服惠伯,曰:“即欲有事,何如?”惠伯曰:“吾尝学此矣,忠信之事则可,不然必败。外强内温,忠也。和以率贞,信也。故曰‘黄裳元吉’。黄,中之色也。裳,下之饰也。元,善之长也。中不忠,不得其色。下不共,不得其饰。事不善,不得其极。外内倡和为忠,率事以信为共,供养三德为善,非此三者弗当。且夫《易》,不可以占险,将何事也?且可饰乎?中美能黄,上美为元,下美则裳,参成可筮。犹有阙也,筮虽吉,未也。”

  将适费,饮乡人酒。乡人或歌之曰:“我有圃,生之杞乎!从我者子乎,去我者鄙乎,倍其邻者耻乎!已乎已乎,非吾党之士乎!”平子欲使昭子逐叔仲小。小闻之,不敢朝。昭子命吏谓小待政于朝,曰:“吾不为怨府。”楚子狩于州来,次于颍尾,使荡侯、潘子、司马督、嚣尹午、陵尹喜帅师围徐以惧吴。楚子次于乾溪,以为之援。雨雪,王皮冠,秦复陶,翠被,豹舄,执鞭以出,仆析父从。右尹子革夕,王见之,去冠、被,舍鞭,与之语曰:“昔我先王熊绎,与吕级、王孙牟、燮父、禽父,并事康王,四国皆有分,我独无有。今吾使人于周,求鼎以为分,王其与我乎?”对曰:“与君王哉!昔我先王熊绎,辟在荆山,筚路蓝缕,以处草莽。跋涉山林,以事天子。唯是桃弧、棘矢,以共御王事。齐,王舅也。晋及鲁、卫,王母弟也。楚是以无分,而彼皆有。今周与四国服事君王,将唯命是从,岂其爱鼎?”王曰:“昔我皇祖伯父昆吾,旧许是宅。今郑人贪赖其田,而不我与。我若求之,其与我乎?”对曰:“与君王哉!周不爱鼎,郑敢爱田?”王曰:“昔诸侯远我而畏晋,今我大城陈、蔡、不羹,赋皆千乘,子与有劳焉。诸侯其畏我乎?”对曰:“畏君王哉!是四国者,专足畏也,又加之以楚,敢不畏君王哉!”工尹路请曰:“君王命剥圭以为钅戚铋,敢请命。”王入视之。析父谓子革:“吾子,楚国之望也!今与王言如响,国其若之何?”子革曰:“摩厉以须,王出,吾刃将斩矣。”王出,复语。左史倚相趋过。王曰:“是良史也,子善视之。

  是能读《三坟》、《五典》、《八索》、《九丘》。”对曰:“臣尝问焉。昔穆王欲肆其心,周行天下,将皆必有车辙马迹焉。祭公谋父作《祈招》之诗,以止王心,王是以获没于祗宫。臣问其诗而不知也。若问远焉,其焉能知之?”王曰:“子能乎?”对曰:“能。其诗曰:‘祈招之愔愔,式昭德音。思我王度,式如玉,式如金。形民之力,而无醉饱之心。’”王揖而入,馈不食,寝不寐,数日,不能自克,以及于难。

  仲尼曰:“古也有志:‘克己复礼,仁也’。信善哉!楚灵王若能如是,岂其辱于乾溪?”晋伐鲜虞,因肥之役也。

  

  

  !昭公十三年

  【经】十有三年春,叔弓帅师围费。夏四月,楚公子比自晋归于楚,杀其君虔于乾溪。楚公子弃疾杀公子比。秋,公会刘子、晋侯、宋公、卫侯、郑伯、曹伯、莒子、邾子、滕子、薛伯、杞伯、小邾子于平丘。八月甲戌,同盟于平丘。

  公不与盟。晋人执季孙意如以归。公至自会。蔡侯庐归于蔡。陈侯吴归于陈。冬十月,葬蔡灵公。公如晋,至河乃复。吴灭州来。

  

  【传】十三年春,叔弓围费,弗克,败焉。平子怒,令见费人执之以为囚俘。

  冶区夫曰:“非也。若见费人,寒者衣之,饥者食之,为之令主,而共其乏困。

  费来如归,南氏亡矣,民将叛之,谁与居邑?若惮之以威,惧之以怒,民疾而叛,为之聚也。若诸侯皆然,费人无归,不亲南氏,将焉入矣?”平子从之,费人叛南氏。

  楚子之为令尹也,杀大司马薳掩而取其室。及即位,夺薳居田;迁许而质许围。蔡洧有宠于王,王之灭蔡也,其父死焉,王使与於守而行。申之会,越大夫戮焉。王夺斗韦龟中犨,又夺成然邑而使为郊尹。蔓成然故事蔡公,故薳氏之族及薳居、许围、蔡洧、蔓成然,皆王所不礼也。因群丧职之族,启越大夫常寿过作乱,围固城,克息舟,城而居之。

  观起之死也,其子从在蔡,事朝吴,曰:“今不封蔡,蔡不封矣。我请试之。”

  以蔡公之命召子干、子皙,及郊,而告之情,强与之盟,入袭蔡。蔡公将食,见之而逃。观从使子干食,坎,用牲,加书,而速行。己徇于蔡曰:“蔡公召二子,将纳之,与之盟而遣之矣,将师而从之。”蔡人聚,将执之。辞曰:“失贼成军,而杀余,何益?”乃释之。朝吴曰:“二三子若能死亡,则如违之,以待所济。

  若求安定,则如与之,以济所欲。且违上,何适而可?”众曰:“与之。”乃奉蔡公,召二子而盟于邓,依陈、蔡人以国。楚公子比、公子黑肱、公子弃疾、蔓成然、蔡朝吴帅陈、蔡、不羹、许、叶之师,因四族之徒,以入楚。及郊,陈、蔡欲为名,故请为武军。蔡公知之曰:“欲速。且役病矣,请藩而已。”乃藩为军。蔡公使须务牟与史卑先入,因正仆人杀大子禄及公子罢敌。公子比为王,公子黑肱为令尹,次于鱼陂。公子弃疾为司马,先除王宫。使观从从师于乾溪,而遂告之,且曰:“先归复所,后者劓。”师及訾梁而溃。

  王闻群公子之死也,自投于车下,曰:“人之爱其子也,亦如余乎?”侍者曰:“甚焉。小人老而无子,知挤于沟壑矣。”王曰:“余杀人子多矣,能无及此乎?”右尹子革曰:“请待于郊,以听国人。”王曰:“众怒不可犯也。”曰:“若入于大都而乞师于诸侯。”王曰:“皆叛矣。”曰:“若亡于诸侯,以听大国之图君也。”王曰:“大福不再,只取辱焉。”然丹乃归于楚。王沿夏,将欲入鄢。芋尹无宇之子申亥曰:“吾父再奸王命,王弗诛,惠孰大焉?君不可忍,惠不可弃,吾其从王。”乃求王,遇诸棘围以归。夏五月癸亥,王缢于芋尹申亥氏。申亥以其二女殉而葬之。

  观从谓子干曰:“不杀弃疾,虽得国,犹受祸也。”子干曰:“余不忍也。”

  子玉曰:“人将忍子,吾不忍俟也。”乃行。国每夜骇曰:“王入矣!”乙卯夜,弃疾使周走而呼曰:“王至矣!”国人大惊。使蔓成然走告子干、子皙曰:“王至矣!国人杀君司马,将来矣!君若早自图也,可以无辱。众怒如水火焉,不可为谋。”又有呼而走至者曰:“众至矣!”二子皆自杀。丙辰,弃疾即位,名曰熊居。葬子干于訾,实訾敖。杀囚,衣之王服而流诸汉,乃取而葬之,以靖国人。

  使子旗为令尹。

  楚师还自徐,吴人败诸豫章,获其五帅。

  平王封陈、蔡,复迁邑,致群赂,施舍宽民,宥罪举职。召观从,王曰:“唯尔所欲。”对曰:“臣之先,佐开卜。”乃使为卜尹。使枝如子躬聘于郑,且致犨、栎之田。事毕,弗致。郑人请曰:“闻诸道路,将命寡君以犨、栎,敢请命。”对曰:“臣未闻命。”既复,王问犨、栎。降服而对,曰:“臣过失命,未之致也。”王执其手,曰:“子毋勤。姑归,不谷有事,其告子也。”他年芋尹申亥以王柩告,乃改葬之。

  初,灵王卜,曰:“余尚得天下。”不吉,投龟,诟天而呼曰:“是区区者而不余畀,余必自取之。”民患王之无厌也,故从乱如归。

  初,共王无冢适,有宠子五人,无適立焉。乃大有事于群望,而祈曰:“请神择于五人者,使主社稷。”乃遍以璧见于群望,曰:“当璧而拜者,神所立也,谁敢违之?”既,乃与巴姬密埋璧于大室之庭,使五人齐,而长入拜。康王跨之,灵王肘加焉,子干、子皙皆远之。平王弱,抱而入,再拜,皆厌纽。斗韦龟属成然焉,且曰:“弃礼违命,楚其危哉!”子干归,韩宣子问于叔向曰:“子干其济乎?”对曰:“难。”宣子曰:“同恶相求,如市贾焉,何难?”对曰:“无与同好,谁与同恶?取国有五难:有宠而无人,一也;有人而无主,二也;有主而无谋,三也;有谋而无民,四也;有民而无德,五也。子干在晋十三年矣,晋、楚之从,不闻达者,可谓无人。族尽亲叛,可谓无主。无衅而动,可谓无谋。为羁终世,可谓无民。亡无爱征,可谓无德。王虐而不忌,楚君子干,涉五难以弑旧君,谁能济之?有楚国者,其弃疾乎!君陈、蔡,城外属焉。苛慝不作,盗贼伏隐,私欲不违,民无怨心。先神命之。国民信之,羋姓有乱,必季实立,楚之常也。获神,一也;有民,二也;令德,三也;宠贵,四也;居常,五也。有五利以去五难,谁能害之?子干之官,则右尹也。数其贵宠,则庶子也。以神所命,则又远之。其贵亡矣,其宠弃矣,民无怀焉,国无与焉,将何以立?”宣子曰:“齐桓、晋文,不亦是乎?”对曰:“齐桓,卫姬之子也,有宠于僖。有鲍叔牙、宾须无、隰朋以为辅佐,有莒、卫以为外主,有国、高以为内主。从善如流,下善齐肃,不藏贿,不从欲,施舍不倦,求善不厌,是以有国,不亦宜乎?我先君文公,狐季姬之子也,有宠于献。

  好学而不贰,生十七年,有士五人。有先大夫子余、子犯以为腹心,有魏犨、贾佗以为股肱,有齐、宋、秦、楚以为外主,有栾、郤、狐、先以为内主。亡十九年,守志弥笃。惠、怀弃民,民从而与之。献无异亲,民无异望,天方相晋,将何以代文?此二君者,异于子干。共有宠子,国有奥主。无施于民,无援于外,去晋而不送,归楚而不逆,何以冀国?”晋成虒祁,诸侯朝而归者皆有贰心。为取郠故,晋将以诸侯来讨。叔向曰:“诸侯不可以不示威。”乃并征会,告于吴。秋,晋侯会吴子于良。水道不可,吴子辞,乃还。

  七月丙寅,治兵于邾南,甲车四千乘,羊舌鲋摄司马,遂合诸侯于平丘。子产、子大叔相郑伯以会。子产以幄幕九张行。子大叔以四十,既而悔之,每舍,损焉。及会,亦如之。

  次于卫地,叔鲋求货于卫,淫刍荛者。卫人使屠伯馈叔向羹,与一箧锦,曰:“诸侯事晋,未敢携贰,况卫在君之宇下,而敢有异志?刍荛者异于他日,敢请之。”叔向受羹反锦,曰:“晋有羊舌鲋者,渎货无厌,亦将及矣。为此役也,子若以君命赐之,其已。”客从之,未退,而禁之。

  晋人将寻盟,齐人不可。晋侯使叔向告刘献公曰:“抑齐人不盟,若之何?”对曰:“盟以厎信。君苟有信,诸侯不贰,何患焉?告之以文辞,董之以武师,虽齐不许,君庸多矣。天子之老,请帅王赋,‘元戎十乘,以先启行’,迟速唯君。”叔向告于齐,曰:“诸侯求盟,已在此矣。今君弗利,寡君以为请。”对曰:“诸侯讨贰,则有寻盟。若皆用命,何盟之寻?”叔向曰:“国家之败,有事而无业,事则不经。有业而无礼,经则不序。有礼而无威,序则不共。有威而不昭,共则不明。不明弃共,百事不终,所由倾覆也。是故明王之制,使诸侯岁聘以志业,间朝以讲礼,再朝而会以示威,再会而盟以显昭明。志业于好,讲礼于等。示威于众,昭明于神。自古以来,未之或失也。存亡之道,恒由是兴。晋礼主盟,惧有不治。奉承齐犠,而布诸君,求终事也。君曰:‘余必废之,何齐之有?’唯君图之,寡君闻命矣!”齐人惧,对曰:“小国言之,大国制之,敢不听从?既闻命矣,敬共以往,迟速唯君。”叔向曰:“诸侯有间矣,不可以不示众。”八月辛未,治兵,建而不旆。壬申,复旆之。诸侯畏之。

  邾人、莒人讠斥于晋曰:“鲁朝夕伐我,几亡矣。我之不共,鲁故之以。”

  晋侯不见公,使叔向来辞曰:“诸侯将以甲戌盟,寡君知不得事君矣,请君无勤。”

  子服惠伯对曰:“君信蛮夷之诉,以绝兄弟之国,弃周公之后,亦唯君。寡君闻命矣。”叔向曰:“寡君有甲车四千乘在,虽以无道行之,必可畏也,况其率道,其何敌之有?牛虽瘠,偾于豚上,其畏不死?南蒯、子仲之忧,其庸可弃乎?若奉晋之众,用诸侯之师,因邾、莒、杞、鄫之怒,以讨鲁罪,间其二忧,何求而弗克?”鲁人惧,听命。

  甲戌,同盟于平丘,齐服也。令诸侯日中造于除。癸酉,退朝。子产命外仆速张于除,子大叔止之,使待明日。及夕,子产闻其未张也,使速往,乃无所张矣。

  及盟,子产争承,曰:“昔天子班贡,轻重以列,列尊贡重,周之制也。卑而贡重者,甸服也。郑伯,男也,而使从公侯之贡,惧弗给也,敢以为请。诸侯靖兵,好以为事。行理之命,无月不至,贡之无艺,小国有阙,所以得罪也。诸侯修盟,存小国也。贡献无及,亡可待也。存亡之制,将在今矣。”自日中以争,至于昏,晋人许之。既盟,子大叔咎之曰:“诸侯若讨,其可渎乎?”子产曰:“晋政多门,贰偷之不暇,何暇讨?国不竞亦陵,何国之为?”公不与盟。晋人执季孙意如,以幕蒙之,使狄人守之。司铎射怀锦,奉壶饮冰,以蒲伏焉。守者御之,乃与之锦而入。晋人以平子归,子服湫从。

  子产归,未至,闻子皮卒,哭,且曰:“吾已,无为为善矣,唯夫子知我。”

  仲尼谓:“子产于是行也,足以为国基矣。《诗》曰:‘乐只君子,邦家之基。’子产,君子之求乐者也。”且曰:“合诸侯,艺贡事,礼也。”

  鲜虞人闻晋师之悉起也,而不警边,且不修备。晋荀吴自著雍以上军侵鲜虞,及中人,驱冲竞,大获而归。

  楚之灭蔡也,灵王迁许、胡、沈、道、房、申于荆焉。平王即位,既封陈、蔡,而皆复之,礼也。隐大子之子庐归于蔡,礼也。悼大子之子吴归于陈,礼也。

  冬十月,葬蔡灵公,礼也。

  公如晋。荀吴谓韩宣子曰:“诸侯相朝,讲旧好也,执其卿而朝其君,有不好焉,不如辞之。”乃使士景伯辞公于河。

  吴灭州来。令尹子期请伐吴,王弗许,曰:“吾未抚民人,未事鬼神,未修守备,未定国家,而用民力,败不可悔。州来在吴,犹在楚也。子姑待之。”

  季孙犹在晋,子服惠伯私于中行穆子曰:“鲁事晋,何以不如夷之小国?鲁,兄弟也,土地犹大,所命能具。若为夷弃之,使事齐、楚,其何瘳于晋?亲亲,与大,赏共、罚否,所以为盟主也。子其图之。谚曰:‘臣一主二。’吾岂无大国?”穆子告韩宣子,且曰:“楚灭陈、蔡,不能救,而为夷执亲,将焉用之?”乃归季孙。惠伯曰:“寡君未知其罪,合诸侯而执其老。若犹有罪,死命可也。

  若曰无罪而惠免之,诸侯不闻,是逃命也,何免之?为请从君惠于会。”宣子患之,谓叔向曰:“子能归季孙乎?”对曰:“不能。鲋也能。”乃使叔鱼。叔鱼见季孙曰:“昔鲋也得罪于晋君,自归于鲁君。微武子之赐,不至于今。虽获归骨于晋,犹子则肉之,敢不尽情?归子而不归,鲋也闻诸吏,将为子除馆于西河,其若之何?”且泣。平子惧,先归。惠伯待礼。

  

  

  !昭公十四年

  【经】十有四年春,意如至自晋。三月,曹伯滕卒。夏四月。秋,葬曹武公。

  八月,莒子去疾卒。冬,莒杀其公子意恢。

  

  【传】十四年春,意如至自晋,尊晋罪己也。尊晋、罪己,礼也。

  南蒯之将叛也,盟费人。司徒老祁、虑癸伪废疾,使请于南蒯曰:“臣愿受盟而疾兴,若以君灵不死,请待间而盟。”许之。二子因民之欲叛也,请朝众而盟。遂劫南蒯曰:“群臣不忘其君,畏子以及今,三年听命矣。子若弗图,费人不忍其君,将不能畏子矣。子何所不逞欲?请送子。”请期五日。遂奔齐。侍饮酒于景公。公曰:“叛夫?”对曰:“臣欲张公室也。”子韩皙曰:“家臣而欲张公室,罪莫大焉。”司徒老祁、虑癸来归费,齐侯使鲍文子致之。

  夏,楚子使然丹简上国之兵于宗丘,且抚其民。分贫,振穷;长孤幼,养老疾,收介特,救灾患,宥孤寡,赦罪戾;诘奸慝,举淹滞;礼新,叙旧;禄勋,合亲;任良,物官。使屈罢简东国之兵于召陵,亦如之。好于边疆,息民五年,而后用师,礼也。

  秋八月,莒著丘公卒,郊公不戚。国人弗顺,欲立著丘公之弟庚舆。蒲余侯恶公子意恢而善于庚舆,郊公恶公子铎而善于意恢。公子铎因蒲余侯而与之谋曰:“尔杀意恢,我出君而纳庚舆。”许之。

  楚令尹子旗有德于王,不知度。与养氏比,而求无厌。王患之。九月甲午,楚子杀斗成然,而灭养氏之族。使斗辛居郧,以无忘旧勋。

  冬十二月,蒲余侯兹夫杀莒公子意恢,郊公奔齐。公子铎逆庚舆于齐。齐隰党、公子锄送之,有赂田。

  晋邢侯与雍子争赂田,久而无成。士景伯如楚,叔鱼摄理,韩宣子命断旧狱,罪在雍子。雍子纳其女于叔鱼,叔鱼蔽罪邢侯。邢侯怒,杀叔鱼与雍子于朝。宣子问其罪于叔向。叔向曰:“三人同罪,施生戮死可也。雍子自知其罪而赂以买直,鲋也鬻狱,刑侯专杀,其罪一也。己恶而掠美为昏,贪以败官为墨,杀人不忌为贼。《夏书》曰:‘昏、墨、贼,杀。’皋陶之刑也。请从之。”乃施邢侯而尸雍子与叔鱼于市。

  仲尼曰:“叔向,古之遗直也。治国制刑,不隐于亲,三数叔鱼之恶,不为末减。曰义也夫,可谓直矣。平丘之会,数其贿也,以宽卫国,晋不为暴。归鲁季孙,称其诈也,以宽鲁国,晋不为虐。邢侯之狱,言其贪也,以正刑书,晋不为颇。三言而除三恶,加三利,杀亲益荣,犹义也夫!”

  

  !昭公十五年

  【经】十有五年春王正月,吴子夷末卒。二月癸酉,有事于武宫。籥入,叔弓卒。去乐,卒事。夏,蔡朝吴出奔郑。六月丁巳朔,日有食之。秋,晋荀吴帅师伐鲜虞。冬,公如晋。

  

  【传】十五年春,将禘于武公,戒百官。梓慎曰:“禘之日,其有咎乎!吾见赤黑之祲,非祭祥也,丧氛也。其在莅事乎?”二月癸酉,禘,叔弓莅事,籥入而卒。去乐,卒事,礼也。

  楚费无极害朝吴之在蔡也,欲去之。乃谓之曰:“王唯信子,故处子于蔡。

  子亦长矣,而在下位,辱。必求之,吾助子请。”又谓其上之人曰:“王唯信吴,故处诸蔡,二三子莫之如也。而在其上,不亦难乎?弗图,必及于难。”夏,蔡人遂朝吴。朝吴出奔郑。王怒,曰:“余唯信吴,故置诸蔡。且微吴,吾不及此。

  女何故去之?”无极对曰:“臣岂不欲吴?然而前知其为人之异也。吴在蔡,蔡必速飞。去吴,所以翦其翼也。”

  六月乙丑,王大子寿卒。

  秋八月戊寅,王穆后崩。

  晋荀吴帅师伐鲜虞,围鼓。鼓人或请以城叛,穆子弗许。左右曰:“师徒不勤,而可以获城,何故不为?”穆子曰:“吾闻诸叔向曰:‘好恶不愆,民知所适,事无不济。’或以吾城叛,吾所甚恶也。人以城来,吾独何好焉?赏所甚恶,若所好何?若其弗赏,是失信也,何以庇民?力能则进,否则退,量力而行。吾不可以欲城而迩奸,所丧滋多。”使鼓人杀叛人而缮守备。围鼓三月,鼓人或请降,使其民见,曰:“犹有食色,姑修而城。”军吏曰:“获城而弗取,勤民而顿兵,何以事君?”穆子曰:“吾以事君也。获一邑而教民怠,将焉用邑?邑以贾怠,不如完旧,贾怠无卒,弃旧不祥。鼓人能事其君,我亦能事吾君。率义不爽,好恶不愆,城可获而民知义所,有死命而无二心,不亦可乎!”鼓人告食竭力尽,而后取之。克鼓而反,不戮一人,以鼓子鸢鞮归。

  冬,公如晋,平丘之会故也。

  十二月,晋荀跞如周,葬穆后,籍谈为介。既葬,除丧,以文伯宴,樽以鲁壶。王曰:“伯氏,诸侯皆有以镇抚室,晋独无有,何也?”文伯揖籍谈,对曰:“诸侯之封也,皆受明器于王室,以镇抚其社稷,故能荐彝器于王。晋居深山,戎狄之与邻,而远于王室。王灵不及,拜戎不暇,其何以献器?”王曰:“叔氏,而忘诸乎?叔父唐叔,成王之母弟也,其反无分乎?密须之鼓,与其大路,文所以大蒐也。阙巩之甲,武所以克商也。唐叔受之以处参虚,匡有戎狄。其后襄之二路,钅戚钺,秬鬯,彤弓,虎贲,文公受之,以有南阳之田,抚征东夏,非分而何?夫有勋而不废,有绩而载,奉之以土田,抚之以彝器,旌之以车服,明之以文章,子孙不忘,所谓福也。福祚之不登,叔父焉在?且昔而高祖孙伯黡,司晋之典籍,以为大政,故曰籍氏。及辛有之二子董之晋,于是乎有董史。女,司典之后也,何故忘之?”籍谈不能对。宾出,王曰:“籍父其无后乎!数典而忘其祖。”

  籍谈归,以告叔向。叔向曰:“王其不终乎!吾闻之:‘所乐必卒焉。’今王乐忧,若卒以忧,不可谓终。王一岁而有三年之丧二焉,于是乎以丧宾宴,又求彝器,乐忧甚矣,且非礼也。彝器之来,嘉功之由,非由丧也。三年之丧,虽贵遂服,礼也。王虽弗遂,宴乐以早,亦非礼也。礼,王之大经也。一动而失二礼,无大经矣。言以考典,典以志经,忘经而多言举典,将焉用之?”

  

  !昭公十六年

  【经】十有六年春,齐侯伐徐。楚子诱戎蛮子杀之。夏,公至自晋。秋八月己亥,晋侯夷卒。九月,大雩。季孙意如如晋。冬十月,葬晋昭公。

  

  【传】十六年春,王正月,公在晋,晋人止公。不书,讳之也。

  齐侯伐徐。

  楚子闻蛮氏之乱也,与蛮子之无质也,使然丹诱戎蛮子嘉杀之,遂取蛮氏。

  既而复立其子焉,礼也。

  二月丙申,齐师至于蒲隧。徐人行成。徐子及郯人、莒人会齐侯,盟于蒲隧,赂以甲父之鼎。叔孙昭子曰:“诸侯之无伯,害哉!齐君之无道也,兴师而伐远方,会之,有成而还,莫之亢也,无伯也夫!《诗》曰:‘宗周既灭,靡所止戾。

  正大夫离居,莫知我肄。’其是之谓乎!”二月,晋韩起聘于郑,郑伯享之。子产戒曰:“苟有位于朝,无有不共恪。”

  孔张后至,立于客间。执政御之,适客后。又御之,适县间。客从而笑之。事毕,富子谏曰:“夫大国之人,不可不慎也,几为之笑而不陵我?我皆有礼,夫犹鄙我。国而无礼,何以求荣?孔张失位,吾子之耻也。”子产怒曰:“发命之不衷,出令之不信,刑之颇类,狱之放纷,会朝之不敬,使命之不听,取陵于大国,罢民而无功,罪及而弗知,侨之耻也。孔张,君之昆孙,子孔之后也,执政之嗣也,为嗣大夫,承命以使,周于诸侯,国人所尊,诸侯所知。立于朝而祀于家,有禄于国,有赋于军,丧祭有职,受脤、归脤,其祭在庙,已有著位,在位数世,世守其业,而忘其所,侨焉得耻之?辟邪之人而皆及执政,是先王无刑罚也。子宁以他规我。”

  宣子有环,有一在郑商。宣子谒诸郑伯,子产弗与,曰:“非官府之守器也,寡君不知。”子大叔、子羽谓子产曰:“韩子亦无几求,晋国亦未可以贰。晋国、韩子,不可偷也。若属有谗人交斗其间,鬼神而助之,以兴其凶怒,悔之何及?吾子何爱于一环,其以取憎于大国也,盍求而与之?”子产曰:“吾非偷晋而有二心,将终事之,是以弗与,忠信故也。侨闻君子非无贿之难,立而无令名之患。

  侨闻为国非不能事大字小之难,无礼以定其位之患。夫大国之人,令于小国,而皆获其求,将何以给之?一共一否,为罪滋大。大国之求,无礼以斥之,何餍之有?吾且为鄙邑,则失位矣。若韩子奉命以使,而求玉焉,贪淫甚矣,独非罪乎?出一玉以起二罪,吾又失位,韩子成贪,将焉用之?且吾以玉贾罪,不亦锐乎?”韩子买诸贾人,既成贾矣,商人曰:“必告君大夫。”韩子请诸子产曰:“日起请夫环,执政弗义,弗敢复也。今买诸商人,商人曰,必以闻,敢以为请。”

  子产对曰:“昔我先君桓公,与商人皆出自周,庸次比耦,以艾杀此地,斩之蓬蒿藜藿,而共处之。世有盟誓,以相信也,曰:‘尔无我叛,我无强贾,毋或丐夺。尔有利市宝贿,我勿与知。’恃此质誓,故能相保,以至于今。今吾子以好来辱,而谓敝邑强夺商人,是教弊邑背盟誓也,毋乃不可乎!吾子得玉而失诸侯,必不为也。若大国令,而共无艺,郑,鄙邑也,亦弗为也。侨若献玉,不知所成,敢私布之。”韩子辞玉,曰:“起不敏,敢求玉以徼二罪?敢辞之。”

  夏四月,郑六卿饯宣子于郊。宣子曰:“二三君子请皆赋,起亦以知郑志。”

  子齹赋《野有蔓草》。宣子曰:“孺子善哉!吾有望矣。”子产赋郑之《羔裘》。宣子曰:“起不堪也。”子大叔赋《褰裳》。宣子曰:“起在此,敢勤子至于他人乎?”子大叔拜。宣子曰:“善哉,子之言是!不有是事,其能终乎?”子游赋《风雨》,子旗赋《有女同车》,子柳赋《萚兮》。宣子喜曰:“郑其庶乎!二三君子以君命贶起,赋不出郑志,皆昵燕好也。二三君子,数世之主也,可以无惧矣。”宣子皆献马焉,而赋《我将》。子产拜,使五卿皆拜,曰:“吾子靖乱,敢不拜德?”宣子私觐于子产以玉与马,曰:“子命起舍夫玉,是赐我玉而免吾死也,敢不藉手以拜?”公至自晋。子服昭伯语季平子曰:“晋之公室,其将遂卑矣。君幼弱,六卿强而奢傲,将因是以习,习实为常,能无卑乎?”平子曰:“尔幼,恶识国?”秋八月,晋昭公卒。

  九月,大雩,旱也。郑大旱,使屠击、祝款、竖柎有事于桑山。斩其木,不雨。子产曰:“有事于山,蓺山林也,而斩其木,其罪大矣。”夺之官邑。

  冬十月,季平子如晋葬昭公。平子曰:“子服回之言犹信,子服氏有子哉!”

  

  !昭公十七年

  【经】十有七年春,小邾子来朝。夏六月甲戌朔,日有食之。秋,郯子来朝。

  八月,晋荀吴帅师灭陆浑之戎。冬,有星孛于大辰。楚人及吴战于长岸。

  

  【传】十七年春,小邾穆公来朝,公与之燕。季平子赋《采叔》,穆公赋《菁菁者莪》。昭子曰:“不有以国,其能久乎?”夏六月甲戌朔,日有食之。祝史请所用币。昭子曰:“日有食之,天子不举,伐鼓于社;诸侯用币于社,伐鼓于朝。礼也。”平子御之,曰:“止也。唯正月朔,慝未作,日有食之,于是乎有伐鼓用币,礼也。其余则否。”大史曰:“在此月也。日过分而未至,三辰有灾。于是乎百官降物,君不举,辟移时,乐奏鼓,祝用币,史用辞。故《夏书》曰:‘辰不集于房,瞽奏鼓,啬夫驰,庶人走。’此月朔之谓也。当夏四月,是谓孟夏。”平子弗从。昭子退曰:“夫子将有异志,不君君矣。”

  秋,郯子来朝,公与之宴。昭子问焉,曰:“少皞氏鸟名官,何故也?”郯子曰:“吾祖也,我知之。昔者黄帝氏以云纪,故为云师而云名;炎帝氏以火纪,故为火师而火名;共工氏以水纪,故为水师而水名;大皞氏以龙纪,故为龙师而龙名。我高祖少皞挚之立也,凤鸟适至,故纪于鸟,为鸟师而鸟名。凤鸟氏,历正也;玄鸟氏,司分者也;伯赵氏,司至者也;青鸟氏,司启者也;丹鸟氏,司闭者也。祝鸠氏,司徒也;鴡鸠氏,司马也;鸤鸠氏,司空也;爽鸠氏,司寇也;鹘鸠氏,司事也。五鸠,鸠民者也。五雉,为五工正,利器用、正度量,夷民者也。九扈为九农正,扈民无淫者也。自颛顼以来,不能纪远,乃纪于近,为民师而命以民事,则不能故也。”仲尼闻之,见于郯子而学之。既而告人曰:“吾闻之:‘天子失官,学在四夷’,犹信。”

  晋侯使屠蒯如周,请有事于雒与三涂。苌弘谓刘子曰:“客容猛,非祭也,其伐戎乎?陆浑氏甚睦于楚,必是故也。君其备之!”乃警戎备。九月丁卯,晋荀吴帅师涉自棘津,使祭史先用牲于洛。陆浑人弗知,师从之。庚午,遂灭陆浑,数之以其贰于楚也。陆浑子奔楚,其众奔甘鹿。周大获。宣子梦文公携荀吴而授之陆浑,故使穆子帅师,献俘于文宫。

  冬,有星孛于大辰,西及汉。申须曰:“彗所以除旧布新也。天事恒象,今除于火,火出必布焉。诸侯其有火灾乎?”梓慎曰:“往年吾见之,是其征也,火出而见。今兹火出而章,必火入而伏。其居火也久矣,其与不然乎?火出,于夏为三月,于商为四月,于周为五月。夏数得天。若火作,其四国当之,在宋、卫、陈、郑乎?宋,大辰之虚也;陈,大皞之虚也;郑,祝融之虚也,皆火房也。

  星孛天汉,汉,水祥也。卫,颛顼之虚也,故为帝丘,其星为大水,水,火之牡也。其以丙子若壬午作乎?水火所以合也。若火入而伏,必以壬午,不过其见之月。”郑裨灶言于子产曰:“宋、卫、陈、郑将同日火,若我用瓘斝玉瓒,郑必不火。”子产弗与。

  吴伐楚。阳匄为令尹,卜战,不吉。司马子鱼曰:“我得上流,何故不吉。

  且楚故,司马令龟,我请改卜。”令曰:“鲂也,以其属死之,楚师继之,尚大克之”。吉。战于长岸,子鱼先死,楚师继之,大败吴师,获其乘舟余皇。使随人与后至者守之,环而堑之,及泉,盈其隧炭,陈以待命。吴公子光请于其众,曰:“丧先王之乘舟,岂唯光之罪,众亦有焉。请藉取之,以救死。”众许之。

  使长鬛者三人,潜伏于舟侧,曰:“我呼余皇,则对,师夜从之。”三呼,皆迭对。楚人从而杀之,楚师乱,吴人大败之,取余皇以归。

  

  

  !昭公十八年

  【经】十有八年春王三月,曹伯须卒。夏五月壬午,宋、卫、陈、郑灾。六月,邾人入鄅。秋,葬曹平公。冬,许迁于白羽。

  

  【传】十八年春,王二月乙卯,周毛得杀毛伯过而代之。苌弘曰:“毛得必亡,是昆吾稔之日也,侈故之以。而毛得以济侈于王都,不亡何待!”三月,曹平公卒。

  夏五月,火始昏见。丙子,风。梓慎曰:“是谓融风,火之始也。七日,其火作乎!”戊寅,风甚。壬午,大甚。宋、卫、陈、郑皆火。梓慎登大庭氏之库以望之,曰:“宋、卫、陈、郑也。”数日,皆来告火。裨灶曰:“不用吾言,郑又将火。”郑人请用之,子产不可。子大叔曰:“宝,以保民也。若有火,国几亡。可以救亡,子何爱焉?”子产曰:“天道远,人道迩,非所及也,何以知之?灶焉知天道?是亦多言矣,岂不或信?”遂不与,亦不复火。

  郑之未灾也,里析告子产曰:“将有大祥,民震动,国几亡。吾身泯焉,弗良及也。国迁其可乎?”子产曰:“虽可,吾不足以定迁矣。”及火,里析死矣,未葬,子产使舆三十人,迁其柩。火作,子产辞晋公子、公孙于东门。使司寇出新客,禁旧客勿出于宫。使子宽、子上巡群屏摄,至于大宫。使公孙登徙大龟。

  使祝史徙主祏于周庙,告于先君。使府人、库人各儆其事。商成公儆司宫,出旧宫人,置诸火所不及。司马、司寇列居火道,行火所焮。城下之人,伍列登城。

  明日,使野司寇各保其征。郊人助祝史除于国北,禳火于玄冥、回禄,祈于四鄘。

  书焚室而宽其征,与之材。三日哭,国不市。使行人告于诸侯。宋、卫皆如是。

  陈不救火,许不吊灾,君子是以知陈、许之先亡也。

  六月,鄅人藉稻。邾人袭鄅,鄅人将闭门。邾人羊罗摄其首焉,遂入之,尽俘以归。鄅子曰:“余无归矣。”从帑于邾,邾庄公反鄅夫人,而舍其女。秋,葬曹平公。往者见周原伯鲁焉,与之语,不说学。归以语闵子马。闵子马曰:“周其乱乎?夫必多有是说,而后及其大人。大人患失而惑,又曰:‘可以无学,无学不害。’不害而不学,则苟而可。于是乎下陵上替,能无乱乎?夫学,殖也,不学将落,原氏其亡乎?”七月,郑子产为火故,大为社,祓禳于四方,振除火灾,礼也。乃简兵大蒐,将为蒐除。子大叔之庙在道南,其寝在道北,其庭小。过期三日,使除徒陈于道南庙北,曰:“子产过女而命速除,乃毁于而乡。”子产朝,过而怒之,除者南毁。子产及冲,使从者止之曰:“毁于北方。”

  火之作也,子产授兵登陴。子大叔曰:“晋无乃讨乎?”子产曰:“吾闻之,小国忘守则危,况有灾乎?国之不可小,有备故也。”既,晋之边吏让郑曰:“郑国有灾,晋君、大夫不敢宁居,卜筮走望,不爱牲玉。郑之有灾,寡君之忧也。今执事扌间然授兵登陴,将以谁罪?边人恐惧,不敢不告。子产对曰:“若吾子之言,敝邑之灾,君之忧也。敝邑失政,天降之灾,又惧谗慝之间谋之,以启贪人,荐为弊邑不利,以重君之忧。幸而不亡,犹可说也。不幸而亡,君虽忧之,亦无及也。郑有他竟,望走在晋。既事晋矣,其敢有二心?”楚左尹王子胜言于楚子曰:“许于郑,仇敌也,而居楚地,以不礼于郑。晋、郑方睦,郑若伐许,而晋助之,楚丧地矣。君盍迁许?许不专于楚。郑方有令政。

  许曰:‘余旧国也。’郑曰:‘余俘邑也。’叶在楚国,方城外之蔽也。土不可易,国不可小,许不可俘,仇不可启,君其图之。”楚子说。冬,楚子使王子胜迁许于析,实白羽。

  

  

  !昭公十九年

  【经】十有九年春,宋公伐邾。夏五月戊辰,许世子止弑其君买。己卯,地震。秋,齐高发帅师伐莒。冬,葬许悼公。

  

  【传】十九年春,楚工尹赤迁阴于下阴,令尹子瑕城郏。叔孙昭子曰:“楚不在诸侯矣!其仅自完也,以持其世而已。”

  楚子之在蔡也,郹阳封人之女奔之,生大子建。及即位,使伍奢为之师。

  费无极为少师,无宠焉,欲谮诸王,曰:“建可室矣。”王为之聘于秦,无极与逆,劝王取之,正月,楚夫人嬴氏至自秦。

  鄅夫人,宋向戌之女也,故向宁请师。二月,宋公伐邾,围虫。三月,取之。乃尽归鄅俘。

  夏,许悼公疟。五月戊辰,饮大子止之药卒。大子奔晋。书曰:“弑其君。”

  君子曰:“尽心力以事君,舍药物可也。”

  邾人、郳人、徐人会宋公。乙亥,同盟于虫。

  楚子为舟师以伐濮。费无极言于楚子曰:“晋之伯也,迩于诸夏,而楚辟陋,故弗能与争。若大城城父而置大子焉,以通北方,王收南方,是得天下也。”王说,从之。故太子建居于城父。

  令尹子瑕聘于秦,拜夫人也。

  秋,齐高发帅师伐莒。莒子奔纪鄣。使孙书伐之。初,莒有妇人,莒子杀其夫,已为嫠妇。及老,托于纪鄣,纺焉以度而去之。及师至,则投诸外。或献诸子占,子占使师夜缒而登。登者六十人。缒绝。师鼓噪,城上之人亦噪。莒共公惧,启西门而出。七月丙子,齐师入纪。

  是岁也,郑驷偃卒。子游娶于晋大夫,生丝,弱。其父兄立子瑕。子产憎其为人也,且以为不顺,弗许,亦弗止。驷氏耸。他日,丝以告其舅。冬,晋人使以币如郑,问驷乞之立故。驷氏惧,驷乞欲逃。子产弗遣。请龟以卜,亦弗予。

  大夫谋对,子产不待而对客曰:“郑国不天,寡君之二三臣,札瘥夭昏,今又丧我先大夫偃。其子幼弱,其一二父兄惧队宗主,私族于谋而立长亲。寡君与其二三老曰:‘抑天实剥乱是,吾何知焉?’谚曰:‘无过乱门。’民有兵乱,犹惮过之,而况敢知天之所乱?今大夫将问其故,抑寡君实不敢知,其谁实知之?平丘之会,君寻旧盟曰:‘无或失职。’若寡君之二三臣,其即世者,晋大夫而专制其位,是晋之县鄙也,何国之为?”辞客币而报其使。晋人舍之。

  楚人城州来。沈尹戌曰:“楚人必败。昔吴灭州来,子旗请伐之。王曰:‘吾未抚吾民。’今亦如之,而城州来以挑吴,能无败乎?”侍者曰:“王施舍不倦,息民五年,可谓抚之矣。”戌曰:“吾闻抚民者,节用于内,而树德于外,民乐其性,而无寇仇。今宫室无量,民人日骇,劳罢死转,忘寝与食,非抚之也。”

  郑大水,龙斗于时门之外洧渊。国人请为禜焉,子产弗许,曰:“我斗,龙不我觌也。龙斗,我独何觌焉?禳之,则彼其室也。吾无求于龙,龙亦无求于我。”

  乃止也。

  令尹子瑕言蹶由于楚子曰:“彼何罪?谚所谓‘室于怒,市于色’者,楚之谓矣。舍前之忿可也。”乃归蹶由。

  

  

  !昭公二十年

  【经】二十年春王正月。夏,曹公孙会自鄸出奔宋。秋,盗杀卫侯之兄絷。

  冬十月,宋华亥、向宁、华定出奔陈。十有一月辛卯,蔡侯卢卒。

  

  【传】二十年春,王二月己丑,日南至。梓慎望氛曰:“今兹宋有乱,国几亡,三年而后弭。蔡有大丧。”叔孙昭子曰:“然则戴、桓也!汏侈无礼已甚,乱所在也。”

  费无极言于楚子曰:“建与伍奢将以方城之外叛。自以为犹宋、郑也,齐、晋又交辅之,将以害楚。其事集矣。”王信之,问伍奢。伍奢对曰:“君一过多矣,何信于谗?”王执伍奢。使城父司马奋扬杀大子,未至,而使遣之。三月,大子建奔宋。王召奋扬,奋扬使城父人执己以至。王曰:“言出于余口,入于尔耳,谁告建也?”对曰:“臣告之。君王命臣曰:‘事建如事余。’臣不佞,不能苟贰。奉初以还,不忍后命,故遣之。既而悔之,亦无及已。”王曰:“而敢来,何也?”对曰:“使而失命,召而不来,是再奸也。逃无所入。”王曰:“归。”从政如他日。

  无极曰:“奢之子材,若在吴,必忧楚国,盍以免其父召之。彼仁,必来。

  不然,将为患。”王使召之,曰:“来,吾免而父。”棠君尚谓其弟员曰:“尔适吴,我将归死。吾知不逮,我能死,尔能报。闻免父之命,不可以莫之奔也;亲戚为戮,不可以莫之报也。奔死免父,孝也;度功而行,仁也;择任而往,知也;知死不辟,勇也。父不可弃,名不可废,尔其勉之,相从为愈。”伍尚归。

  奢闻员不来,曰:“楚君、大夫其旰食乎!”楚人皆杀之。

  员如吴,言伐楚之利于州于。公子光曰:“是宗为戮而欲反其仇,不可从也。”

  员曰:“彼将有他志。余姑为之求士,而鄙以待之。”乃见鱄设诸焉,而耕于鄙。

  宋元公无信多私,而恶华、向。华定、华亥与向宁谋曰:“亡愈于死,先诸?”华亥伪有疾,以诱群公子。公子问之,则执之。夏六月丙申,杀公子寅、公子御戎、公子朱、公子固、公孙援、公孙丁,拘向胜、向行于其廪。公如华氏请焉,弗许,遂劫之。癸卯,取大子栾与母弟辰、公子地以为质。公亦取华亥之子无戚、向宁之子罗、华定之子启,与华氏盟,以为质。

  卫公孟絷狎齐豹,夺之司寇与鄄,有役则反之,无则取之。公孟恶北宫喜、褚师圃,欲去之。公子朝通于襄夫人宣姜,惧,而欲以作乱。故齐豹、北宫喜、褚师圃、公子朝作乱。

  初,齐豹见宗鲁于公孟,为骖乘焉。将作乱,而谓之曰:“公孟之不善,子所知也。勿与乘,吾将杀之。”对曰:“吾由子事公孟,子假吾名焉,故不吾远也。虽其不善,吾亦知之。抑以利故,不能去,是吾过也。今闻难而逃,是僣子也。子行事乎,吾将死之,以周事子,而归死于公孟,其可也。”

  丙辰,卫侯在平寿,公孟有事于盖获之门外,齐子氏帷于门外而伏甲焉。使祝蛙置戈于车薪以当门,使一乘从公孟以出。使华齐御公孟,宗鲁骖乘。及闳中,齐氏用戈击公孟,宗鲁以背蔽之,断肱,以中公孟之肩,皆杀之。

  公闻乱,乘,驱自阅门入,庆比御公,公南楚骖乘,使华寅乘贰车。及公宫,鸿<马亚>魋驷乘于公,公载宝以出。褚师子申遇公于马路之衢,遂从。过齐氏,使华寅肉袒,执盖以当其阙。齐氏射公,中南楚之背,公遂出。寅闭郭门,逾而从公。公如死鸟,析朱鉏宵从窦出,徒行从公。

  齐侯使公孙青聘于卫。既出,闻卫乱,使请所聘。公曰:“犹在竟内,则卫君也。”乃将事焉。遂从诸死鸟,请将事。辞曰:“亡人不佞,失守社稷,越在草莽,吾子无所辱君命。”宾曰:“寡君命下臣于朝,曰:‘阿下执事。’臣不敢贰。”主人曰:“君若惠顾先君之好,昭临敝邑,镇抚其社稷,则有宗祧在。”

  乃止。卫侯固请见之,不获命,以其良马见,为未致使故也。卫侯以为乘马。宾将掫,主人辞曰:“亡人之忧,不可以及吾子。草莽之中,不足以辱从者。敢辞。”宾曰:“寡君之下臣,君之牧圉也。若不获扞外役,是不有寡君也。臣惧不免于戾,请以除死。”亲执铎,终夕与于燎。

  齐氏之宰渠子召北宫子。北宫氏之宰不与闻谋,杀渠子,遂伐齐氏,灭之。

  丁巳晦,公入,与北宫喜盟于彭水之上。秋七月戊午朔,遂盟国人。八月辛亥,公子朝、褚师圃、子玉霄、子高鲂出奔晋。闰月戊辰,杀宣姜。卫侯赐北宫喜谥曰贞子,赐析朱鉏谥曰成子,而以齐氏之墓予之。

  卫侯告宁于齐,且言子石。齐侯将饮酒,遍赐大夫曰:“二三子之教也。”

  苑何忌辞,曰:“与于青之赏,必及于其罚。在《康诰》曰:‘父子兄弟,罪不相及。’况在群臣?臣敢贪君赐以干先王?”琴张闻宗鲁死,将往吊之。仲尼曰:“齐豹之盗,而孟絷之贼,女何吊焉?君子不食奸,不受乱,不为利疚于回,不以回待人,不盖不义,不犯非礼。”

  宋华、向之乱,公子城、公孙忌、乐舍、司马强、向宜、向郑、楚建、郳甲出奔郑。其徒与华氏战于鬼阎,败子城。子城适晋。华亥与其妻必盥而食所质公子者而后食。公与夫人每日必适华氏,食公子而后归。华亥患之,欲归公子。

  向宁曰:“唯不信,故质其子。若又归之,死无日矣。”公请于华费遂,将攻华氏。对曰:“臣不敢爱死,无乃求去忧而滋长乎!臣是以惧,敢不听命?”公曰:“子死亡有命,余不忍其訽。”冬十月,公杀华、向之质而攻之。戊辰,华、向奔陈,华登奔吴。向宁欲杀大子,华亥曰:“干君而出,又杀其子,其谁纳我?且归之有庸。”使少司寇牼以归,曰:“子之齿长矣,不能事人,以三公子为质,必免。”公子既入,华牼将自门行。公遽见之,执其手曰:“余知而无罪也,入,复而所。”

  齐侯疥,遂痁,期而不瘳,诸侯之宾问疾者多在。梁丘据与裔款言于公曰:“吾事鬼神丰,于先君有加矣。今君疾病,为诸侯忧,是祝史之罪也。诸侯不知,其谓我不敬。君盍诛于祝固、史嚣以辞宾?”公说,告晏子。晏子曰:“日宋之盟,屈建问范会之德于赵武。赵武曰:‘夫子之家事治,言于晋国,竭情无私。

  其祝史祭祀,陈信不愧。其家事无猜,其祝史不祈。’建以语康王,康王曰:‘神人无怨,宜夫子之光辅五君,以为诸侯主也。’”公曰:“据与款谓寡人能事鬼神,故欲诛于祝史。子称是语,何故?”对曰:“若有德之君,外内不废,上下无怨,动无违事,其祝史荐信,无愧心矣。是以鬼神用飨,国受其福,祝史与焉。其所以蕃祉老寿者,为信君使也,其言忠信于鬼神。其适遇淫君,外内颇邪,上下怨疾,动作辟违,从欲厌私。高台深池,撞钟舞女,斩刈民力,输掠其聚,以成其违,不恤后人。暴虐淫从,肆行非度,无所还忌,不思谤讟,不惮鬼神,神怒民痛,无悛于心。其祝史荐信,是言罪也。其盖失数美,是矫诬也。进退无辞,则虚以求媚。是以鬼神不飨其国以祸之,祝史与焉。所以夭昏孤疾者,为暴君使也。其言僣嫚于鬼神。”公曰:“然则若之何?”对曰:“不可为也:山林之木,衡鹿守之;泽之萑蒲,舟鲛守之;薮之薪蒸,虞候守之。海之盐蜃,祈望守之。县鄙之人,入从其政。逼介之关,暴征其私。承嗣大夫,强易其贿。

  布常无艺,征敛无度;宫室日更,淫乐不违。内宠之妾,肆夺于市;外宠之臣,僣令于鄙。私欲养求,不给则应。民人苦病,夫妇皆诅。祝有益也,诅亦有损。

  聊、摄以东,姑、尤以西,其为人也多矣。虽其善祝,岂能胜亿兆人之诅?君若欲诛于祝史,修德而后可。”公说,使有司宽政,毁关,去禁,薄敛,已责。

  十二月,齐侯田于沛,招虞人以弓,不进。公使执之,辞曰:“昔我先君之田也,旃以招大夫,弓以招士,皮冠以招虞人。臣不见皮冠,故不敢进。”乃舍之。仲尼曰:“守道不如守官,君子韪之。”

  齐侯至自田,晏子侍于遄台,子犹驰而造焉。公曰:“唯据与我和夫!”晏子对曰:“据亦同也,焉得为和?”公曰:“和与同异乎?”对曰:“异。和如羹焉,水火醯醢盐梅以烹鱼肉,燀之以薪。宰夫和之,齐之以味,济其不及,以泄其过。君子食之,以平其心。君臣亦然。君所谓可而有否焉,臣献其否以成其可。君所谓否而有可焉,臣献其可以去其否。是以政平而不干,民无争心。故《诗》曰:‘亦有和羹,既戒既平。鬷嘏无言,时靡有争。’先王之济五味,和五声也,以平其心,成其政也。声亦如味,一气,二体,三类,四物,五声,六律,七音,八风,九歌,以相成也。清浊,小大,短长,疾徐,哀乐,刚柔,迟速,高下,出入,周疏,以相济也。君子听之,以平其心。心平,德和。故《诗》曰:‘德音不瑕。’今据不然。君所谓可,据亦曰可;君所谓否,据亦曰否。若以水济水,谁能食之?若琴瑟之专一,谁能听之?同之不可也如是。”

  饮酒乐。公曰:“古而无死,其乐若何?”晏子对曰:“古而无死,则古之乐也,君何得焉?昔爽鸠氏始居此地,季荝因之,有逢伯陵因之,蒲姑氏因之,而后大公因之。古者无死,爽鸠氏之乐,非君所愿也。”

  郑子产有疾,谓子大叔曰:“我死,子必为政。唯有德者能以宽服民,其次莫如猛。夫火烈,民望而畏之,故鲜死焉。水懦弱,民狎而玩之,则多死焉。故宽难。”疾数月而卒。大叔为政,不忍猛而宽。郑国多盗,取人于萑苻之泽。大叔悔之,曰:“吾早从夫子,不及此。”兴徒兵以攻萑苻之盗,尽杀之,盗少止。

  仲尼曰:“善哉!政宽则民慢,慢则纠之以猛。猛则民残,残则施之以宽。

  宽以济猛,猛以济宽,政是以和。《诗》曰:‘民亦劳止,汔可小康。惠此中国,以绥四方。’施之以宽也。‘毋从诡随,以谨无良。式遏寇虐,惨不畏明。’纠之以猛也。‘柔远能迩,以定我王。’平之以和也。又曰:‘不竞不絿,不刚不柔。布政优优,百禄是遒。’和之至也。”

  及子产卒,仲尼闻之,出涕曰:“古之遗爱也。”

  

  

  !昭公二十一年

  【经】二十有一年春王三月,葬蔡平公。夏,晋侯使士鞅来聘。宋华亥、向宁、华定自陈入于宋南里以叛。秋七月壬午朔,日有食之。八月乙亥,叔辄卒。

  冬,蔡侯朱出奔楚。公如晋,至河乃复。

  

  【传】二十一年春,天王将铸无射。泠州鸠曰:“王其以心疾死乎?夫乐,天子之职也。夫音,乐之舆也。而钟,音之器也。天子省风以作乐,器以钟之,舆以行之。小者不窕,大者不槬,则和于物,物和则嘉成。故和声入于耳而藏于心,心亿则乐。窕则不咸,槬则不容,心是以感,感实生疾。今钟槬矣,王心弗堪,其能久乎?”三月,葬蔡平公。蔡大子朱失位,位在卑。大夫送葬者归,见昭子。昭子问蔡故,以告。昭子叹曰:“蔡其亡乎!若不亡,是君也必不终。《诗》曰:‘不解于位,民之攸塈。’今蔡侯始即位,而适卑,身将从之。”

  夏,晋士鞅来聘,叔孙为政。季孙欲恶诸晋,使有司以齐鲍国归费之礼为士鞅。士鞅怒,曰:“鲍国之位下,其国小,而使鞅从其牢礼,是卑敝邑也。将复诸寡君。”鲁人恐,加四牢焉,为十一牢。

  宋华费遂生华貙、华多僚、华登。貙为少司马,多僚为御士,与貙相恶,乃谮诸公曰:“貙将纳亡人。”亟言之。公曰:“司马以吾故,亡其良子。死亡有命,吾不可以再亡之。”对曰:“君若爱司马,则如亡。死如可逃,何远之有?”公惧,使侍人召司马之侍人宜僚,饮之酒而使告司马。司马叹曰:“必多僚也。

  吾有谗子而弗能杀,吾又不死,抑君有命,可若何?”乃与公谋逐华貙,将使田孟诸而遣之。公饮之酒,厚酬之,赐及从者。司马亦如之。张匄尤之,曰:“必有故。”使子皮承宜僚以剑而讯之。宜僚尽以告。张匄欲杀多僚,子皮曰:“司马老矣,登之谓甚,吾又重之,不如亡也。”五月丙申,子皮将见司马而行,则遇多僚御司马而朝。张匄不胜其怒,遂与子皮、臼任、郑翩杀多僚,劫司马以叛,而召亡人。壬寅,华、向入。乐大心、丰愆、华牼御诸横。华氏居卢门,以南里叛。六月庚午,宋城旧鄘及桑林之门而守之。

  秋七月壬午朔,日有食之。公问于梓慎曰:“是何物也,祸福何为?”对曰:“二至、二分,日有食之,不为灾。日月之行也,分,同道也;至,相过也。其他月则为灾,阳不克也,故常为水。”

  于是叔辄哭日食。昭子曰:“子叔将死,非所哭也。”八月,叔辄卒。

  冬十月,华登以吴师救华氏。齐乌枝鸣戍宋。厨人濮曰:“《军志》有之:‘先人有夺人之心,后人有待其衰。’盍及其劳且未定也伐诸?若入而固,则华氏众矣,悔无及也。”从之。丙寅,齐师、宋师败吴师于鸿口,获其二帅公子苦雂、偃州员。华登帅其余以败宋师。公欲出,厨人濮曰:“吾小人,可藉死而不能送亡,君请待之。”乃徇曰:“杨徽者,公徒也。”众从之。公自杨门见之,下而巡之,曰:“国亡君死,二三子之耻也,岂专孤之罪也?”齐乌枝鸣曰:“用少莫如齐致死,齐致死莫如去备。彼多兵矣,请皆用剑。”从之。华氏北,复即之。厨人濮以裳裹首而荷以走,曰:“得华登矣!”遂败华氏于新里。翟偻新居于新里,既战,说甲于公而归。华妵居于公里,亦如之。

  十一月癸未,公子城以晋师至。曹翰胡会晋荀吴、齐苑何忌、卫公子朝救宋。

  丙戌,与华氏战于赭丘。郑翩愿为鹳,其御愿为鹅。子禄御公子城,庄堇为右。

  干犨御吕封人华豹,张匄为右。相遇,城还。华豹曰:“城也!”城怒而反之,将注,豹则关矣。曰:“平公之灵,尚辅相余。”豹射,出其间。将注,则又关矣。曰:“不狎,鄙!”押矢。城射之,殪。张丐抽殳而下,射之,折股。扶伏而击之,折轸。又射之,死。干丐请一矢,城曰:“余言汝于君。”对曰:“不死伍乘,军之大刑也。干刑而从子,君焉用之?子速诸。”乃射之,殪。大败华氏,围诸南里。华亥搏膺而呼,见华貙,曰:“吾为栾氏矣。”貙曰:“子无我<辶壬>。不幸而后亡。”使华登如楚乞师。华貙以车十五乘,徒七十人,犯师而出,食于睢上,哭而送之,乃复入。楚薳越帅师将逆华氏。大宰犯谏曰:“诸侯唯宋事其君,今又争国,释君而臣是助,无乃不可乎?”王曰:“而告我也后,既许之矣。”

  蔡侯朱出奔楚。费无极取货于东国,而谓蔡人曰:“朱不用命于楚,君王将立东国。若不先从王欲,楚必围蔡。”蔡人惧,出朱而立东国。朱愬于楚,楚子将讨蔡。无极曰:“平侯与楚有盟,故封。其子有二心,故废之。灵王杀隐大子,其子与君同恶,德君必甚。又使立之,不亦可乎?且废置在君,蔡无他矣。”公如晋,及河,鼓叛晋。晋将伐鲜虞,故辞公。

  

  

  !昭公二十二年

  【经】二十有二年春,齐侯伐莒。宋华亥、向宁、华定自宋南里出奔楚。大蒐于昌间。夏四月乙丑,天王崩。六月,叔鞅如京师,葬景王,王室乱。刘子、单子以王猛居于皇。秋,刘子、单子以王猛入于王城。冬十月,王子猛卒。十有二月癸酉朔,日有食之。

  

  【传】二十二年春,王二月甲子,齐北郭启帅师伐莒。莒子将战,苑羊牧之谏曰:“齐帅贱,其求不多,不如下之。大国不可怒也。”弗听,败齐师于寿余。

  齐侯伐莒,莒子行成。司马灶如莒莅盟,莒子如齐莅盟,盟子稷门之外。莒于是乎大恶其君。

  楚薳越使告于宋曰:“寡君闻君有不令之臣为君忧,无宁以为宗羞?寡君请受而戮之。”对曰:“孤不佞,不能媚于父兄,以为君忧,拜命之辱。抑君臣日战,君曰‘余必臣是助’,亦唯命。人有言曰:‘唯乱门之无过’。君若惠保敝邑,无亢不衷,以奖乱人,孤之望也。唯君图之!”楚人患之。诸侯之戍谋曰:“若华氏知困而致死,楚耻无功而疾战,非吾利也。不如出之,以为楚功,其亦能无为也已。救宋而除其害,又何求?”乃固请出之。宋人从之。己巳,宋华亥、向宁、华定、华貙、华登、皇奄伤、省臧,士平出奔楚。宋公使公孙忌为大司马,边卬为大司徒,乐祁为司马,仲几为左师,乐大心为右师,乐輓为大司寇,以靖国人。

  王子朝、宾起有宠于景王,王与宾孟说之,欲立之。刘献公之庶子伯蚡事单穆公,恶宾孟之为人也,愿杀之。又恶王子朝之言,以为乱,愿去之。宾孟适郊,见雄鸡自断其尾。问之,侍者曰:“自惮其犠也。”遽归告王,且曰:“鸡其惮为人用乎?人异于是。犠者,实用人,人犠实难,己犠何害?”王弗应。

  夏四月,王田北山,使公卿皆从,将杀单子、刘子。王有心疾,乙丑,崩于荣锜氏。戊辰,刘子挚卒,无子,单子立刘蚠。五月庚辰,见王,遂攻宾起,杀之,盟群王子于单氏。

  晋之取鼓也,既献,而反鼓子焉,又叛于鲜虞。

  六月,荀吴略东阳,使师伪籴者,负甲以息于昔阳之门外,遂袭鼓,灭之。

  以鼓子鸢鞮归,使涉佗守之。

  丁巳,葬景王。王子朝因旧官、百工之丧职秩者,与灵、景之族以作乱。帅郊、要、饯之甲,以逐刘子。壬戌、刘子奔扬。单子逆悼王于庄宫以归。王子还夜取王以如庄宫。癸亥,单子出。王子还与召庄公谋,曰:“不杀单旗,不捷。

  与之重盟,必来。背盟而克者多矣。”从之。樊顷子曰:“非言也,必不克。”

  遂奉王以追单子。及领,大盟而复,杀挚荒以说。刘子如刘,单子亡。乙丑,奔于平畤,群王子追之。单子杀还、姑、发、弱、鬷延、定、稠,子朝奔京。丙寅,伐之,京人奔山。刘子入于王城。辛未,巩简公败绩于京。乙亥,甘平公亦败焉。

  叔鞅至自京师,言王室之乱也。闵马父曰:“子朝必不克,其所与者,天所废也。”

  单子欲告急于晋,秋七月戊寅,以王如平畤,遂如圃车,次于皇。刘子如刘。单子使王子处守于王城,盟百工于平宫。辛卯,寻阝肸伐皇,大败,获寻阝肸。壬辰,焚诸王城之市。八月辛酉,司徒丑以王师败绩于前城,百工叛。己巳,伐单氏之宫,败焉。庚午,反伐之。辛未,伐东圉。冬十月丁巳,晋籍谈、荀跞帅九州之戎及焦、瑕、温、原之师,以纳王于王城。庚申,单子、刘蚡以王师败绩于郊,前城人败陆浑于社。十一月乙酉,王子猛卒,不成丧也。已丑,敬王即位,馆于子旅氏。

  十二月庚戌,晋籍谈、荀跞、贾辛、司马督帅师军于阴,于侯氏,于溪泉,次于社。王师军于氾,于解,次于任人。闰月,晋箕遗、乐征,右行诡济师,取前城,军其东南。王师军于京楚。辛丑,伐京,毁其西南。

  

  

  !昭公二十三年

  【经】二十有三年春王正月,叔孙婼如晋。癸丑,叔鞅卒。晋人执我行人叔孙婼。晋人围郊。夏六月,蔡侯东国卒于楚。秋七月,莒子庚舆来奔。戊辰,吴败顿、胡、沈、蔡、陈、许之师于鸡父,胡子髡、沈子逞灭,获陈夏啮。天王居于狄泉。尹氏立王子朝。八月乙未,地震。冬,公如晋,至河,有疾,乃复。

  

  【传】二十三年春,王正月壬寅朔,二师围郊。癸卯,郊、寻阝溃。丁未,晋师在平阴,王师在泽邑。王使告间,庚戌,还。

  邾人城翼,还,将自离姑。公孙鉏曰:“鲁将御我。”欲自武城还,循山而南。徐鉏、丘弱、茅地曰:“道下,遇雨,将不出,是不归也。”遂自离姑。武城人塞其前,断其后之木而弗殊。邾师过之,乃推而蹶之。遂取邾师,获鉏、弱、地。

  邾人诉于晋,晋人来讨。叔孙婼如晋,晋人执之。书曰:“晋人执我行人叔孙婼。”言使人也。晋人使与邾大夫坐。叔孙曰:“列国之卿,当小国之君,固周制也。邾又夷也。寡君之命介子服回在,请使当之,不敢废周制故也。”乃不果坐。

  韩宣子使邾人取其众,将以叔孙与之。叔孙闻之,去众与兵而朝。士弥牟谓韩宣子曰:“子弗良图,而以叔孙与其仇,叔孙必死之。鲁亡叔孙,必亡邾。邾君亡国,将焉归?子虽悔之,何及?所谓盟主,讨违命也。若皆相执,焉用盟主?”乃弗与,使各居一馆。士伯听其辞而诉诸宣子,乃皆执之。士伯御叔孙,从者四人,过邾馆以如吏。先归邾子。士伯曰:“以刍荛之难,从者之病,将馆子于都。”

  叔孙旦而立,期焉。乃馆诸箕。舍子服昭伯于他邑。

  范献子求货于叔孙,使请冠焉。取其冠法,而与之两冠,曰:“尽矣。”为叔孙故,申丰以货如晋。叔孙曰:“见我,吾告女所行货。”见,而不出。吏人之与叔孙居于箕者,请其吠狗,弗与。及将归,杀而与之食之。叔孙所馆者,虽一日必葺其墙屋,去之如始至。

  夏四月乙酉,单子取訾,刘子取墙人、直人。六月壬午,王子朝入于尹。癸未,尹圉诱刘佗杀之。丙戌,单子从阪道,刘子从尹道伐尹。单子先至而败,刘子还。己丑,召伯奂、南宫极以成周人戍尹。庚寅,单子、刘子、樊齐以王如刘。

  甲午,王子朝入于王城,次于左巷。秋七月戊申,寻阝罗纳诸庄宫。尹辛败刘师于唐。丙辰,又败诸寻阝。甲子,尹辛取西闱。丙寅,攻蒯,蒯溃。

  莒子庚舆虐而好剑,苟铸剑,必试诸人。国人患之。又将叛齐。乌存帅国人以逐之。庚舆将出,闻乌存执殳而立于道左,惧将止死。苑羊牧之曰:“君过之!乌存以力闻可矣,何必以弑君成名?”遂来奔。齐人纳郊公。

  吴人伐州来,楚薳越帅师及诸侯之师奔命救州来。吴人御诸钟离。子瑕卒,楚师熸。吴公子光曰:“诸侯从于楚者众,而皆小国也。畏楚而不获已,是以来。吾闻之曰:‘作事威克其爱,虽小必济’。胡、沈之君幼而狂,陈大夫啮壮而顽,顿与许、蔡疾楚政。楚令尹死,其师熸。帅贱、多宠,政令不壹。而七国同役不同心,帅贱而不能整,无大威命,楚可败也,若分师先以犯胡、沈与陈,必先奔。三国败,诸侯之师乃摇心矣。诸侯乖乱,楚必大奔。请先者去备薄威,后者敦陈整旅。”吴子从之。戊辰晦,战于鸡父。吴子以罪人三千,先犯胡、沈与陈,三国争之。吴为三军以击于后,中军从王,光帅右,掩余帅左。吴之罪人或奔或止,三国乱。吴师击之,三国败,获胡、沈之君及陈大夫。舍胡、沈之囚,使奔许与蔡、顿,曰:“吾君死矣!”师噪而从之,三国奔,楚师大奔。书曰:“胡子髡、沈子逞灭,获陈夏啮。”君臣之辞也。不言战,楚未陈也。

  八月丁酉,南宫极震。苌弘谓刘文公曰:“君其勉之!先君之力可济也。周之亡也,其三川震。今西王之大臣亦震,天弃之矣!东王必大克。”

  楚大子建之母在郹,召吴人而启之。冬十月甲申,吴大子诸樊入郹,取楚夫人与其宝器以归。楚司马薳越追之,不及。将死,众曰:“请遂伐吴以徼之。”

  薳越曰:“再败君师,死且有罪。亡君夫人,不可以莫之死也。”乃缢于薳澨。

  公为叔孙故如晋,及河,有疾而复。

  楚囊瓦为令尹,城郢。沈尹戌曰:“子常必亡郢!苟不能卫,城无益也。古者,天子守在四夷;天子卑,守在诸侯。诸侯守在四邻;诸侯卑,守在四竟。慎其四竟,结其四援,民狎其野,三务成功,民无内忧,而又无外惧,国焉用城?今吴是惧而城于郢,守已小矣。卑之不获,能无亡乎?昔梁伯沟其公宫而民溃。

  民弃其上,不亡何待?夫正其疆场,修其土田,险其走集,亲其民人,明其伍候,信其邻国,慎其官守,守其交礼,不僣不贪,不懦不耆,完其守备,以待不虞,又何畏矣?《诗》曰:‘无念尔祖,聿修厥德。’无亦监乎若敖、蚡冒至于武、文?土不过同,慎其四竟,犹不城郢。今土数圻,而郢是城,不亦难乎?”

  

  !昭公二十四年

  【经】二十四年春王三月丙戌,仲孙玃卒。婼至自晋。夏五月乙未朔,日有食之。秋八月,大雩。丁酉,杞伯郁厘卒。冬,吴灭巢。葬杞平公。

  

  【传】二十四年春,王正月辛丑,召简公、南宫嚚以甘桓公见王子朝。刘子谓苌弘曰:“甘氏又往矣。”对曰:“何害?同德度义。《大誓》曰:‘纣有亿兆夷人,亦有离德。余有乱臣十人,同心同德。’此周所以兴也。君其务德,无患无人。”戊午,王子朝入于邬。

  晋士弥牟逆叔孙于箕。叔孙使梁其踁待于门内,曰:“余左顾而欬,乃杀之。右顾而笑,乃止。”叔孙见士伯,士伯曰:“寡君以为盟主之故,是以久子。

  不腆敝邑之礼,将致诸从者。使弥牟逆吾子。”叔孙受礼而归。二月,婼至自晋,尊晋也。

  三月庚戌,晋侯使士景伯莅问周故,士伯立于乾祭而问于介众。晋人乃辞王子朝,不纳其使。

  夏五月乙未朔,日有食之。梓慎曰:“将水。”昭子曰:“旱也。日过分而阳犹不克,克必甚,能无旱乎?阳不克莫,将积聚也。”

  六月壬申,王子朝之师攻瑕及杏,皆溃。

  郑伯如晋,子大叔相,见范献子。献子曰:“若王室何?”对曰:“老夫其国家不能恤,敢及王室。抑人亦有言曰:‘嫠不恤其纬,而忧宗周之陨,为将及焉。’今王室实蠢蠢焉,吾小国惧矣。然大国之忧也,吾侪何知焉?吾子其早图之!《诗》曰:瓶之罄矣,惟罍之耻。’王室之不宁,晋之耻也。”献子惧,而与宣子图之。乃征会于诸侯,期以明年。

  秋八月,大雩,旱也。

  冬十月癸酉,王子朝用成周之宝珪于河。甲戌,津人得诸河上。阴不佞以温人南侵,拘得玉者,取其玉,将卖之,则为石。王定而献之,与之东訾。

  楚子为舟师以略吴疆。沈尹戌曰:“此行也,楚必亡邑。不抚民而劳之,吴不动而速之,吴踵楚,而疆埸无备,邑能无亡乎?”越大夫胥犴劳王于豫章之汭。越公子仓归王乘舟,仓及寿梦帅师从王,王及圉阳而还。吴人踵楚,而边人不备,遂灭巢及钟离而还。沈尹戌曰:“亡郢之始,于此在矣。王一动而亡二姓之帅,几如是而不及郢?《诗》曰:‘谁生厉阶,至今为梗?’其王之谓乎?”

  

  !昭公二十五年

  【经】二十五年春,叔孙婼如宋。夏,叔诣会晋赵鞅、宋乐大心,卫北宫喜、郑游吉、曹人、邾人、滕人、薛人、小邾人于黄父。有鸲鹆来巢。秋七月上辛,大雩;季辛,又雩。九月己亥,公孙于齐,次于阳州。齐侯唁公于野井。冬十月戊辰,叔孙婼卒。十有一月己亥,宋公佐卒于曲棘。十有二月,齐侯取郓。

  

  【传】二十五年春,叔孙婼聘于宋,桐门右师见之。语,卑宋大夫,而贱司城氏。昭子告其人曰:“右师其亡乎!君子贵其身而后能及人,是以有礼。今夫子卑其大夫而贱其宗,是贱其身也,能有礼乎?无礼必亡。”

  宋公享昭子,赋《新宫》。昭子赋《车辖》。明日宴,饮酒,乐,宋公使昭子右坐,语相泣也。乐祁佐,退而告人曰:“今兹君与叔孙,其皆死乎?吾闻之:‘哀乐而乐哀,皆丧心也。’心之精爽,是谓魂魄。魂魄去之,何以能久?”季公若之姊为小邾夫人,生宋元夫人,生子以妻季平子。昭子如宋聘,且逆之。公若从,谓曹氏勿与,鲁将逐之。曹氏告公,公告乐祁。乐祁曰:“与之。

  如是,鲁君必出。政在季氏三世矣,鲁君丧政四公矣。无民而能逞其志者,未之有也。国君是以镇抚其民。《诗》曰:‘人之云亡,心之忧矣。’鲁君失民矣,焉得逞其志?靖以待命犹可,动必忧。”

  夏,会于黄父,谋王室也。赵简子令诸侯之大夫输王粟,具戍人,曰:“明年将纳王。”子大叔见赵简子,简子问揖让周旋之礼焉。对曰:“是仪也,非礼也。”简子曰:“敢问何谓礼?”对曰:“吉也闻诸先大夫子产曰:‘夫礼,天之经也。地之义也,民之行也。’天地之经,而民实则之。则天之明,因地之性,生其六气,用其五行。气为五味,发为五色,章为五声,淫则昏乱,民失其性。

  是故为礼以奉之:为六畜、五牲、三犠,以奉五味;为九文、六采、五章,以奉五色;为九歌、八风、七音、六律,以奉五声;为君臣、上下,以则地义;为夫妇、外内,以经二物;为父子、兄弟、姑姊、甥舅、昏媾、姻亚,以象天明,为政事、庸力、行务,以从四时;为刑罚、威狱,使民畏忌,以类其震曜杀戮;为温慈、惠和,以效天之生殖长育。民有好、恶、喜、怒、哀、乐,生于六气。是故审则宜类,以制六志。哀有哭泣,乐有歌舞,喜有施舍,怒有战斗;喜生于好,怒生于恶。是故审行信令,祸福赏罚,以制死生。生,好物也;死,恶物也;好物,乐也;恶物,哀也。哀乐不失,乃能协于天地之性,是以长久。”简子曰:“甚哉,礼之大也!”对曰:“礼,上下之纪,天地之经纬也,民之所以生也,是以先王尚之。故人之能自曲直以赴礼者,谓之成人。大,不亦宜乎?”简子曰:“鞅也请终身守此言也。”宋乐大心曰:“我不输粟。我于周为客?”若之何使客?”晋士伯曰:“自践土以来,宋何役之不会,而何盟之不同?曰‘同恤王室’,子焉得辟之?子奉君命,以会大事,而宋背盟,无乃不可乎?”右师不敢对,受牒而退。士伯告简子曰:“宋右师必亡。奉君命以使,而欲背盟以干盟主,无不祥大焉。”

  ‘有鸲鹆来巢’,书所无也。师己曰:“异哉!吾闻文、武之世,童谣有之,曰:‘鸲之鹆之,公出辱之。鸲鹆之羽,公在外野,往馈之马。鸲鹆跦跦,公在乾侯,征褰与襦。鸲鹆之巢,远哉遥遥。稠父丧劳,宋父以骄。鸲鹆鸲鹆,往歌来哭。’童谣有是,今鸲鹆来巢,其将及乎?”秋,书再雩,旱甚也。

  初,季公鸟娶妻于齐鲍文子,生甲。公鸟死,季公亥与公思展与公鸟之臣申夜姑相其室。及季姒与饔人檀通,而惧,乃使其妾抶己,以示秦遄之妻,曰:“公若欲使余,余不可而抶余。”又诉于公甫,曰:“展与夜姑将要余。”秦姬以告公之,公之与公甫告平子。平子拘展于卞而执夜姑,将杀之。公若泣而哀之,曰:“杀是,是杀余也。”将为之请。平子使竖勿内,日中不得请。有司逆命,公之使速杀之。故公若怨平子。

  季、郈之鸡斗。季氏介其鸡,郈氏为之金距。平子怒,益宫于郈氏,且让之。故郈昭伯亦怨平子。臧昭伯之从弟会,为谗于臧氏,而逃于季氏,臧氏执旃。平子怒,拘臧氏老。将禘于襄公,万者二人,其众万于季氏。臧孙曰:“此之谓不能庸先君之庙。”大夫遂怨平子。公若献弓于公为,且与之出射于外,而谋去季氏。公为告公果、公贲。公果、公贲使侍人僚柤告公。公寝,将以戈击之,乃走。公曰:“执之。”亦无命也。惧而不出,数月不见,公不怒。又使言,公执戈惧之,乃走。又使言,公曰:“非小人之所及也。”公果自言,公以告臧孙,臧孙以难。告郈孙,郈孙以可,劝。告子家懿伯,懿伯曰:“谗人以君侥幸,事若不克,君受其名,不可为也。舍民数世,以求克事,不可必也。

  且政在焉,其难图也。”公退之。辞曰:“臣与闻命矣,言若泄,臣不获死。”

  乃馆于公。

  叔孙昭子如阚,公居于长府。九月戊戌,伐季氏,杀公之于门,遂入之。平子登台而请曰:“君不察臣之罪,使有司讨臣以干戈,臣请待于沂上以察罪。”

  弗许。请囚于费,弗许。请以五乘亡,弗许。子家子曰:“君其许之!政自之出久矣,隐民多取食焉。为之徒者众矣,日入慝作,弗可知也。众怒不可蓄也,蓄而弗治,将蕰。蕰畜,民将生心。生心,同求将合。君必悔之。”弗听。郈孙曰:“必杀之。”公使郈孙逆孟懿子。叔孙氏之司马鬷戾言于其众曰:“若之何?”莫对。又曰:“我,家臣也,不敢知国。凡有季氏与无,于我孰利?”皆曰:“无季氏,是无叔孙氏也。”鬷戾曰:“然则救诸!”帅徒以往,陷西北隅以入。公徒释甲,执冰而踞。遂逐之。孟氏使登西北隅,以望季氏。见叔孙氏之旌,以告。孟氏执郈昭伯,杀之于南门之西,遂伐公徒。子家子曰:“诸臣伪劫君者,而负罪以出,君止。意如之事君也,不敢不改。”公曰:“余不忍也。”

  与臧孙如墓谋,遂行。

  己亥,公孙于齐,次于阳州。齐侯将唁公于平阴,公先至于野井。齐侯曰:“寡人之罪也。”使有司待于平阴,为近故也。书曰:“公孙于齐,次于阳州,齐侯唁公于野井。”礼也。将求于人,则先下之,礼之善物也。齐侯曰:“自莒疆以西,请致千社,以待君命。寡人将帅敝赋以从执事,唯命是听,君之忧,寡人之忧也。”公喜。子家子曰:“天禄不再,天若胙君,不过周公,以鲁足矣。

  失鲁,而以千社为臣,谁与之立?且齐君无信,不如早之晋。”弗从。臧昭伯率从者将盟,载书曰:“戮力壹心,好恶同之。信罪之有无,缱绻从公,无通外内。”

  以公命示子家子。子家子曰:“如此,吾不可以盟,羁也不佞,不能与二三子同心,而以为皆有罪。或欲通外内,且欲去君。二三子好亡而恶定,焉可同也?陷君于难,罪孰大焉?通外内而去君,君将速入,弗通何为?而何守焉?”乃不与盟。

  昭子自阚归,见平子。平子稽颡,曰:“子若我何?”昭子曰:“人谁不死?子以逐君成名,子孙不忘,不亦伤乎!将若子何?”平子曰:“苟使意如得改事君,所谓生死而肉骨也。”昭子从公于齐,与公言。子家子命适公馆者执之。公与昭子言于幄内,曰将安众而纳公。公徒将杀昭子,伏诸道。左师展告公,公使昭子自铸归。平子有异志。冬十月辛酉,昭子齐于其寝,使祝宗祈死。戊辰,卒。

  左师展将以公乘马而归,公徒执之。

  壬申,尹文公涉于巩,焚东訾,弗克。

  十一月,宋元公将为公故如晋。梦大子栾即位于庙,己与平公服而相之。旦,召六卿。公曰:“寡人不佞,不能事父兄,以为二三子忧,寡人之罪也。若以群子之灵,获保首领以没,唯是楄柎所以藉干者,请无及先君。”仲几对曰:“君若以社稷之故,私降昵宴,群臣弗敢知。若夫宋国之法,死生之度,先君有命矣。群臣以死守之,弗敢失队。臣之失职,常刑不赦。臣不忍其死,君命只辱。”

  宋公遂行。己亥,卒于曲棘。

  十二月庚辰,齐侯围郓。

  初,臧昭伯如晋,臧会窃其宝龟偻句,以卜为信与僣,僣吉。臧氏老将如晋问,会请往。昭伯问家故,尽对。及内子与母弟叔孙,则不对。再三问,不对。

  归,及郊,会逆,问,又如初。至,次于外而察之,皆无之。执而戮之,逸,奔郈。郈鲂假使为贾正焉。计于季氏。臧氏使五人以戈盾伏诸桐汝之闾。会出,逐之,反奔,执诸季氏中门之外。平子怒,曰:“何故以兵入吾门?”拘臧氏老。

  季、臧有恶。及昭伯从公,平子立臧会。会曰:“偻句不余欺也。”

  楚子使薳射城州屈,复茄人焉。城丘皇,迁訾人焉。使熊相衤某郭巢,季然郭卷。子大叔闻之,曰:“楚王将死矣。使民不安其土,民必忧,忧将及王,弗能久矣。”

  

  

  !昭公二十六年

  【经】二十有六年春王正月,葬宋元公。三月,公至自齐,居于郓。夏,公围成。秋,公会齐侯、莒子、邾子、杞伯,盟于鄟陵。公至自会,居于郓。九月庚申,楚子居卒。冬十月,天王入于成周。尹氏、召伯、毛伯以王子朝奔楚。

  

  【传】二十六年春,王正月庚申,齐侯取郓。

  葬宋元公,如先君,礼也。

  三月,公至自齐,处于郓,言鲁地也。

  夏,齐侯将纳公,命无受鲁货。申丰从女贾,以币锦二两,缚一如瑱,适齐师。谓子犹之人高齮:“能货子犹,为高氏后,粟五千庾。”高齮以锦示子犹,子犹欲之。齮曰:“鲁人买之,百两一布,以道之不通,先入币财。”子犹受之,言于齐侯曰:“群臣不尽力于鲁君者,非不能事君也。然据有异焉。宋元公为鲁君如晋,卒于曲棘。叔孙昭子求纳其君,无疾而死。不知天之弃鲁耶,抑鲁君有罪于鬼神,故及此也?君若待于曲棘,使群臣从鲁君以卜焉。若可,师有济也。

  君而继之,兹无敌矣。若其无成,君无辱焉。”齐侯从之,使公子鉏帅师从公。

  成大夫公孙朝谓平子曰:“有都以卫国也,请我受师。”许之。请纳质,弗许,曰:“信女,足矣。”告于齐师曰:“孟氏,鲁之敝室也。用成已甚,弗能忍也,请息肩于齐。”齐师围成。成人伐齐师之饮马于淄者,曰:“将以厌众。”鲁成备而后告曰:“不胜众。”师及齐师战于炊鼻。齐子渊捷从泄声子,射之,中楯瓦。繇朐汰辀,匕入者三寸。声子射其马,斩鞅,殪。改驾,人以为鬷戾也而助之。子车曰:“齐人也。”将击子车,子车射之,殪。其御曰:“又之。”子车曰:“众可惧也,而不可怒也。”子囊带从野泄,叱之。泄曰:“军无私怒,报乃私也,将亢子。”又叱之,亦叱之。冉竖射陈武子,中手,失弓而骂。以告平子,曰:“有君子白皙,鬒须眉,甚口。”平子曰:“必子强也,无乃亢诸?”对曰:“谓之君子,何敢亢之?”林雍羞为颜鸣右,下。苑何忌取其耳,颜鸣去之。苑子之御曰:“视下顾。”苑子刜林雍,断其足。{轻金}而乘于他车以归,颜鸣三入齐师,呼曰:“林雍乘!”四月,单子如晋告急。五月戊午,刘人败王城之师于尸氏。戊辰,王城人、刘人战于施谷,刘师败绩。

  秋,盟于鄟陵,谋纳公也。

  七月己巳,刘子以王出。庚午,次于渠。王城人焚刘。丙子,王宿于褚氏。

  丁丑,王次于萑谷。庚辰,王入于胥靡。辛巳,王次于滑。晋知跞、赵鞅帅师纳王,使汝宽守关塞。

  九月,楚平王卒。令尹子常欲立子西,曰:“大子壬弱,其母非適也,王子建实聘之。子西长而好善。立长则顺,建善则治。王顺国治,可不务乎?”子西怒曰:“是乱国而恶君王也。国有外援,不可渎也。王有適嗣,不可乱也。败亲、速仇、乱嗣,不祥,我受其名。赂吾以天下,吾滋不从也。楚国何为?必杀令尹!”令尹惧,乃立昭王。

  冬十月丙申,王起师于滑。辛丑,在郊,遂次于尸。十一月辛酉,晋师克巩。

  召伯盈逐王子朝,王子朝及召氏之族、毛伯得、尹氏固、南宫嚚奉周之典籍以奔楚。阴忌奔莒以叛。召伯逆王于尸,及刘子、单子盟。遂军圉泽,次于堤上。癸酉,王入于成周。甲戌,盟于襄宫。晋师使成公般戍周而还。十二月癸未,王入于庄宫。

  王子朝使告于诸侯曰:“昔武王克殷,成王靖四方,康王息民,并建母弟,以蕃屏周。亦曰:‘吾无专享文、武之功,且为后人之迷败倾覆,而溺入于难,则振救之。’至于夷王,王愆于厥身,诸侯莫不并走其望,以祈王身。至于厉王,王心戾虐,万民弗忍,居王于彘。诸侯释位,以间王政。宣王有志,而后效官。

  至于幽王,天不吊周,王昏不若,用愆厥位。携王奸命,诸侯替之,而建王嗣,用迁郏鄏。则是兄弟之能用力于王室也。至于惠王,天不靖周,生颓祸心,施于叔带,惠、襄辟难,越去王都。则有晋、郑,咸黜不端,以绥定王家。则是兄弟之能率先王之命也。在定王六年,秦人降妖,曰:‘周其有頿王,亦克能修其职。诸侯服享,二世共职。王室其有间王位,诸侯不图,而受其乱灾。’至于灵王,生而有頿。王甚神圣,无恶于诸侯。灵王、景王,克终其世。今王室乱,单旗、刘狄,剥乱天下,壹行不若。谓:‘先王何常之有?唯余心所命,其谁敢请之?’帅群不吊之人,以行乱于王室。侵欲无厌,规求无度,贯渎鬼神,慢弃刑法,倍奸齐盟,傲很威仪,矫诬先王。晋为不道,是摄是赞,思肆其罔极。兹不谷震荡播越,窜在荆蛮,未有攸厎。若我一二兄弟甥舅,奖顺天法,无助狡猾,以从先王之命,毋速天罚,赦图不谷,则所愿也。敢尽布其腹心,及先王之经,实深图之。昔先王之命曰:‘王后无適,则择立长。年钧以德,德钧以卜。’王不立爱,公卿无私,古之制也。穆后及大子寿早夭即世,单、刘赞私立少,以间先王,亦唯伯仲叔季图之!”闵马父闻子朝之辞,曰:“文辞以行礼也。子朝干景之命,远晋之大,以专其志,无礼甚矣,文辞何为?”齐有彗星,齐侯使禳之。晏子曰:“无益也,只取诬焉。天道不谄,不贰其命,若之何禳之?且天之有彗也,以除秽也。君无秽德,又何禳焉?若德之秽,禳之何损?《诗》曰:‘惟此文王,小心翼翼,昭事上帝,聿怀多福。厥德不回,以受方国。’君无违德,方国将至,何患于彗?《诗》曰:‘我无所监,夏后及商。用乱之故,民卒流亡。’若德回乱,民将流亡,祝史之为,无能补也。”公说,乃止。

  齐侯与晏子坐于路寝,公叹曰:“美哉室!其谁有此乎?”晏子曰:“敢问何谓也?”公曰:“吾以为在德。”对曰:“如君之言,其陈氏乎!陈氏虽无大德,而有施于民。豆区釜钟之数,其取之公也簿,其施之民也厚。公厚敛焉,陈氏厚施焉,民归之矣。《诗》曰:‘虽无德与女,式歌且舞。’陈氏之施,民歌舞之矣。后世若少惰,陈氏而不亡,则国其国也已。”公曰:“善哉!是可若何?”对曰:“唯礼可以已之。在礼,家施不及国,民不迁,农不移,工贾不变,士不滥,官不滔,大夫不收公利。”公曰:“善哉!我不能矣。吾今而后知礼之可以为国也。”对曰:“礼之可以为国也久矣。与天地并。君令臣共,父慈子孝,兄爱弟敬,夫和妻柔,姑慈妇听,礼也。君令而不违,臣共而不贰,父慈而教,子孝而箴;兄爱而友,弟敬而顺;夫和而义,妻柔而正;姑慈而从,妇听而婉:礼之善物也。”公曰:“善哉!寡人今而后闻此礼之上也。”对曰:“先王所禀于天地,以为其民也,是以先王上之。”

  

  

  !昭公二十七年

  【经】二十有七年春,公如齐。公至自齐,居于郓。夏四月,吴弑其君僚。

  楚杀其大夫郤宛。秋,晋士鞅、宋乐祁犁、卫北宫喜、曹人、邾人、滕人会于扈。

  冬十月,曹伯午卒。邾快来奔。公如齐。公至自齐,居于郓。

  

  【传】二十七年春,公如齐。公至自齐,处于郓,言在外也。

  吴子欲因楚丧而伐之,使公子掩余、公子烛庸帅师围潜。使延州来季子聘于上国,遂聘于晋,以观诸侯。楚莠尹然,工尹麇帅师救潜。左司马沈尹戌帅都君子与王马之属以济师,与吴师遇于穷。令尹子常以舟师及沙汭而还。左尹郤宛、工尹寿帅师至于潜,吴师不能退。

  吴公子光曰:“此时也,弗可失也。”告鱄设诸曰:“上国有言曰:‘不索何获?’我,王嗣也,吾欲求之。事若克,季子虽至,不吾废也。”鱄设诸曰:“王可弑也。母老子弱,是无若我何。”光曰:“我,尔身也。”

  夏四月,光伏甲于堀室而享王。王使甲坐于道,及其门。门阶户席,皆王亲也,夹之以铍。羞者献体改服于门外,执羞者坐行而入,执铍者夹承之,及体以相授也。光伪足疾,入于堀室。鱄设诸置剑于鱼中以进,抽剑刺王,铍交于胸,遂弑王。阖庐以其子为卿。

  季子至,曰:“苟先君无废祀,民人无废主,社稷有奉,国家无倾,乃吾君也。吾谁敢怨?哀死事生,以待天命。非我生乱,立者从之,先人之道也。”复命哭墓,复位而待。吴公子掩余奔徐,公子烛庸奔钟吾。楚师闻吴乱而还。

  郤宛直而和,国人说之。鄢将师为右领,与费无极比而恶之。令尹子常贿而信谗,无极谮郤宛焉,谓子常曰:“子恶欲饮子酒。”又谓子恶:“令尹欲饮酒于子氏。”子恶曰:“我,贱人也,不足以辱令尹。令尹将必来辱,为惠已甚。

  吾无以酬之,若何?”无极曰:“令尹好甲兵,子出之,吾择焉。”取五甲五兵,曰:“置诸门,令尹至,必观之,而从以酬之。”及飨日,帷诸门左。无极谓令尹曰:“吾几祸子。子恶将为子不利,甲在门矣,子必无往。且此役也,吴可以得志,子恶取赂焉而还,又误群帅,使退其师,曰:‘乘乱不祥。’吴乘我丧,我乘其乱,不亦可乎?”令尹使视郤氏,则有甲焉。不往,召鄢将师而告之。将师退,遂令攻郤氏,且爇之。子恶闻之,遂自杀也。国人弗爇,令曰:“不爇郤氏,与之同罪。”或取一编菅焉,或取一秉秆焉,国人投之,遂弗爇也。令尹炮之,尽灭郤氏之族党,杀阳令终与其弟完及佗与晋陈及其子弟。晋陈之族呼于国曰:“鄢氏、费氏自以为王,专祸楚国,弱寡王室,蒙王与令尹以自利也。令尹尽信之矣,国将如何?”令尹病之。

  秋,会于扈,令戍周,且谋纳公也。宋、卫皆利纳公,固请之。范献子取货于季孙,谓司城子梁与北宫贞子曰:“季孙未知其罪,而君伐之,请囚,请亡,于是乎不获。君又弗克,而自出也。夫岂无备而能出君乎?季氏之复,天救之也。

  休公徒之怒,而启叔孙氏之心。不然,岂其伐人而说甲执冰以游?叔孙氏惧祸之滥,而自同于季氏,天之道也。鲁君守齐,三年而无成。季氏甚得其民,淮夷与之,有十年之备,有齐、楚之援,有天之赞,有民之助,有坚守之心,有列国之权,而弗敢宣也,事君如在国。故鞅以为难。二子皆图国者也,而欲纳鲁君,鞅之愿也,请从二子以围鲁。无成,死之。”二子惧,皆辞。乃辞小国,而以难复。

  孟懿子、阳虎伐郓。郓人将战,子家子曰:“天命不慆久矣。使君亡者,必此众也。天既祸之,而自福也,不亦难乎?犹有鬼神,此必败也。乌呼!为无望也夫,其死于此乎!”公使子家子如晋,公徒败于且知。

  楚郤宛之难,国言未已,进胙者莫不谤令尹。沈尹戌言于子常曰:“夫左尹与中厩尹莫知其罪,而子杀之,以兴谤讟,至于今不已。戌也惑之。仁者杀人以掩谤,犹弗为也。今吾子杀人以兴谤,而弗图,不亦异乎?夫无极,楚之谗人也,民莫不知。去朝吴,出蔡侯朱,丧太子建,杀连尹奢,屏王之耳目,使不聪明。

  不然,平王之温惠共俭,有过成、庄,无不及焉。所以不获诸侯,迩无极也。今又杀三不辜,以兴大谤,几及子矣。子而不图,将焉用之?夫鄢将师矫子之命,以灭三族,国之良也,而不愆位。吴新有君,疆埸日骇,楚国若有大事,子其危哉!知者除谗以自安也,今子爱谗以自危也,甚矣其惑也!”子常曰:“是瓦之罪,敢不良图。”九月己未,子常杀费无极与鄢将师,尽灭其族,以说于国。谤言乃止。

  冬,公如齐,齐侯请飨之。子家子曰:“朝夕立于其朝,又何飨焉?其饮酒也。”乃饮酒,使宰献,而请安。子仲之子曰重,为齐侯夫人,曰:“请使重见。”

  子家子乃以君出。

  十二月,晋籍秦致诸侯之戍于周,鲁人辞以难。

  

  

  !昭公二十八年

  【经】二十有八年春王三月,葬曹悼公。公如晋,次于乾侯。夏四月丙戌,郑伯宁卒。六月,葬郑定公。秋七月癸巳,滕子宁卒。冬,葬滕悼公。

  

  【传】二十八年春,公如晋,将如乾侯。子家子曰:“有求于人,而即其安,人孰矜之?其造于竟。”弗听。使请逆于晋。晋人曰:“天祸鲁国,君淹恤在外。

  君亦不使一个辱在寡人,而即安于甥舅,其亦使逆君?”使公复于竟而后逆之。

  晋祁胜与邬臧通室,祁盈将执之,访于司马叔游。叔游曰:“《郑书》有之:‘恶直丑正,实蕃有徒。’无道立矣,子惧不免。《诗》曰:‘民之多辟,无自立辟。’姑已,若何?”盈曰:“祁氏私有讨,国何有焉?”遂执之。祁胜赂荀跞,荀跞为之言于晋侯,晋侯执祁盈。祁盈之臣曰:“钧将皆死,慭使吾君闻胜与臧之死以为快。”乃杀之。夏六月,晋杀祁盈及杨食我。食我,祁盈之党也,而助乱,故杀之。遂灭祁氏、羊舌氏。

  初,叔向欲娶于申公巫臣氏,其母欲娶其党。叔向曰:“吾母多而庶鲜,吾惩舅氏矣。”其母曰:“子灵之妻杀三夫,一君,一子,而亡一国、两卿矣。可无惩乎?吾闻之:‘甚美必有甚恶,’是郑穆少妃姚子之子,子貉之妹也。子貉早死,无后,而天钟美于是,将必以是大有败也。昔有仍氏生女,鬒黑而甚美,光可以鉴,名曰玄妻。乐正后夔取之,生伯封,实有豕心,贪婪无餍,忿类无期,谓之封豕。有穷后羿灭之,夔是以不祀。且三代之亡,共子之废,皆是物也。女何以为哉?夫有尤物,足以移人,苟非德义,则必有祸。”叔向惧,不敢取。平公强使取之,生伯石。伯石始生,子容之母走谒诸姑,曰:“长叔姒生男。”姑视之,及堂,闻其声而还,曰:“是豺狼之声也。狼子野心,非是,莫丧羊舌氏矣。”遂弗视。

  秋,晋韩宣子卒,魏献子为政。分祁氏之田以为七县,分羊舌氏之田以为三县。司马弥牟为邬大夫,贾辛为祁大夫,司马乌为平陵大夫,魏戊为梗阳大夫,知徐吾为涂水大夫,韩固为马首大夫,孟丙为盂大夫,乐霄为铜鞮大夫,赵朝为平阳大夫,僚安为杨氏大夫。谓贾辛、司马乌为有力于王室,故举之。谓知徐吾、赵朝、韩固、魏戊,余子之不失职,能守业者也。其四人者,皆受县而后见于魏子,以贤举也。

  魏子谓成鱄:“吾与戊也县,人其以我为党乎?”对曰:“何也?戊之为人也,远不忘君,近不逼同,居利思义,在约思纯,有守心而无淫行。虽与之县,不亦可乎?昔武王克商,光有天下。”其兄弟之国者十有五人,姬姓之国者四十人,皆举亲也。夫举无他,唯善所在,亲疏一也。《诗》曰:‘唯此文王,帝度其心。莫其德音,其德克明。克明克类,克长克君。王此大国,克顺克比。比于文王,其德靡悔。既受帝祉,施于孙子。’心能制义曰度,德正应和曰莫,照临四方曰明,勤施无私曰类,教诲不倦曰长,赏庆刑威曰君,慈和遍服曰顺,择善而从之曰比,经纬天地曰文。九德不愆,作事无悔,故袭天禄,子孙赖之。主之举也,近文德矣,所及其远哉!”贾辛将适其县,见于魏子。魏子曰:“辛来!昔叔向适郑,鬷蔑恶,欲观叔向,从使之收器者而往,立于堂下。一言而善。叔向将饮酒,闻之,曰:‘必鬷明也。’下,执其手以上,曰‘昔贾大夫恶,娶妻而美,三年不言不笑,御以如皋,射雉,获之。其妻始笑而言。贾大夫曰:“才之不可以已,我不能射,女遂不言不笑夫!”今子少不扬,子若无言,吾几失子矣。言不可以已也如是。’遂如故知。今女有力于王室,吾是以举女。行乎!敬之哉!毋堕乃力!”仲尼闻魏子之举也,以为义,曰:“近不失亲,远不失举,可谓义矣。”又闻其命贾辛也,以为忠:“《诗》曰:‘永言配命,自求多福’,忠也。魏子之举也义,其命也忠,其长有后于晋国乎!”冬,梗阳人有狱,魏戊不能断,以狱上。其大宗赂以女乐,魏子将受之。魏戊谓阎没、女宽曰:“主以不贿闻于诸侯,若受梗阳人,贿莫甚焉。吾子必谏。”

  皆许诺。退朝,待于庭。馈入,召之。比置,三叹。既食,使坐。魏子曰:“吾闻诸伯叔,谚曰:‘唯食忘忧。’吾子置食之间三叹,何也?”同辞而对曰:“或赐二小人酒,不夕食。馈之始至,恐其不足,是以叹。中置,自咎曰:‘岂将军食之,而有不足?’是以再叹。及馈之毕,愿以小人之腹为君子之心,属厌而已。”献子辞梗阳人。

  

  

  !昭公二十九年

  【经】二十有九年春,公至自乾侯,居于郓,齐侯使高张来唁公。公如晋,次于乾侯。夏四月庚子,叔诣卒。秋七月。冬十月,郓溃。

  

  【传】二十九年春,公至自乾侯,处于郓。齐侯使高张来唁公,称主君。子家子曰:“齐卑君矣,君只辱焉。”公如乾侯。

  三月己卯,京师杀召伯盈、尹氏固及原伯鲁之子。尹固之复也,有妇人遇之周郊,尤之,曰:“处则劝人为祸,行则数日而反,是夫也,其过三岁乎?”夏五月庚寅,王子赵车入于鄻以叛,阴不佞败之。

  平子每岁贾马,具从者之衣屦,而归之于乾侯。公执归马者,卖之,乃不归马。卫侯来献其乘马曰启服,堑而死,公将为之椟。子家子曰:“从者病矣,请以食之。”乃以帏裹之。

  公赐公衍羔裘,使献龙辅于齐侯,遂入羔裘。齐侯喜,与之阳谷。公衍、公为之生也,其母偕出。公衍先生,公为之母曰:“相与偕出,请相与偕告。”三日,公为生,其母先以告,公为为兄。公私喜于阳谷而思于鲁,曰:“务人为此祸也。且后生而为兄,其诬也久矣。”乃黜之,而以公衍为大子。

  秋,龙见于绛郊。魏献子问于蔡墨曰:“吾闻之,虫莫知于龙,以其不生得也。谓之知,信乎?”对曰:“人实不知,非龙实知。古者畜龙,故国有豢龙氏,有御龙氏。”献子曰:“是二氏者,吾亦闻之,而知其故,是何谓也?”对曰:“昔有飂叔安,有裔子曰董父,实甚好龙,能求其耆欲以饮食之,龙多归之。

  乃扰畜龙,以服事帝舜。帝赐之姓曰董,氏曰豢龙。封诸鬷川,鬷夷氏其后也。

  故帝舜氏世有畜龙。及有夏孔甲,扰于有帝,帝赐之乘龙,河、汉各二,各有雌雄,孔甲不能食,而未获豢龙氏。有陶唐氏既衰,其后有刘累,学扰龙于豢龙氏,以事孔甲,能饮食之。夏后嘉之,赐氏曰御龙,以更豕韦之后。龙一雌死,潜醢以食夏后。夏后飨之,既而使求之。惧而迁于鲁县,范氏其后也。”献子曰:“今何故无之?”对曰:“夫物,物有其官,官修其方,朝夕思之。一日失职,则死及之。失官不食。官宿其业,其物乃至。若泯弃之,物乃坻伏,郁湮不育。

  故有五行之官,是谓五官。实列受氏姓,封为上公,祀为贵神。社稷五祀,是尊是奉。木正曰句芒,火正曰祝融,金正曰蓐收,水正曰玄冥,土正曰后土。龙,水物也。水官弃矣,故龙不生得。不然,《周易》有之,在《乾》ⅰⅰ之《姤》ⅰⅳ,曰:‘潜龙勿用。’其《同人》ⅰⅵ曰:‘见龙在田。’其《大有》ⅵⅰ曰:‘飞龙在天。’其《夬》ⅷⅰ曰:‘亢龙有悔。’其《坤》ⅱⅱ曰:‘见群龙无首,吉。’《坤》之《剥》ⅶⅱ曰:‘龙战于野。’若不朝夕见,谁能物之?”献子曰:“社稷五祀,谁氏之五官也?”对曰:“少皞氏有四叔,曰重、曰该、曰修、曰熙,实能金、木及水。使重为句芒,该为蓐收,修及熙为玄冥,世不失职,遂济穷桑,此其三祀也。颛顼氏有子曰犁,为祝融;共工氏有子曰句龙,为后土,此其二祀也。后土为社;稷,田正也。有烈山氏之子曰柱为稷,自夏以上祀之。周弃亦为稷,自商以来祀之。”

  冬,晋赵鞅、荀寅帅师城汝滨,遂赋晋国一鼓铁,以铸刑鼎,著范宣子所为刑书焉。仲尼曰:“晋其亡乎!失其度矣。夫晋国将守唐叔之所受法度,以经纬其民,卿大夫以序守之。民是以能尊其贵,贵是以能守其业。贵贱不愆,所谓度也。文公是以作执秩之官,为被庐之法,以为盟主。今弃是度也,而为刑鼎,民在鼎矣,何以尊贵?贵何业之守?贵贱无序,何以为国?且夫宣子之刑,夷之蒐也,晋国之乱制也,若之何以为法?蔡史墨曰:“范氏、中行氏其亡乎!中行寅为下卿,而干上令,擅作刑器,以为国法,是法奸也。又加范氏焉,易之,亡也。

  其及赵氏,赵孟与焉。然不得已,若德,可以免。”

  

  

  !昭公三十年

  【经】三十年春王正月,公在乾侯。夏六月庚辰,晋侯去疾卒。秋八月,葬晋顷公。冬十有二月,吴灭徐,徐子章羽奔楚。

  

  【传】三十年春,王正月,公在乾侯。不先书郓与乾侯,非公,且征过也。

  夏六月,晋顷公卒。秋八月,葬。郑游吉吊,且送葬,魏献子使士景伯诘之,曰:“悼公之丧,子西吊,子蟜送葬。今吾子无贰,何故?”对曰:“诸侯所以归晋君,礼也。礼也者,小事大,大字小之谓。事大在共其时命,字小在恤其所无。以敝邑居大国之间,共其职贡,与其备御不虞之患,岂忘共命?先王之制:诸侯之丧,士吊,大夫送葬;唯嘉好、聘享、三军之事,于是乎使卿。晋之丧事,敝邑之间,先君有所助执绋矣。若其不间,虽士大夫有所不获数矣。大国之惠,亦庆其加,而不讨其乏,明厎其情,取备而已,以为礼也。灵王之丧,我先君简公在楚,我先大夫印段实往,敝邑之少卿也。王吏不讨,恤所无也。今大夫曰:‘女盍从旧?’旧有丰有省,不知所从。从其丰,则寡君幼弱,是以不共。从其省,则吉在此矣。唯大夫图之。”晋人不能诘。

  吴子使徐人执掩余,使钟吾人执烛庸,二公子奔楚,楚子大封,而定其徙。

  使监马尹大心逆吴公子,使居养。莠尹然、左司马沈尹戌城之,取于城父与胡田以与之。将以害吴也。子西谏曰:“吴光新得国,而亲其民,视民如子,辛苦同之,将用之也。若好吴边疆,使柔服焉,犹惧其至。吾又强其仇以重怒之,无乃不可乎!吴,周之胄裔也,而弃在海滨,不与姬通。今而始大,比于诸华。光又甚文,将自同于先王。不知天将以为虐乎,使翦丧吴国而封大异姓乎?其抑亦将卒以祚吴乎?其终不远矣。我盍姑亿吾鬼神,而宁吾族姓,以待其归。将焉用自播扬焉?”王弗听。吴子怒。冬十二月,吴子执钟吴子,遂伐徐,防山以水之。

  己卯,灭徐。徐子章禹断其发,携其夫人,以逆吴子。吴子唁而送之,使其迩臣从之,遂奔楚。楚沈尹戌帅师救徐,弗及,遂城夷,使徐子处之。

  吴子问于伍员曰:“初而言伐楚,余知其可也,而恐其使余往也,又恶人之有余之功也。今余将自有之矣,伐楚何如?”对曰:“楚执政众而乖,莫适任患。

  若为三师以肄焉,一师至,彼必皆出。彼出则归,彼归则出,楚必道敝。亟肄以罢之,多方以误之。既罢而后以三军继之,必大克之。”阖庐从之,楚于是乎始病。

  

  

  !昭公三十一年

  【经】三十有一年春王正月,公在乾侯。季孙意如会晋荀跞于适历。夏四月丁巳,薛伯谷卒。晋侯使荀跞唁公于乾侯。秋,葬薛献公。冬,黑肱以滥来奔。

  十有二月辛亥朔,日有食之。

  

  【传】三十一年春,王正月,公在乾侯,言不能外内也。

  晋侯将以师纳公。范献子曰:“若召季孙而不来,则信不臣矣。然后伐之,若何?”晋人召季孙,献子使私焉,曰:“子必来,我受其无咎。”季孙意如会晋荀跞于适历。荀跞曰:“寡君使跞谓吾子:‘何故出君?有君不事,周有常刑,子其图之!’”季孙练冠麻衣跣行,伏而对曰:“事君,臣之所不得也,敢逃刑命?君若以臣为有罪,请囚于费,以待君之察也,亦唯君。若以先臣之故,不绝季氏,而赐之死。若弗杀弗亡,君之惠也,死且不朽。若得从君而归,则固臣之愿也。敢有异心?”夏四月,季孙从知伯如乾侯。子家子曰:“君与之归。一惭之不忍,而终身惭乎?”公曰:“诺。”众曰:“在一言矣,君必逐之。”荀跞以晋侯之命唁公,且曰:“寡君使跞以君命讨于意如,意如不敢逃死,君其入也!”公曰:“君惠顾先君之好,施及亡人,将使归粪除宗祧以事君,则不能夫人。己所能见夫人者,有如河!”荀跞掩耳而走,曰:“寡君其罪之恐,敢与知鲁国之难?臣请复于寡君。”退而谓季孙:“君怒未怠,子姑归祭。”子家子曰:“君以一乘入于鲁师,季孙必与君归。”公欲从之,众从者胁公,不得归。

  薛伯谷卒,同盟,故书。

  秋,吴人侵楚,伐夷,侵潜、六。楚沈尹戌帅师救潜,吴师还。楚师迁潜于南冈而还。吴师围弦。左司马戌、右司马稽帅师救弦,及豫章。吴师还。始用子胥之谋也。

  冬,邾黑肱以滥来奔,贱而书名,重地故也。君子曰:“名之不可不慎也如是。夫有所名,而不如其已。以地叛,虽贱,必书地,以名其人。终为不义,弗可灭已。是故君子动则思礼,行则思义,不为利回,不为义疚。或求名而不得,或欲盖而名章,惩不义也。齐豹为卫司寇,守嗣大夫,作而不义,其书为‘盗’。

  邾庶其、莒牟夷、邾黑肱以土地出,求食而已,不求其名,贱而必书。此二物者,所以惩肆而去贪也。若艰难其身,以险危大人,而有名章彻,攻难之士将奔走之。

  若窃邑叛君,以徼大利而无名,贪冒之民将置力焉。是以《春秋》书齐豹曰‘盗’,三叛人名,以惩不义,数恶无礼,其善志也。故曰:《春秋》之称微而显,婉而辨。上之人能使昭明,善人劝焉,淫人惧焉,是以君子贵之。”

  十二月辛亥朔,日有食之。是夜也,赵简子梦童子羸而转以歌。旦占诸史墨,曰:“吾梦如是,今而日食,何也?”对曰:“六年及此月也,吴其入郢乎!终亦弗克。入郢,必以庚辰,日月在辰尾。庚午之日,日始有谪。火胜金,故弗克。”

  

  

  !昭公三十二年

  【经】三十有二年春王正月,公在乾侯。取阚。夏,吴伐越。秋七月。冬,仲孙何忌会晋韩不信、齐高张、宋仲几、卫世叔申、郑国参、曹人、莒人、薛人、杞人、小邾人城成周。十有二月己未,公薨于乾侯。

  

  【传】三十二年春,王正月,公在乾侯。言不能外内,又不能用其人也。

  夏,吴伐越,始用师于越也。史墨曰:“不及四十年,越其有吴乎!越得岁而吴伐之,必受其凶。”

  秋八月,王使富辛与石张如晋,请城成周。天子曰:“天降祸于周,俾我兄弟并有乱心,以为伯父忧。我一二亲昵甥舅,不遑启处,于今十年,勤戍五年。

  余一人无日忘之,闵闵焉如农夫之望岁,惧以待时。伯父若肆大惠,复二文之业,驰周室之忧,徼文、武之福,以固盟主,宣昭令名,则余一人有大愿矣。昔成王合诸侯,城成周,以为东都,崇文德焉。今我欲徼福假灵于成王,修成周之城,俾戍人无勤,诸侯用宁,蝥贼远屏,晋之力也。其委诸伯父,使伯父实重图之。

  俾我一人无征怨于百姓,而伯父有荣施,先王庸之。”范献子谓魏献子曰:“与其戍周,不如城之。天子实云,虽有后事,晋勿与知可也。从王命以纾诸侯,晋国无忧。是之不务,而又焉从事?”魏献子曰:“善!”使伯音对曰:“天子有命,敢不奉承,以奔告于诸侯。迟速衰序,于是焉在。”

  冬十一月,晋魏舒、韩不信如京师,合诸侯之大夫于狄泉,寻盟,且令城成周。魏子南面。卫彪徯曰:“魏子必有大咎。干位以令大事,非其任也。《诗》曰:‘敬天之怒,不敢戏豫。敬天之渝,不敢驰驱。’况敢干位以作大事乎?”己丑,士弥牟营成周,计丈数,揣高卑,度厚薄,仞沟恤,物土方,议远迩,量事期,计徒庸,虑材用,书餱粮,以令役于诸侯,属役赋丈,书以授帅,而效诸刘子。韩简子临之,以为成命。

  十二月,公疾,遍赐大夫,大夫不受。赐子家子双琥,一环,一璧,轻服,受之。大夫皆受其赐。己未,公薨。子家子反赐于府人,曰:“吾不敢逆君命也。”

  大夫皆反其赐。书曰:“公薨于乾侯。”言失其所也。

  赵简子问于史墨曰:“季氏出其君,而民服焉,诸侯与之,君死于外,而莫之或罪也。”对曰:“物生有两,有三,有五,有陪贰。故天有三辰,地有五行,体有左右,各有妃耦。王有公,诸侯有卿,皆有贰也。天生季氏,以贰鲁侯,为日久矣。民之服焉,不亦宜乎?鲁君世从其失,季氏世修其勤,民忘君矣。虽死于外,其谁矜之?社稷无常奉,君臣无常位,自古以然。故《诗》曰:‘高岸为谷,深谷为陵。’三后之姓,于今为庶,王所知也。在《易》卦,雷乘《乾》曰《大壮》ⅲⅰ,天之道也。昔成季友,桓之季也,文姜之爱子也,始震而卜。卜人谒之,曰:‘生有嘉闻,其名曰友,为公室辅。’及生,如卜人之言,有文在其手曰‘友’,遂以名之。既而有大功于鲁,受费以为上卿。至于文子、武子,世增其业,不废旧绩。鲁文公薨,而东门遂杀適立庶,鲁君于是乎失国,政在季氏,于此君也,四公矣。民不知君,何以得国?是以为君,慎器与名,不可以假人。”
中华人民共和国学科分类与代码国家标准(GB/T13745-2009)


  《中华人民共和国国家标准GB/T13745-2009》,由中华人民共和国国家质量监督检验检疫总局、中国国家标准化管理委员会于2009年5月6日发布,2009年11月1日实施。以下为摘录该标准的《学科分类代码表》内容:

!一级学科目录

!!自然科学类
 110 数学

 130 力学

 140 物理学

 150 化学

 160 天文学

 170 地球科学

 180 生物学

!!农业科学类

 210 农学

 220 林学

 230 畜牧、兽医科学

 240 水产学

!!医药科学类
 310 基础医学

 320 临床医学

 330 预防医学与卫生学

 340 军事医学与特种医学

 350 药学

 360 中医学与中药学

!!工程与技术学类
 410 工程与技术科学基础学科

 420 测绘科学技术

 430 材料科学

 440 矿山工程技术

 450 冶金工程技术

 460 机械工程

 470 动力与电气工程

 480 能源科学技术

 490 核科学技术

 510 电子、通信与自动控制技术

 520 计算机科学技术

 530 化学工程

 540 纺织科学技术

 550 食品科学技术

 560 土木建筑工程

 570 水利工程

 580 交通运输工程

 590 航空、航天科学技术

 610 环境科学技术

 620 安全科学技术

 630 管理学

!!人文与社会科学类
 710 马克思主义

 720 哲学

 730 宗教学

 740 语言学

 750 文学
 760 艺术学

 770 历史学

 780 考古学

 790 经济学

 810 政治学

 820 法学

 830 军事学

 840 社会学

 850 民族学

 860 新闻学与传播学

 870 图书馆、情报与文献学

 880 教育学

 890 体育科学

 910 统计学


!具体学科细分:

110 数学
110.11 数学史

110.14 数理逻辑与数学基础   110.1410 演绎逻辑学(亦称符号逻辑学)   110.1420 证明论(亦称元数学)   110.1430 递归论   110.1440 模型论
  110.1450 公理集合论   110.1460 数学基础   110.1499 数理逻辑与数学基础其他学科

110.17 数论   110.1710 初等数论   110.1720 解析数论   110.1730 代数数论   110.1740 超越数论   110.1750 丢番图逼近
  110.1760 数的几何   110.1770 概率数论   110.1780 计算数论   110.1799 数论其他学科

110.21 代数学   110.2110 线性代数   110.2115 群论   110.2120 域论   110.2125 李群   110.2130 李代数   110.2135 Kac-Moody代数
  110.2140 环论   110.2145 模论   110.2150 格论   110.2155 泛代数理论   110.2160 范畴论   110.2165 同调代数   110.2170 代数K理论
  110.2175 微分代数   110.2180 代数编码理论   110.2199 代数学其他学科

110.24 代数几何学

110.27 几何学   110.2710 几何学基础   110.2715 欧氏几何学   110.2720 非欧几何学(包括黎曼几何学等)   110.2725 球面几何学
  110.2730 向量和张量分析   110.2735 仿射几何学   110.2740 射影几何学   110.2745 微分几何学   110.2750 分数维几何   110.2755 计算几何学
  110.2799 几何学其他学科

110.31 拓扑学   110.3110 点集拓扑学   110.3115 代数拓扑学   110.3120 同伦论   110.3125 低维拓扑学   110.3130 同调论   110.3135 维数论
  110.3140 格上拓扑学   110.3145 纤维丛论   110.3150 几何拓扑学   110.3155 奇点理论   110.3160 微分拓扑学   110.3199 拓扑学其他学科

110.34 数学分析   110.3410 微分学   110.3420 积分学   110.3430 级数论   110.3499 数学分析其他学科

110.37 非标准分析

110.41 函数论   110.4110 实变函数论   110.4120 单复变函数论   110.4130 多复变函数论   110.4140 函数逼近论   110.4150 调和分析
  110.4160 复流形   110.4170 特殊函数论   110.4199 函数论其他学科

110.44 常微分方程   110.4410 定性理论   110.4420 稳定性理论   110.4430 解析理论   110.4499 常微分方程其他学科

110.47 偏微分方程   110.4710 椭圆型偏微分方程   110.4720 双曲型偏微分方程   110.4730 抛物型偏微分方程   110.4740 非线性偏微分方程
  110.4799 偏微分方程其他学科

110.51 动力系统   110.5110 微分动力系统   110.5120 拓扑动力系统   110.5130 复动力系统   110.5199 动力系统其他学科

110.54 积分方程

110.57 泛函分析   110.5710 线性算子理论   110.5715 变分法   110.5720 拓扑线性空间   110.5725 希尔伯特空间   110.5730 函数空间
  110.5735 巴拿赫空间   110.5740 算子代数   110.5745 测度与积分   110.5750 广义函数论   110.5755 非线性泛函分析   110.5799 泛函分析其他学科

110.61 计算数学   110.6110 插值法与逼近论   110.6120 常微分方程数值解   110.6130 偏微分方程数值解   110.6140 积分方程数值解
  110.6150 数值代数   110.6160 连续问题离散化方法   110.6170 随机数值实验   110.6180 误差分析   110.6199 计算数学其他学科

110.64 概率论   110.6410 几何概率   110.6420 概率分布   110.6430 极限理论   110.6440 随机过程   110.6450 马尔可夫过程
  110.6460 随机分析   110.6470 鞅论   110.6480 应用概率论   110.6499 概率论其他学科

110.67 数理统计学   110.6710 抽样理论   110.6715 假设检验   110.6720 非参数统计   110.6725 方差分析   110.6730 相关回归分析
  110.6735 统计推断   110.6740 贝叶斯统计   110.6745 试验设计   110.6750 多元分析   110.6755 统计判决理论   110.6760 时间序列分析
  110.6799 数理统计学其他学科

110.71 应用统计数学   110.7110 统计质量控制   110.7120 可靠性数学   110.7130 保险数学   110.7140 统计模拟   110.7199 应用统计数学其他学科

11

120.20 系统学   120.2010 混沌   120.2020 一般系统论   120.2030 耗散结构理论   120.2040 协同学   120.2050 突变论   120.2060 超循环论
  120.2099 系统学其他学科

120.30 控制理论   120.3010 大系统理论   120.3020 系统辩识   120.3030 状态估计   120.3040 鲁棒控制   120.3099 控制理论其他学科

120.40 系统评估与可行性分析

120.50 系统工程方法论   120.5010 系统建模   120.5099 系统工程方法论其他学科

120.60 系统工程

120.99 信息科学与系统科学其他学科

130 力学
130.10 基础力学   130.1010 理论力学   130.1020 理性力学   130.1030 非线性力学   130.1040 连续介质力学   130.1050 摩擦学
  130.1060 柔性多体力学   130.1070 陀螺力学   130.1080 飞行力学   130.1099 基础力学其他学科

130.15 固体力学   130.1510 弹性力学   130.1515 塑性力学(包括弹塑性力学)   130.1520 粘弹性、粘塑性力学   130.1525 蠕变
  130.1530 界面力学与表面力学   130.1535 疲劳   130.1540 损伤力学   130.1545 断裂力学   130.1550 散体力学   130.1555 细观力学
  130.1560 电磁固体力学   130.1565 结构力学   130.1570 计算固体力学   130.1575 实验固体力学   130.1599 固体力学其他学科

130.20 振动与波   130.2010 线性振动力学   130.2020 非线性振动力学   130.2030 弹性体振动力学   130.2040 随机振动力学
  130.2050 振动控制理论   130.2060 固体中的波   130.2070 流体-固体耦合振动   130.2099 振动与波其他学科

130.25 流体力学   130.2511 理论流体力学   130.2514 水动力学   130.2517 气体动力学   130.2521 空气动力学   130.2524 悬浮体力学
  130.2527 湍流理论   130.2531 粘性流体力学   130.2534 多相流体力学   130.2537 渗流力学   130.2541 物理-化学流体力学
  130.2544 等离子体动力学   130.2547 电磁流体力学   130.2551 非牛顿流体力学   130.2554 流体机械流体力学   130.2557 旋转与分层流体力学
  130.2561 辐射流体力学   130.2564 计算流体力学   130.2567 实验流体力学   130.2571 环境流体力学   130.2599 流体力学其他学科

130.30 流变学

130.35 爆炸力学   130.3510 爆轰与爆燃理论   130.3520 爆炸波、冲击波、应力波   130.3530 高速碰撞动力学   130.3599 爆炸力学其他学科

130.40 物理力学   130.4010 高压固体物理力学   130.4020 稠密流体物理力学   130.4030 高温气体物理力学   130.4040 多相介质物理力学
  130.4050 临界现象与相变   130.4060 原子与分子动力学   130.4099 物理力学其他学科

130.45 统计力学

130.50 应用力学

130.99 力学其他学科

140 物理学
140.10 物理学史

140.15 理论物理学

  140.1510 数学物理   140.1520 电磁场理论   140.1530 经典场论   140.1540 相对论与引力场

  140.1550 量子力学   140.1560 统计物理学   140.1599 理论物理学其他学科

140.20 声学

  140.2010 物理声学   140.2020 非线性声学   140.2030 量子声学   140.2040 超声学

  140.2050 水声学   140.2060 应用声学   140.2099 声学其他学科

140.25 热学

  140.2510 热力学   140.2520 热物性学   140.2530 传热学   140.2599 热学其他学科

140.30 光学

  140.3010 几何光学   140.3015 物理光学   140.3020 非线性光学   140.3025 光谱学

  140.3030 量子光学   140.3035 信息光学   140.3040 导波光学   140.3045 发光学

  140.3050 红外物理   140.3055 激光物理   140.3060 应用光学   140.3099 光学其他学科

140.35 电磁学

  140.3510 电学   140.3520 静电学   140.3530 静磁学   140.3540 电动力学

  140.3599 电磁学其他学科

140.40 无线电物理

  140.4010 电磁波物理   140.4020 量子无线电物理   140.4030 微波物理学   140.4040 超高频无线电物理

  140.4050 统计无线电物理   140.4099 无线电物理其他学科

140.45 电子物理学

  140.4510 量子电子学   140.4520 电子离子与真空物理   140.4530 带电粒子光学   140.4599 电子物理学其他学科

140.50 凝聚态物理学

  140.5010 凝聚态理论   140.5015 金属物理学   140.5020 半导体物理学   140.5025 电介质物理学

  140.5030 晶体学(包括晶体生长、晶体化学等)   140.5035 非晶态物理学   140.5040 液晶物理学   140.5045 薄膜物理学

  140.5050 低维物理   140.5055 表面与界面物理学   140.5060 固体发光   140.5065 磁学

  140.5070 超导物理学   140.5075 低温物理学   140.5080 高压物理学   140.5099 凝聚态物理学其他学科

140.55 等离子体物理学

  140.5510 热核聚变等离子体物理学   140.5520 低温等离子体物理学   140.5530 等离子体光谱学   140.5540 凝聚态等离子体物理学

  140.5550 非中性等离子体物理学   140.5599 等离子体物理学其他学科

140.60 原子分子物理学

  140.6010 原子与分子理论   140.6020 原子光谱学   140.6030 分子光谱学   140.6040 波谱学

  140.6050 原子与分子碰撞过程   140.6099 原子分子物理学其他学科

140.65 原子核物理学

  140.6510 核结构   140.6515 核能谱学   140.6520 低能核反应   140.6525 中子物理学

  140.6530 裂变物理学   140.6535 聚变物理学   140.6540 轻粒子核物理学   140.6545 重离子核物理学

  140.6550 中高能核物理学   140.6599 原子核物理学其他学科

140.70 高能物理学

  140.7010 基本粒子物理学   140.7020 宇宙线物理学   140.7030 粒子加速器物理学   140.7040 高能物理实验

  140.7099 高能物理学其他学科

140.75 计算物理学

140.80 应用物理学

140.99 物理学其他学科

150 化学
150.10 化学史

150.15 无机化学

  150.1510 元素化学   150.1520 配位化学   150.1530 同位素化学   150.1540 无机固体化学

  150.1550 无机合成化学   150.1560 无机分离化学   150.1570 物理无机化学   150.1580 生物无机化学

  150.1599 无机化学其他学科

150.20 有机化学

  150.2010 元素有机化学(包括金属有机化学等)   150.2020 天然产物有机化学   150.2030 有机固体化学   150.2040 有机合成化学

  150.2050 有机光化学   150.2060 物理有机化学(包括理论有机化学、立体化学等)   150.2070 生物有机化学   150.2099 有机化学其他学科

150.25 分析化学

  150.2510 化学分析(包括定性分析、定量分析等)   150.2515 电化学分析   150.2520 光谱分析   150.2525 波谱分析

  150.2530 质谱分析   150.2535 热谱分析   150.2540 色谱分析   150.2545 光度分析

  150.2550 放射分析   150.2555 状态分析与物相分析   150.2560 分析化学计量学   150.2599 分析化学其他学科

150.30 物理化学

  150.3010 化学热力学   150.3015 化学动力学(包括分子反应动力学等)   150.3020 结构化学(包括表面化学、结构分析等)

  150.3025 量子化学   150.3030 胶体化学与界面化学   150.3035 催化化学   150.3040 热化学

  150.3045 光化学(包括超分子光化学、光电化学、激光化学、感光化学等)   150.3050 电化学   150.3055 磁化学

  150.3060 高能化学(包括辐射化学,等离体化学)   150.3065 计算化学   150.3099 物理化学其他学科

150.35 化学物理学

150.40 高分子物理

150.45 高分子化学

  150.4510 无机高分子化学   150.4520 天然高分子化学   150.4530 功能高分子(包括液晶高分子化学)

  150.4540 高分子合成化学   150.4550 高分子物理化学   150.4560 高分子光化学   150.4599 高分子化学其他学科

150.50 核化学

  150.5010 放射化学   150.5020 核反应化学   150.5030 裂变化学   150.5040 聚变化学

  150.5050 重离子核化学   150.5060 核转变化学   150.5070 环境放射化学   150.5099 核化学其他学科

150.55 应用化学

150.99 化学其他学科

160 天文学
160.10 天文学史

160.15 天体力学

  160.1510 摄动理论   160.1520 天体力学定性理论   160.1530 天体形状与自转理论   160.1540 天体力学数值方法

  160.1550 天文动力学(包括人造卫星、宇宙飞船动力学等)   160.1560 历书天文学   160.1599 天体力学其他学科

160.20 天体物理学

  160.2010 理论天体物理学   160.2020 相对论天体物理学   160.2030 等离子体天体物理学

  160.2040 高能天体物理学(包括天体核物理学)   160.2050 实测天体物理学   160.2099 天体物理学其他学科

160.25 天体化学

160.30 天体测量学

  160.3010 天文地球动力学   160.3020 基本天体测量学   160.3030 照相天体测量学   160.3040 射电天体测量学

  160.3050 空间天体测量学   160.3060 方位天文学   160.3070 实用天文学   160.3099 天体测量学其他学科

160.35 射电天文学

  160.3510 射电天体物理学   160.3520 射电天文方法   160.3599 射电天文学其他学科

160.40 空间天文学

  160.4010 红外天文学   160.4020 紫外天文学   160.4030 X射线天文学   160.4040 r射线天文学

  160.4050 中微子天文学   160.4099 空间天文学其他学科

160.45 天体演化学(各层次天体形成与演化入各学科)

160.50 星系与宇宙学

  160.5010 星系动力学   160.5020 星系天文学   160.5030 运动宇宙学   160.5040 星系际物质

  160.5050 大爆炸宇宙论   160.5060 星系形成与演化   160.5070 宇宙大尺度结构起源与演化   160.5099 星系与宇宙学其他学科

160.55 恒星与银河系

  160.5510 恒星物理学   160.5520 恒星天文学   160.5530 恒星形成与演化   160.5540 星际物质物理学

  160.5550 银河系结构与运动   160.5599 恒星与银河系其他学科

160.60 太阳与太阳系

  160.6010 太阳物理学   160.6020 太阳系物理学   160.6030 太阳系形成与演化   160.6040 行星物理学

  160.6050 行星际物理学   160.6060 陨星学   160.6099 太阳与太阳系其他学科

160.65 天体生物学

160.99 天文学其他学科

170 地球科学
170.10 地球科学史

170.15 大气科学

  170.1510 大气物理学(包括大气光学、大气声学、大气电学、云雾物理学、边界层物理学、中层物理学等)

  170.1515 大气化学   170.1520 大气探测(包括大气遥感)   170.1525 动力气象学(包括数值天气预报与数值模拟等)   170.1530 天气学

  170.1535 气候学   170.1540 云与降水物理学   170.1545 应用气象学   170.1599 大气科学其他学科

170.20 固体地球物理学

  170.2010 地球动力学   170.2015 地球重力学   170.2020 地球流体力学   170.2025 地壳与地形变

  170.2030 地球内部物理学   170.2035 地声学   170.2040 地热学   170.2045 地电学

  170.2050 地磁学   170.2055 放射性地球物理学   170.2060 地震学   170.2065 勘探地球物理学

  170.2070 计算地球物理学   170.2075 实验地球物理学   170.2099 固体地球物理学其他学科

170.25 空间物理学

  170.2510 电离层物理学   170.2520 高层大气物理学   170.2530 磁层物理学   170.2540 空间物理探测

  170.2550 空间环境学   170.2599 空间物理学其他学科

170.30 地球化学

  170.3010 元素地球化学   170.3015 有机地球化学   170.3020 放射性地球化学   170.3025 同位素地球化学

  170.3030 生物地球化学   170.3035 地球内部化学   170.3040 同位素地质年代学   170.3045 成矿地球化学

  170.3050 勘探地球化学   170.3055 实验地球化学   170.3099 地球化学其他学科

170.35 大地测量学

  170.3510 地球形状学   170.3520 几何大地测量学   170.3530 物理大地测量学   170.3540 动力大地测量学

  170.3550 空间大地测量学   170.3560 行星大地测量学   170.3599 大地测量学其他学科

170.40 地图学

170.45 地理学

  170.4510 自然地理学(包括化学地理学、生态地理学、地貌学、冰川学、冻土学、沙漠学、岩溶学等)

  170.4520 人文地理学(包括区域地理、旅游地理, 其他入有关学科)   170.4599 地理学其他学科

170.50 地质学

  170.5011 数学地质学   170.5014 地质力学   170.5017 动力地质学   170.5021 矿物学(包括放射性矿物学)

  170.5024 矿床学与矿相学(包括放射性矿床学,不包括石油、天然气和煤。)

  170.5027 岩石学   170.5031 岩土力学   170.5034 沉积学   170.5037 古地理学

  170.5041 古生物学   170.5044 地层学与地史学   170.5047 前寒武纪地质学   170.5051 第四纪地质学

  170.5054 构造地质学(包括显微构造学等)   170.5057 大地构造学   170.5061 勘查地质学

  170.5064 水文地质学(包括放射性水文地质学)   170.5067 遥感地质学   170.5071 区域地质学   170.5074 火山学

  170.5077 石油与天然气地质学   170.5081 煤田地质学   170.5084 实验地质学   170.5099 地质学其他学科

170.55 水文学

  170.5510 水文物理学   170.5515 水文化学   170.5520 水文地理学   170.5525 水文气象学

  170.5530 水文测量   170.5535 水文图学   170.5540 湖沼学   170.5545 河流学与河口水文学

  170.5599 水文学其他学科

170.60 海洋科学

  170.6010 海洋物理学   170.6015 海洋化学   170.6020 海洋地球物理学   170.6025 海洋气象学

  170.6030 海洋地质学   170.6035 物理海洋学   170.6040 海洋生物学   170.6045 河口、海岸学

  170.6050 海洋调查与监测   170.6099 海洋科学其他学科

170.99 地球科学其他学科

180 生物学
180.11 生物数学(包括生物统计学等)

180.14 生物物理学

  180.1410 生物信息论与生物控制论   180.1415 生物力学(包括生物流体力学与生物流变学等)   180.1420 理论生物物理学

  180.1425 生物声学与声生物物理学   180.1430 生物光学与光生物物理学   180.1435 生物电磁学   180.1440 生物能量学

  180.1445 低温生物物理学   180.1450 分子生物物理学   180.1455 空间生物物理学   180.1460 仿生学

  180.1465 系统生物物理学   180.1499 生物物理学其他学科

180.17 生物化学

  180.1710 多肽与蛋白质生物化学   180.1715 核酸生物化学   180.1720 多糖生物化学   180.1725 脂类生物化学

  180.1730 酶学   180.1735 膜生物化学   180.1740 激素生物化学   180.1745 生殖生物化学

  180.1750 免疫生物化学   180.1755 毒理生物化学   180.1760 比较生物化学   180.1765 应用生物化学

  180.1799 生物化学其他学科

180.21 细胞生物学

  180.2110 细胞生物物理学   180.2120 细胞结构与形态学   180.2130 细胞生理学   180.2140 细胞进化学

  180.2150 细胞免疫学   180.2160 细胞病理学   180.2199 细胞生物学其他学科

180.24 生理学

  180.2411 形态生理学   180.2414 新陈代谢与营养生理学   180.2417 心血管生理学   180.2421 呼吸生理学

  180.2424 消化生理学   180.2427 血液生理学   180.2431 泌尿生理学   180.2434 内分泌生理学

  180.2437 感官生理学   180.2441 生殖生理学   180.2444 骨骼生理学   180.2447 肌肉生理学

  180.2451 皮肤生理学   180.2454 循环生理学   180.2457 比较生理学   180.2461 年龄生理学

  180.2464 特殊环境生理学   180.2467 语言生理学   180.2499 生理学其他学科

180.27 发育生物学

180.31 遗传学

  180.3110 数量遗传学   180.3115 生化遗传学   180.3120 细胞遗传学   180.3125 体细胞遗传学

  180.3130 发育遗传学(亦称发生遗传学)   180.3135 分子遗传学   180.3140 辐射遗传学   180.3145 进化遗传学

  180.3150 生态遗传学   180.3155 免疫遗传学   180.3160 毒理遗传学   180.3165 行为遗传学

  180.3170 群体遗传学   180.3199 遗传学其他学科

180.34 放射生物学

  180.3410 放射生物物理学   180.3420 细胞放射生物学   180.3430 放射生理学   180.3440 分子放射生物学

  180.3450 放射免疫学   180.3460 放射毒理学   180.3499 放射生物学其他学科

180.37 分子生物学

180.41 生物进化论

180.44 生态学

  180.4410 数学生态学   180.4415 化学生态学   180.4420 生理生态学   180.4425 生态毒理学

  180.4430 区域生态学   180.4435 种群生态学   180.4440 群落生态学   180.4445 生态系统生态学

  180.4450 生态工程学   180.4499 生态学其他学科

180.47 神经生物学

  180.4710 神经生物物理学   180.4715 神经生物化学   180.4720 神经形态学   180.4725 细胞神经生物学

  180.4730 神经生理学   180.4735 发育神经生物学   180.4740 分子神经生物学   180.4745 比较神经生物学

  180.4750 系统神经生物学   180.4799 神经生物学其他学科

180.51 植物学

  180.5110 植物化学   180.5115 植物生物物理学   180.5120 植物生物化学   180.5125 植物形态学

  180.5130 植物解剖学   180.5135 植物细胞学   180.5140 植物生理学   180.5145 植物胚胎学

  180.5150 植物发育学   180.5155 植物遗传学   180.5160 植物生态学   180.5165 植物地理学

  180.5170 植物群落学   180.5175 植物分类学   180.5180 实验植物学   180.5185 植物寄生虫学

  180.5199 植物学其他学科

180.54 昆虫学

  180.5410 昆虫生物化学   180.5415 昆虫形态学   180.5420 昆虫组织学   180.5425 昆虫生理学

  180.5430 昆虫生态学   180.5435 昆虫病理学   180.5440 昆虫毒理学   180.5445 昆虫行为学

  180.5450 昆虫分类学   180.5455 实验昆虫学   180.5460 昆虫病毒学   180.5499 昆虫学其他学科

180.57 动物学

  180.5711 动物生物物理学   180.5714 动物生物化学   180.5717 动物形态学   180.5721 动物解剖学

  180.5724 动物组织学   180.5727 动物细胞学   180.5731 动物生理学   180.5734 动物生殖生物学

  180.5737 动物生长发育学   180.5741 动物遗传学   180.5744 动物生态学   180.5747 动物病理学

  180.5751 动物行为学   180.5754 动物地理学   180.5757 动物分类学   180.5761 实验动物学

  180.5764 动物寄生虫学   180.5767 动物病毒学   180.5799 动物学其他学科

180.61 微生物学

  180.6110 微生物生物化学   180.6115 微生物生理学   180.6120 微生物遗传学   180.6125 微生物生态学

  180.6130 微生物免疫学   180.6135 微生物分类学   180.6140 真菌学   180.6145 细菌学

  180.6150 应用微生物学   180.6199 微生物学其他学科

180.64 病毒学

  180.6410 病毒生物化学   180.6420 分子病毒学   180.6430 病毒生态学   180.6440 病毒分类学

  180.6499 病毒学其他学科

180.67 人类学

  180.6710 人类起源与演化学   180.6715 人类形态学   180.6720 人类遗传学   180.6725 分子人类学

  180.6730 人类生态学   180.6735 心理人类学   180.6740 古人类学   180.6745 人种学

  180.6750 人体测量学   180.6799 人类学其他学科

180.71 生物工程(亦称生物技术)

  180.7110 基因工程(亦称遗传工程)   180.7120 细胞工程   180.7130 蛋白质工程   180.7140 酶工程

  180.7150 发酵工程(亦称微生物工程)   180.7199 生物工程其他学科

180.74 心理学

  180.7410 心理学史   180.7415 普通心理学   180.7420 生理心理学   180.7425 认知心理学

  180.7430 发展心理学   180.7435 个性心理学   180.7440 缺陷心理学   180.7445 比较心理学

  180.7450 实验心理学   180.7455 应用心理学   180.7499 心理学其他学科

180.99 生物学其他学科

210 农学
210.10 农业史

210.20 农业基础学科

  210.2010 农业数学   210.2020 农业气象学与农业气候学   210.2030 农业生物物理学   210.2040 农业生物化学

  210.2050 农业生态学   210.2060 农业植物学   210.2070 农业微生物学   210.2080 植物营养学

  210.2099 农业基础学科其他学科

210.30 农艺学

  210.3010 作物形态学   210.3015 作物生理学   210.3020 作物遗传学   210.3025 作物生态学

  210.3030 种子学   210.3035 作物育种学与良种繁育学   210.3040 作物栽培学   210.3045 作物耕作学

  210.3050 作物种质资源学   210.3055 农产品贮藏与加工   210.3099 农艺学其他学科

210.40 园艺学

  210.4010 果树学   210.4020 瓜果学   210.4030 蔬菜学   210.4040 果蔬贮藏与加工

  210.4050 茶学(包括茶加工等)   210.4060 观赏园艺学   210.4099 园艺学其他学科

210.50 土壤学

  210.5010 土壤物理学   210.5015 土壤化学   210.5020 土壤地理学   210.5025 土壤生物学

  210.5030 土壤生态学   210.5035 土壤耕作学   210.5040 土壤改良学   210.5045 土壤肥料学

  210.5050 土壤分类学   210.5055 土壤调查与评价   210.5099 土壤学其他学科

210.60 植物保护学

  210.6010 植物检疫学   210.6015 植物免疫学   210.6020 植物病理学   210.6025 植物药理学

  210.6030 农业昆虫学   210.6035 植物病毒学   210.6040 农药学   210.6045 植物病虫害测报学

  210.6050 抗病虫害育种   210.6055 有害生物化学防治   210.6060 有害生物生物防治   210.6065 有害生物综合防治

  210.6070 杂草防治   210.6075 鸟兽、鼠害防治   210.6099 植物保护学其他学科

210.70 农业工程

  210.7010 农业机械学(包括农业机械制造等)   210.7015 农业机械化   210.7020 农业电气化与自动化

  210.7025 农田水利(包括灌溉工程、排水工程等)   210.7030 水土保持学   210.7035 农田测量

  210.7040 农业环保工程   210.7045 农业区划   210.7050 农业系统工程   210.7099 农业工程其他学科

210.99 农学其他学科  

220 林学
220.10 林业基础学科

  220.1010 森林气象学   220.1020 森林地理学   220.1030 森林水文学   220.1040 森林土壤学

  220.1050 树木生理学   220.1060 森林生态学   220.1070 森林植物学   220.1099 林业基础学科其他学科

220.15 林木遗传育种学

  220.1510 林木育种学   220.1520 林木遗传学   220.1599 林木遗传育种学其他学科

220.20 森林培育学(亦称造林学)

220.25 森林经理学

  220.2510 森林测计学   220.2520 森林测量学   220.2530 林业遥感   220.2540 林业信息管理

  220.2550 林业系统工程   220.2599 森林经理学其他学科

220.30 森林保护学

  220.3010 森林病理学   220.3020 森林昆虫学   220.3030 森林防火学   220.3099 森林保护学其他学科

220.35 野生动物保护与管理

220.40 防护林学

220.45 经济林学

220.50 园林学

  220.5010 园林植物学   220.5020 风景园林工程   220.5030 风景园林经营与管理   220.5099 园林学其他学科

220.55 林业工程

  220.5510 森林采运学   220.5520 林业机械   220.5530 林业机械化与电气化   220.5540 木材学

  220.5550 木材加工与人造板工艺学(包括家具设计与制造等)   220.5560 木材防腐学   220.5570 林产化学加工学

  220.5599 林业工程其他学科

220.60 森林统计学

220.65 林业经济学

220.99 林学其他学科  

230 畜牧、兽医科学
230.10 畜牧、兽医科学基础学科

  230.1010 家畜生物化学   230.1020 家畜生理学   230.1030 家畜遗传学   230.1040 家畜生态学

  230.1050 家畜微生物学   230.1099 畜牧、兽医科学基础学科其他学科

230.20 畜牧学

  230.2010 家畜育种学   230.2015 家畜繁殖学   230.2020 动物营养学   230.2025 饲料学

  230.2030 家畜饲养管理学   230.2035 特种经济动物饲养学   230.2040 家畜行为学   230.2045 家畜卫生学

  230.2050 草原学(包括牧草学、牧草育种学、牧草栽培学、草地生态学、草地保护学等)

  230.2055 畜产品贮藏与加工   230.2060 畜牧机械化   230.2065 养禽学   230.2070 养蜂学

  230.2075 养蚕学   230.2080 畜牧经济学   230.2099 畜牧学其他学科

230.30 兽医学

  230.3010 家畜解剖学   230.3015 家畜组织胚胎学   230.3020 兽医免疫学

  230.3025 家畜病理学(亦称兽医病理学)   230.3030 兽医药理学   230.3035 兽医临床学

  230.3040 兽医卫生检疫学   230.3045 家畜寄生虫学   230.3050 家畜传染病学   230.3055 家畜病毒学

  230.3060 中兽医学   230.3065 兽医器械学   230.3099 兽医学其他学科

230.99 畜牧、兽医科学其他学科  

240 水产学
240.10 水产学基础学科

  240.1010 水产化学   240.1020 水产地理学   240.1030 水产生物学   240.1040 水域生态学

  240.1099 水产学基础学科其他学科

240.15 水产增殖学

240.20 水产养殖学

240.25 水产饲料学

240.30 水产保护学

240.35 捕捞学

240.40 水产品贮藏与加工

240.45 水产工程学

240.50 水产资源学

240.55 水产经济学

240.99 水产学其他学科  

310 基础医学
310.11 医学生物化学

310.14 人体解剖学

  310.1410 系统解剖学   310.1420 局部解剖学   310.1499 人体解剖学其他学科

310.17 医学细胞生物学

310.21 人体生理学

310.24 人体组织胚胎学

310.27 医学遗传学

310.31 放射医学

310.34 人体免疫学

310.37 医学寄生虫学

  310.3710 医学寄生虫免疫学   310.3720 医学昆虫学   310.3730 医学蠕虫学   310.3740 医学原虫学

  310.3799 医学寄生虫学其他学科

310.41 医学微生物学(包括医学病毒学等)

310.44 病理学

  310.4410 病理生物学   310.4420 病理解剖学   310.4430 病理生理学   310.4440 免疫病理学

  310.4450 实验病理学   310.4460 比较病理学   310.4470 系统病理学   310.4480 环境病理学

  310.4499 病理学其他学科

310.47 药理学

  310.4710 基础药理学   310.4720 临床药理学   310.4730 生化药理学   310.4740 分子药理学

  310.4750 免疫药理学   310.4799 药理学其他学科

310.51 医学实验动物学

310.54 医学心理学

310.57 医学统计学

310.61 生物医学工程学

  310.6110 生物医学电子学   310.6120 临床工程学   310.6130 康复工程学   310.6140 生物医学测量学

  310.6150 人工器官与生物医学材料学   310.6199 生物医学工程学其他学科

310.99 基础医学其他学科  

320 临床医学
320.11 临床诊断学

  320.1110 症状诊断学   320.1120 物理诊断学   320.1130 机能诊断学

  320.1140 医学影象学(包括放射诊断学、同位素诊断学、超声诊断学等)   320.1150 临床放射学   320.1160 实验诊断学

  320.1199 临床诊断学其他学科

320.14 保健医学

  320.1410 康复医学   320.1420 运动医学(包括力学运动医学等)   320.1430 老年医学

  320.1499 保健医学其他学科

320.17 理疗学

320.21 麻醉学

  320.2110 麻醉生理学   320.2120 麻醉药理学   320.2130 麻醉应用解剖学   320.2199 麻醉学其他学科

320.24 内科学

  320.2410 心血管病学   320.2415 呼吸病学   320.2420 结核病学   320.2425 胃肠病学

  320.2430 血液病学   320.2435 肾脏病学   320.2440 内分泌学   320.2445 风湿病学与自体免疫病学

  320.2450 变态反应学   320.2455 感染性疾病学   320.2499 内科学其他学科

320.27 外科学

  320.2710 普通外科学   320.2715 显微外科学   320.2720 神经外科学   320.2725 颅脑外科学

  320.2730 胸外科学   320.2735 心血管外科学   320.2740 泌尿外科学   320.2745 骨外科学

  320.2750 烧伤外科学   320.2755 整形外科学   320.2760 器官移植外科学   320.2765 实验外科学

  320.2799 外科学其他学科

320.31 妇产科学

  320.3110 妇科学   320.3120 产科学   320.3130 围产医学(亦称围生医学)   320.3140 助产学

  320.3150 胎儿学   320.3160 妇科产科手术学   320.3199 妇产科学其他学科

320.34 儿科学

320.37 眼科学

320.41 耳鼻咽喉科学

320.44 口腔医学

  320.4410 口腔解剖生理学   320.4415 口腔组织学与口腔病理学   320.4420 口腔材料学   320.4425 口腔影象诊断学

  320.4430 口腔内科学   320.4435 口腔颌面外科学   320.4440 口腔矫形学   320.4445 口腔正畸学

  320.4450 口腔病预防学   320.4499 口腔医学其他学科

320.47 皮肤病学

320.51 性医学

320.54 神经病学

320.57 精神病学(包括精神卫生及行为医学等)

320.61 急诊医学

320.64 核医学

320.67 肿瘤学

  320.6710 肿瘤免疫学   320.6720 肿瘤病因学   320.6730 肿瘤病理学   320.6740 肿瘤诊断学

  320.6750 肿瘤治疗学   320.6760 肿瘤预防学   320.6770 实验肿瘤学   320.6799 肿瘤学其他学科

320.71 护理学

  320.7110 基础护理学   320.7120 专科护理学   320.7130 特殊护理学   320.7140 护理心理学

  320.7150 护理伦理学   320.7160 护理管理学   320.7199 护理学其他学科

320.99 临床医学其他学科  

330 预防医学与卫生学
330.11 营养学

330.14 毒理学

330.17 消毒学

330.21 流行病学

330.24 传染病学

330.27 媒介生物控制学

330.31 环境医学

330.34 职业病学

330.37 地方病学

330.41 社会医学

330.44 卫生检验学

330.47 食品卫生学

330.51 儿少卫生学

330.54 妇幼卫生学

330.57 环境卫生学

330.61 劳动卫生学

330.64 放射卫生学

330.67 卫生工程学

330.71 卫生经济学

330.74 优生学

330.77 健康教育学

330.81 卫生管理学

330.99 预防医学与卫生学其他学科  

340 军事医学与特种医学
340.10 军事医学

  340.1010 野战外科学   340.1015 军队流行病学   340.1020 军事环境医学   340.1025 军队卫生学

  340.1030 军队卫生装备学   340.1035 军事人机工效学   340.1040 核武器医学防护学   340.1045 化学武器医学防护学

  340.1050 生物武器医学防护学   340.1055 激光与微波医学防护学   340.1099 军事医学其他学科

340.20 特种医学

  340.2010 航空航天医学   340.2020 潜水医学   340.2030 航海医学   340.2040 法医学

  340.2099 特种医学其他学科

340.99 军事医学与特种医学其他学科  

350 药学
350.10 药物化学(包括天然药物化学等)

350.20 生物药物学

350.25 微生物药物学

350.30 放射性药物学

350.35 药剂学

350.40 药效学

350.45 药物管理学

350.50 药物统计学

350.99 药学其他学科  

360 中医学与中药学
360.10 中医学

  360.1011 中医基础理论(包括经络学等)   360.1014 中医诊断学   360.1017 中医内科学

  360.1021 中医外科学   360.1024 中医骨伤科学   360.1027 中医妇科学   360.1031 中医儿科学

  360.1034 中医眼科学   360.1037 中医耳鼻咽喉科学   360.1041 中医口腔科学   360.1044 中医老年病学

  360.1047 针灸学(包括针刺镇痛与麻醉等)   360.1051 按摩推拿学   360.1054 中医养生康复学(包括气功研究等)

  360.1057 中医护理学   360.1061 中医食疗学   360.1064 方剂学

  360.1067 中医文献学(包括难经、内经、伤寒论、金匮要略、腧穴学等)   360.1099 中医学其他学科

360.20 民族医学

360.30 中西医结合医学

360.40 中药学

  360.4010 中药化学   360.4015 中药药理学   360.4020 本草学   360.4025 药用植物学

  360.4030 中药鉴定学   360.4035 中药炮制学   360.4040 中药药剂学   360.4045 中药资源学

  360.4050 中药管理学   360.4099 中药学其他学科

360.99 中医学与中药学其他学科  

410 工程与技术科学基础学科
410.10 工程数学

410.15 工程控制论

410.20 工程力学

410.25 工程物理学

410.30 工程地质学

410.35 工程水文学

410.40 工程仿生学

410.45 工程心理学

410.50 标准化科学技术(亦称标准化学)

410.55 计量学

410.60 工程图学

410.65 勘查技术

410.70 工程通用技术

  410.7010 密封技术   410.7020 粉末技术   410.7030 真空技术   410.7040 薄膜技术

  410.7050 爆破技术   410.7060 包装技术   410.7070 照相技术   410.7080 物料搬运技术

  410.7099 工程通用技术其他学科

410.75 工业工程学(亦称工程系统工程)

410.99 工程与技术科学基础学科其他学科  

420 测绘科学技术
420.10 大地测量技术

  420.1010 大地测量定位   420.1020 重力测量   420.1030 测量平差   420.1099 大地测量技术其他学科

420.20 摄影测量与遥感技术

  420.2010 地物波谱学   420.2020 近景摄影测量   420.2030 航空摄影测量   420.2040 遥感信息工程

  420.2099 摄影测量与遥感技术其他学科

420.30 地图制图技术

  420.3010 地图投影学   420.3020 地图设计与编绘   420.3030 图形图象复制技术   420.3040 地理信息系统

  420.3099 地图制图技术其他学科

420.40 工程测量技术

  420.4010 地籍测量   420.4020 精密工程测量   420.4099 工程测量技术其他学科

420.50 海洋测绘

  420.5010 海洋大地测量   420.5015 海洋重力测量   420.5020 海洋磁力测量   420.5025 海洋跃层测量

  420.5030 海洋声速测量   420.5035 海道测量   420.5040 海底地形测量   420.5045 海图制图

  420.5050 海洋工程测量   420.5099 海洋测绘其他学科

420.60 测绘仪器

420.99 测绘科学技术其他学科  

430 材料科学
430.10 材料科学基础学科

  430.1010 材料力学   430.1020 相图与相变(包括合金化等)   430.1030 材料的组织、结构、缺陷与性能

  430.1040 金属学   430.1050 陶瓷学   430.1060 高分子材料学   430.1099 材料科学基础学科其他学科

430.15 材料表面与界面(包括表面优化技术)

430.20 材料失效与保护(包括材料腐蚀、磨损、老化、断裂及其控制等)

430.25 材料检测与分析技术

430.30 材料实验

430.35 材料合成与加工工艺

430.40 金属材料

  430.4010 黑色金属及其合金   430.4020 有色金属及其合金   430.4030 非晶、微晶金属材料(包括准晶和纳米晶材料等)

  430.4040 低维金属材料(包括薄膜、纤维和零维金属材料等)   430.4050 特种功能金属材料   430.4099 金属材料其他学科

430.45 无机非金属材料

  430.4510 玻璃与非晶无机非金属材料   430.4520 低维无机非金属材料(包括薄膜、纤维和零维非金属材料等)   430.4530 人工晶体

  430.4540 无机陶瓷材料(包括耐火材料等)   430.4550 特种功能无机非金属材料   430.4599 无机非金属材料其他学科

430.50 有机高分子材料

  430.5010 塑料、橡胶和纤维   430.5020 功能高分子材料   430.5030 高性能高分子材料

  430.5040 高分子液晶材料   430.5099 有机高分子材料其他学科

430.55 复合材料

  430.5510 金属基复合材料(包括多相复合材料等)   430.5520 无机非金属基复合材料(包括无机多相复合材料等)

  430.5530 聚合物基复合材料(包括有机多相复合材料等)   430.5599 复合材料其他学科

430.99 材料科学其他学科  

440 矿山工程技术
440.10 矿山地质学

440.15 矿山测量

440.20 矿山设计

  440.2010 地下矿设计   440.2020 露天矿设计   440.2099 矿山设计其他学科

440.25 矿山地面工程

440.30 井巷工程

  440.3010 矿山压力工程   440.3020 矿山支护工程   440.3099 井巷工程其他学科

440.35 采矿工程

  440.3510 煤矿开采   440.3520 煤及油母页岩地下气化   440.3530 金属矿开采   440.3540 非金属矿开采

  440.3599 采矿工程其他学科

440.40 选矿工程

  440.4010 选矿理论   440.4020 选矿技术   440.4030 矿石处理   440.4099 选矿工程其他学科

440.45 钻井工程

440.50 油气田开发工程

440.55 石油、天然气储存与运输工程

440.60 矿山机械工程

  440.6010 采矿机械   440.6020 选矿机械   440.6030 矿山运输机械   440.6099 矿山机械工程其他学科

440.65 矿山电气工程

440.70 采矿环境工程

440.75 矿山安全

440.80 矿山综合利用工程

440.99 矿山工程技术其他学科  

450 冶金工程技术
450.10 冶金物理化学

450.15 冶金反应工程

450.20 冶金原料与预处理

450.25 冶金热能工程

  450.2510 冶金燃料   450.2520 燃烧理论   450.2530 燃烧计算   450.2540 冶金分析

  450.2599 冶金热能工程其他学科

450.30 冶金技术

  450.3010 提炼冶金   450.3015 粉末冶金   450.3020 真空冶金   450.3025 电磁冶金

  450.3030 原子能冶金   450.3035 湿法冶金   450.3040 纤维冶金   450.3045 卤素冶金

  450.3050 微生物冶金   450.3099 冶金技术其他学科

450.35 钢铁冶金

  450.3510 炼铁   450.3520 炼钢   450.3530 铁合金冶炼   450.3599 钢铁冶金其他学科

450.40 有色金属冶金

450.45 轧制

450.50 冶金机械及自动化

450.99 冶金工程技术其他学科  

460 机械工程
460.10 机械史

460.15 机械学

  460.1510 机械原理与机构学   460.1520 机械动力学与振动   460.1530 机械强度   460.1540 机械摩擦、磨损及润滑

  460.1599 机械学其他学科

460.20 机械设计

  460.2010 机械设计原理与方法   460.2020 机械零件及传动   460.2030 机械公差、配合与技术测量   460.2040 机械制图

  460.2099 机械设计其他学科

460.25 机械制造工艺与设备

  460.2510 铸造工艺与设备   460.2515 焊接工艺与设备(包括连接工艺与设备)   460.2520 塑性加工工艺与设备

  460.2525 热处理工艺与设备   460.2530 切削加工工艺   460.2535 特种加工工艺

  460.2540 机器装配工艺   460.2545 非金属加工工艺   460.2599 机械制造工艺与设备其他学科

460.30 刀具技术

  460.3010 切削理论   460.3020 切削刀具   460.3030 磨削工具   460.3099 刀具技术其他学科

460.35 机床技术

  460.3510 机床基础理论   460.3520 金属切削机床   460.3530 数字控制机床   460.3540 特种加工机床

  460.3599 机床技术其他学科

460.40 仪器仪表技术

  460.4010 仪器仪表基础理论   460.4015 仪器仪表材料   460.4020 传感器技术   460.4025 精密仪器制造

  460.4030 测试计量仪器   460.4035 光学技术与仪器   460.4040 天文仪器   460.4045 地球科学仪器

  460.4050 大气仪器仪表   460.4099 仪器仪表技术其他学科

460.45 流体传动与控制(包括气动液压控制技术等)

460.50 机械制造自动化

  460.5010 成组技术   460.5020 数控技术   460.5030 工业机器人技术   460.5040 计算机辅助制造

  460.5099 机械制造自动化其他学科

460.55 专用机械工程

  460.5510 印刷、复制技术   460.5599 专用机械工程其他学科

460.99 机械工程其他学科  

470 动力与电气工程
470.10 工程热物理

  470.1010 工程热力学   470.1020 工程传热、传质学   470.1030 燃烧学   470.1040 多相流动

  470.1099 工程热物理其他学科

470.20 热工学

  470.2010 热工测量与仪器仪表   470.2020 制冷与低温工程   470.2030 供热工程   470.2040 工业锅炉

  470.2099 热工学其他学科

470.30 动力机械工程

  470.3010 蒸汽工程(包括锅炉、蒸汽机、汽轮机等)   470.3020 内燃机工程(包括汽油机、柴油机、气体燃料发动机等)   470.3030 流体机械及流体动力工程

  470.3040 喷气推进机与涡轮机械   470.3099 动力机械工程其他学科

470.40 电气工程

  470.4011 电工学   470.4014 电路理论   470.4017 电气测量技术及其仪器仪表   470.4021 电工材料

  470.4024 电机学   470.4027 电器学   470.4031 电力电子技术   470.4034 高电压工程

  470.4037 绝缘技术   470.4041 电热与高频技术   470.4044 超导电工技术

  470.4047 发电工程(包括水力、热力、风力、磁流体发电工程等)   470.4051 输配电工程   470.4054 电力系统及其自动化

  470.4057 电力拖动及其自动化   470.4061 用电技术   470.4064 电加工技术   470.4099 电气工程其他学科

470.99 动力与电气工程其他学科  

480 能源科学技术
480.10 能源化学

480.20 能源地理学

480.30 能源计算与测量

480.40 储能技术

480.50 节能技术

480.60 一次能源

  480.6010 煤炭能   480.6020 石油、天然气能   480.6030 水能(包括海洋能等)   480.6040 风能

  480.6050 地热能   480.6060 生物能   480.6070 太阳能   480.6080 核能

  480.6099 一次能源其他学科

480.70 二次能源

  480.7010 煤气能   480.7020 电能   480.7030 蒸汽能   480.7040 沼气能

  480.7050 激光能   480.7099 二次能源其他学科

480.80 能源系统工程

480.99 能源科学技术其他学科  

490 核科学技术
490.10 辐射物理与技术

490.15 核探测技术与核电子学

490.20 放射性计量学

490.25 核仪器、仪表

490.30 核材料与工艺技术

  490.3010 核燃料与工艺技术   490.3099 核材料与工艺技术其他学科

490.35 粒子加速器

  490.3510 粒子加速器工艺   490.3520 粒子加速器应用   490.3599 粒子加速器其他学科

490.40 裂变堆工程技术

  490.4010 裂变堆物理   490.4020 裂变堆热工与水力   490.4030 裂变堆控制   490.4040 裂变堆结构

  490.4050 裂变堆屏蔽与防护   490.4060 裂变堆建造技术   490.4099 裂变堆工程技术其他学科

490.45 核聚变工程技术

  490.4510 磁约束聚变技术   490.4520 惯性约束聚变技术   490.4530 聚变堆工程   490.4540 聚变裂变混合堆工程

  490.4599 核聚变工程技术其他学科

490.50 核动力工程技术

  490.5010 舰船核动力   490.5020 空间核动力   490.5030 核电站   490.5040 核动力运行技术

  490.5099 核动力工程技术其他学科

490.55 同位素技术

  490.5510 同位素分离技术   490.5520 同位素制备技术   490.5530 同位素应用技术   490.5599 同位素技术其他学科

490.60 核爆炸工程

490.65 核安全(包括核电站安全)

490.70 乏燃料后处理技术

490.75 辐射防护技术

490.80 核设施退役技术

490.85 放射性三废处理、处置技术

490.99 核科学技术其他学科  

510 电子、通信与自动控制技术
510.10 电子技术

  510.1010 电子电路   510.1015 天线电波传播   510.1020 无线电技术   510.1025 微波技术

  510.1030 敏感电子学   510.1035 微电子学   510.1040 仿真技术   510.1045 超导电子技术

  510.1050 电子元件与器件技术   510.1055 电子束、离子束技术   510.1060 红外与夜视技术   510.1099 电子技术其他学科

510.20 光电子学与激光技术

510.30 半导体技术

  510.3010 半导体测试技术   510.3020 半导体材料   510.3030 半导体器件与技术   510.3040 集成电路技术

  510.3050 半导体加工技术   510.3099 半导体技术其他学科

510.40 信息处理技术

  510.4010 信号检测   510.4020 参数估计   510.4030 数据处理   510.4040 语音处理

  510.4050 图象处理   510.4099 信息处理技术其他学科

510.50 通信技术

  510.5010 有线通信技术   510.5015 无线通信技术(包括微波通信、卫星通信等)   510.5020 光纤通信技术

  510.5025 通信传输技术   510.5030 通信网络技术   510.5035 通信终端技术   510.5040 电信   510.5045 邮政

  510.5050 邮电通信管理工程   510.5099 通信技术其他学科

510.60 广播与电视工程技术

510.70 雷达工程

510.80 自动控制技术

  510.8010 自动控制理论(包括线性、非线性、随机控制,最优控制、自适应控制系统、分布式控制系统、柔性控制系统等)

  510.8020 控制系统仿真技术   510.8030 机电一体化技术   510.8040 自动化仪器仪表与装置   510.8050 机器人控制

  510.8060 自动化技术应用   510.8099 自动控制技术其他学科

510.99 电子、通信与自动控制技术其他学科  

520 计算机科学技术
520.10 计算机科学技术基础学科

  520.1010 自动机理论   520.1020 可计算性理论   520.1030 计算机可靠性理论   520.1040 算法理论

  520.1050 数据结构   520.1060 数据安全与计算机安全   520.1099 计算机科学技术基础学科其他学科

520.20 人工智能

  520.2010 人工智能理论   520.2020 自然语言处理   520.2030 机器翻译   520.2040 模式识别

  520.2050 计算机感知   520.2060 计算机神经网络   520.2070 知识工程(包括专家系统)   520.2099 人工智能其他学科

520.30 计算机系统结构

  520.3010 计算机系统设计   520.3020 并行处理   520.3030 分布式处理系统   520.3040 计算机网络

  520.3050 计算机运行测试与性能评价   520.3099 计算机系统结构其他学科

520.40 计算机软件

  520.4010 软件理论   520.4020 操作系统与操作环境   520.4030 程序设计及其语言   520.4040 编译系统

  520.4050 数据库   520.4060 软件开发环境与开发技术   520.4070 软件工程   520.4099 计算机软件其他学科

'520.50 计算机工程

  520.5010 计算机元器件   520.5020 计算机处理器技术   520.5030 计算机存储技术   520.5040 计算机外围设备

  520.5050 计算机制造与检测   520.5060 计算机高密度组装技术   520.5099 计算机工程其他学科

520.60 计算机应用

  520.6010 中国语言文字信息处理(包括汉字信息处理)   520.6020 计算机仿真   520.6030 计算机图形学

  520.6040 计算机图象处理   520.6050 计算机辅助设计   520.6060 计算机过程控制

  520.6070 计算机信息管理系统   520.6080 计算机决策支持系统   520.6099 计算机应用其他学科

520.99 计算机科学技术其他学科  

530 化学工程
530.11 化学工程基础学科

  530.1110 化工热力学   530.1120 化工流体力学   530.1130 化工流变学   530.1140 颗粒学

  530.1199 化学工程基础学科其他学科

530.14 化工测量技术与仪器仪表

530.17 化工传递过程

530.21 化学分离工程

  530.2110 蒸馏   530.2120 吸收   530.2130 萃取   530.2140 吸附与离子交换

  530.2150 膜分离   530.2160 蒸发与结晶   530.2170 干燥   530.2199 化学分离工程其他学科

530.24 化学反应工程

  530.2410 催化反应工程   530.2420 催化剂工程   530.2430 固定床反应工程   530.2440 多相流反应工程

  530.2450 生化反应工程   530.2460 聚合化学反应工程   530.2470 电化学反应工程   530.2499 化学反应工程其他学科

530.27 化工系统工程

  530.2710 化工过程动态学   530.2720 化工过程控制与模拟   530.2730 化工系统优化   530.2799 化工系统工程其他学科

530.31 化工机械与设备

530.34 无机化学工程

  530.3410 酸碱盐工程技术   530.3420 硅酸盐工程技术   530.3430 放射化工   530.3440 化肥工程技术

  530.3450 化学冶金   530.3499 无机化学工程其他学科

530.37 有机化学工程

530.41 电化学工程

  530.4110 电解   530.4120 电镀   530.4130 电池   530.4140 腐蚀与防腐化学

  530.4199 电化学工程其他学科

530.44 高聚物工程

530.47 煤化学工程

530.51 石油化学工程

530.54 精细化学工程

  530.5410 表面活性剂   530.5420 香料学   530.5430 化妆品学   530.5440 染料

  530.5450 颜料与涂料学   530.5460 粘合剂(亦称胶粘剂)   530.5499 精细化学工程其他学科

530.57 造纸技术

530.61 毛皮与制革工程

530.64 制药工程

  530.6410 医药工程   530.6420 农药工程   530.6430 兽药工程   530.6499 制药工程其他学科

530.67 生物化学工程

530.99 化学工程其他学科  

540 纺织科学技术
540.10 纺织科学技术基础学科

  540.1010 纺织化学   540.1020 纺织美学与色彩学   540.1099 纺织科学技术基础学科其他学科

540.20 纺织材料

540.30 纤维制造技术

540.40 纺织技术

  540.4010 纺织品结构与设计   540.4015 棉纺学   540.4020 棉织学   540.4025 麻纺织

  540.4030 毛纺织   540.4035 丝纺织   540.4040 化学纤维纺织   540.4045 新型纺纱、无纺布与特种织物

  540.4050 针织   540.4099 纺织技术其他学科

540.50 染整技术

  540.5010 染炼技术   540.5020 印花技术   540.5030 染色技术   540.5040 整理技术

  540.5099 染整技术其他学科

540.60 服装技术

  540.6010 服装设计   540.6020 服装加工   540.6099 服装技术其他学科

540.70 纺织机械与设备

  540.7010 纺织器材设计与制造   540.7020 纺织机械设计与制造   540.7099 纺织机械与设备其他学科

540.99 纺织科学技术其他学科  

550 食品科学技术
550.10 食品科学技术基础学科

  550.1010 食品生物化学   550.1020 食品营养学   550.1030 食品检验学   550.1099 食品科学技术基础学科其他学科

550.20 食品加工技术

  550.2010 食用油脂加工技术   550.2015 制糖技术   550.2020 肉加工技术   550.2025 乳加工技术

  550.2030 蛋加工技术   550.2035 水果、蔬菜加工技术   550.2040 食品发酵与酿造技术   550.2045 食品焙烤加工技术

  550.2050 调味品加工技术(包括食盐加工技术等)   550.2055 食品添加剂技术   550.2060 饮料冷食制造技术   550.2065 罐头技术

  550.2099 食品加工技术其他学科

550.30 食品包装与储藏

550.40 食品机械

550.50 食品加工的副产品加工与利用

550.60 食品工业企业管理学

550.99 食品科学技术其他学科  

560 土木建筑工程
560.10 建筑史

560.15 土木建筑工程基础学科

  560.1510 建筑光学   560.1520 建筑声学   560.1530 建筑气象学   560.1599 土木建筑工程基础学科其他学科

560.20 土木建筑工程测量

560.25 建筑材料

  560.2510 金属建筑材料   560.2520 非金属建筑材料   560.2530 复合建筑材料

  560.2540 特种建筑材料(包括隔音、防水、防火、绝热、耐震、防蚀、装修材料等)   560.2599 建筑材料其他学科

560.30 工程结构

  560.3010 杆件结构   560.3020 薄壳结构   560.3030 悬索与张拉结构   560.3040 实体结构

  560.3050 结构设计   560.3099 工程结构其他学科

560.35 土木建筑结构

  560.3510 木结构   560.3520 砖结构   560.3530 金属结构   560.3540 混凝土与钢筋混凝土结构

  560.3550 喷锚结构   560.3560 复合结构   560.3570 特种结构   560.3599 土木建筑结构其他学科

560.40 土木建筑工程设计

  560.4010 建筑设计方法与理论   560.4020 城乡规划方法与理论   560.4030 建筑美学   560.4040 建筑室内设计

  560.4050 建筑室外环境设计   560.4060 土木工程设计   560.4099 土木建筑工程设计其他学科

560.45 土木建筑工程施工

  560.4510 地基基础工程   560.4520 地面工程   560.4530 地下工程   560.4540 墙体工程

  560.4550 土木施工电器工程   560.4560 装饰工程   560.4599 土木建筑工程施工其他学科

560.50 土木工程机械与设备

  560.5010 起重机械   560.5020 土木工程运输机械   560.5030 土方机械   560.5040 桩工机械

  560.5050 石料开采加工机械   560.5060 钢筋混凝土机械   560.5070 装修机械   560.5099 土木工程机械与设备其他学科

560.55 市政工程

  560.5510 城市给水排水工程   560.5520 通风与空调工程   560.5530 供热与供燃气工程   560.5540 电讯管道工程

  560.5550 城市系统工程   560.5599 市政工程其他学科

560.60 建筑经济学

560.99 土木建筑工程其他学科  

570 水利工程
570.10 水利工程基础学科

  570.1010 水力学   570.1020 河流与海岸动力学   570.1099 水利工程基础学科其他学科

570.15 水利工程测量

570.20 水工材料

570.25 水工结构(亦称水工建筑物)

  570.2510 一般水工建筑物   570.2520 专门水工建筑物   570.2599 水工结构其他学科

570.30 水力机械

570.35 水利工程施工

  570.3510 水利建筑工程施工   570.3520 水工设备安装(包括水工金属结构安装等)   570.3599 水利工程施工其他学科

570.40 水处理(不包括废水处理)

  570.4010 给水处理   570.4099 水处理其他学科

570.45 河流泥沙工程学

  570.4510 水沙动力学   570.4520 河工学   570.4599 河流泥沙工程学其他学科

570.50 海洋工程

  570.5010 海洋工程结构与施工   570.5020 海底矿产开发   570.5030 海水资源利用   570.5040 海洋环境工程

  570.5099 海洋工程其他学科

570.55 环境水利

  570.5510 环境水利与评价   570.5520 区域环境水利   570.5530 水资源保护   570.5599 环境水利其他学科

570.60 水利管理

  570.6010 水利工程管理(包括水利调度、水利施工管理、养护等)   570.6020 水利工程检查观测

  570.6030 水利管理自动化系统   570.6099 水利管理其他学科

570.65 防洪工程

  570.6510 防洪   570.6520 防汛   570.6530 防凌   570.6599 防洪工程其他学科

570.70 水利经济学

570.99 水利工程其他学科  

580 交通运输工程
580.10 道路工程

  580.1010 路基工程   580.1020 桥涵工程   580.1030 隧道工程   580.1099 道路工程其他学科

580.20 公路运输

  580.2010 车辆工程   580.2020 公路标志、信号、监控工程   580.2030 公路运输管理   580.2099 公路运输其他学科

580.30 铁路运输

  580.3010 铁路电气化工程   580.3020 铁路通信信号工程   580.3030 铁路机车车辆工程   580.3040 铁路运输管理

  580.3099 铁路运输其他学科

580.40 水路运输

  580.4010 航海学   580.4020 导航建筑物与航标工程   580.4030 航道工程   580.4040 港口工程

  580.4050 疏浚工程   580.4060 水路运输管理   580.4099 水路运输其他学科

580.50 船舶、舰船工程

580.60 航空运输

  580.6010 机场工程   580.6020 航空运输管理   580.6099 航空运输其他学科

580.70 交通运输系统工程

580.80 交通运输安全工程

580.99 交通运输工程其他学科  

590 航空、航天科学技术
590.10 航空、航天科学技术基础学科

  590.1010 大气层飞行力学   590.1020 航天动力学   590.1030 飞行器结构力学   590.1040 飞行原理

  590.1099 航空、航天科学技术基础学科其他学科

590.15 航空器结构与设计

  590.1510 气球、飞艇   590.1520 定翼机   590.1530 旋翼机   590.1599 航空器结构与设计其他学科

590.20 航天器结构与设计

  590.2010 火箭、导弹   590.2020 人造地球卫星   590.2030 空间探测器   590.2040 宇宙飞船

  590.2050 航天站   590.2060 航天飞机   590.2099 航天器结构与设计其他学科

590.25 航空、航天推进系统

590.30 飞行器仪表、设备

590.35 飞行器控制、导航技术

590.40 航空、航天材料

  590.4010 航空、航天金属材料   590.4020 航空、航天非金属材料   590.4030 航空、航天复合材料   590.4040 航空、航天燃料与润滑剂

  590.4099 航空、航天材料其他学科

590.45 飞行器制造技术

  590.4510 航空器制造工艺   590.4520 航天器制造工艺   590.4599 飞行器制造技术其他学科

590.50 飞行器试验技术

  590.5010 航空器地面试验   590.5020 航空器飞行试验   590.5030 航天器地面试验   590.5040 航天器飞行试验

  590.5099 飞行器试验技术其他学科

590.55 飞行器发射、飞行技术

  590.5510 飞行技术   590.5520 飞行器发射、飞行事故   590.5599 飞行器发射、飞行技术其他学科

590.60 航天地面设施、技术保障

  590.6010 发射场、试验场   590.6020 航天测控系统   590.6099 航天地面设施、技术保障其他学科

590.65 航空、航天系统工程

  590.6510 航空系统工程   590.6520 航天系统工程   590.6530 航空、航天可靠性工程   590.6599 航空、航天系统工程其他学科

590.99 航空、航天科学技术其他学科  

610 环境科学技术
610.10 环境科学技术基础学科

  610.1010 环境物理学(包括环境声学等)   610.1015 环境化学   610.1020 环境生物学   610.1025 环境气象学

  610.1030 环境地学(包括环境地球化学、环境地质学等)   610.1035 环境生态学   610.1040 环境毒理学   610.1045 自然环境保护学

  610.1050 环境管理学   610.1099 环境科学技术基础学科其他学科

610.20 环境学

  610.2010 大气环境学   610.2020 水体环境学(包括海洋环境学)   610.2030 土壤环境学   610.2040 区域环境学

  610.2099 环境学其他学科

610.30 环境工程学

  610.3010 环境保护工程   610.3015 大气污染防治工程   610.3020 水污染防治工程   610.3025 固体污染防治工程

  610.3030 三废处理与综合利用   610.3035 噪声与震动控制   610.3040 环境质量监测与评价   610.3045 环境规划

  610.3050 环境系统工程   610.3099 环境工程学其他学科

610.99 环境科学技术其他学科  

620 安全科学技术
620.10 安全科学技术基础学科

  620.1010 灾害物理学   620.1020 灾害化学   620.1030 灾害学   620.1040 灾害毒理学

  620.1099 安全科学技术基础学科其他学科

620.20 安全学

  620.2010 安全系统学   620.2020 安全心理学   620.2030 安全模拟与安全仿真学   620.2040 安全人机学

  620.2050 安全经济学   620.2060 安全管理学   620.2070 安全教育学   620.2099 安全学其他学科

620.30 安全工程

  620.3010 消防工程   620.3020 爆炸安全工程   620.3030 安全设备工程   620.3040 安全电气工程

  620.3050 部门安全工程   620.3099 安全工程其他学科

620.40 职业卫生工程

  620.4010 防尘工程   620.4020 防毒工程   620.4030 生产噪声与振动控制   620.4040 个体防护

  620.4099 职业卫生工程其他学科

620.50 安全管理工程

  620.5010 安全信息工程   620.5020 风险评价与失效分析   620.5030 工业灾害控制   620.5040 安全检测与监控技术

  620.5099 安全管理工程其他学科

620.99 安全科学技术其他学科  

630 管理学
630.10 管理思想史

630.15 管理理论

  630.1510 管理哲学   630.1520 组织理论   630.1530 行为科学   630.1540 决策理论

  630.1550 系统管理理论   630.1599 管理理论其他学科

630.20 管理心理学

630.25 管理计量学

630.30 部门经济管理

630.35 科学学与科技管理

  630.3510 科学社会学   630.3520 科技政策学   630.3530 科学心理学   630.3540 科学计量学

  630.3550 科技管理学   630.3599 科学学与科技管理其他学科

630.40 企业管理

  630.4010 生产管理   630.4015 经营管理   630.4020 财务管理   630.4025 成本管理

  630.4030 劳动人事管理   630.4035 技术管理   630.4040 营销管理   630.4045 物资管理

  630.4050 设备管理   630.4055 质量管理   630.4099 企业管理其他学科

630.45 行政管理

630.50 管理工程

  630.5010 生产系统管理   630.5015 研究与开发管理   630.5020 质量控制与可靠性管理   630.5025 物流系统管理

  630.5030 战略管理   630.5035 决策分析   630.5040 决策支持系统   630.5045 管理信息系统

  630.5050 管理系统仿真   630.5055 工效学   630.5060 部门管理工程   630.5099 管理工程其他学科

630.55 人力资源开发与管理

  630.5510 人力资源开发战略   630.5520 人才学   630.5599 人力资源开发与管理其他学科

630.60 未来学

  630.6010 理论预测学   630.6020 预测评价学   630.6030 技术评估学   630.6040 全球未来学

  630.6099 未来学其他学科

630.99 管理学其他学科  

710 马克思主义
710.10 马、恩、列、斯思想研究

710.20 毛泽东思想研究

710.30 马克思主义思想史

710.40 科学社会主义

710.50 社会主义运动史(包括国际共产主义运动)

710.60 国外马克思主义研究

710.99 马克思主义其他学科  

720 哲学
720.10 马克思主义哲学

  720.1010 辩证唯物主义   720.1020 历史唯物主义   720.1030 马克思主义哲学史   720.1099 马克思主义哲学其他学科

720.15 自然辩证法(亦称科学技术哲学)

  720.1510 自然观   720.1520 科学哲学   720.1530 技术哲学

  720.1540 专门自然科学哲学(包括人工智能哲学、数学哲学、物理哲学等)   720.1599 自然辩证法其他学科

720.20 中国哲学史

  720.2010 先秦哲学   720.2020 秦汉哲学   720.2030 魏晋南北朝哲学   720.2040 隋唐五代哲学

  720.2050 宋元明清哲学   720.2060 中国近代哲学   720.2070 中国现代哲学   720.2080 中国少数民族哲学思想

  720.2099 中国哲学史其他学科

720.25 东方哲学史

  720.2510 印度哲学   720.2520 伊斯兰哲学   720.2530 日本哲学   720.2599 东方哲学史其他学科

720.30 西方哲学史

  720.3010 古希腊罗马哲学   720.3020 中世纪哲学   720.3030 文艺复兴时期哲学   720.3040 十七、十八世纪欧洲哲学

  720.3050 德国古典哲学   720.3060 俄国哲学(包括俄国革命民主主义者的哲学)   720.3099 西方哲学史其他学科

720.35 现代外国哲学

  720.3510 十九世纪末至二十世纪中叶西方哲学   720.3520 分析哲学   720.3530 欧洲大陆人文哲学

  720.3540 解释学   720.3550 符号学   720.3560 实用主义哲学   720.3599 现代外国哲学其他学科

720.40 逻辑学

  720.4010 逻辑史(包括中国逻辑史、西方逻辑史、印度逻辑史等)   720.4020 形式逻辑(亦称传统逻辑)

  720.4030 哲理逻辑(包括模态、多值、构造、时态、模糊逻辑等)   720.4040 语言逻辑   720.4050 归纳逻辑   720.4060 辩证逻辑

  720.4099 逻辑学其他学科

720.45 伦理学

  720.4510 伦理学原理   720.4515 中国伦理思想史   720.4520 东方伦理思想史   720.4525 西方伦理思想史

  720.4530 马克思主义伦理思想史   720.4535 职业伦理学   720.4540 医学伦理学   720.4545 教育伦理学

  720.4550 政治伦理学   720.4555 家庭伦理学   720.4560 生命伦理学   720.4565 生态伦理学

  720.4599 伦理学其他学科

720.50 美学

  720.5010 美学原理   720.5020 中国美学史   720.5030 东方美学史   720.5040 西方美学史

  720.5050 西方现代美学   720.5060 马克思主义美学   720.5070 艺术美学(包括音乐、影视美学、建筑美学等)

  720.5080 技术美学   720.5099 美学其他学科

720.99 哲学其他学科  

730 宗教学
730.11 宗教学理论

  730.1110 马克思主义宗教学   730.1115 宗教史学   730.1120 宗教哲学   730.1125 宗教社会学

  730.1130 宗教心理学   730.1135 比较宗教学   730.1140 宗教地理学   730.1145 宗教文学艺术

  730.1150 宗教文献学   730.1155 神话学   730.1199 宗教学理论其他学科

730.14 无神论

  730.1410 无神论史   730.1420 中国无神论   730.1430 外国无神论   730.1499 无神论其他学科

730.17 原始宗教

730.21 古代宗教

  730.2110 中国古代宗教   730.2120 外国古代宗教   730.2199 古代宗教其他学科

730.24 佛教

  730.2410 佛教哲学   730.2420 佛教因明   730.2430 佛教艺术   730.2440 佛教文献

  730.2450 佛教史   730.2499 佛教其他学科

730.27 基督教

  730.2710 圣经学   730.2720 基督教哲学   730.2730 基督教伦理学   730.2740 基督教史

  730.2750 基督教艺术   730.2799 基督教其他学科

730.31 伊斯兰教

  730.3110 伊斯兰教义学   730.3120 伊斯兰教法学   730.3130 伊斯兰教哲学   730.3140 古兰学

  730.3150 圣训学   730.3160 伊斯兰教史   730.3170 伊斯兰教艺术   730.3199 伊斯兰教其他学科

730.34 道教

  730.3410 道教哲学   730.3420 道教文献   730.3430 道教艺术   730.3440 道教史

  730.3499 道教其他学科

730.37 印度教

730.41 犹太教

730.44 祆教

730.47 摩尼教

730.51 锡克教

730.54 耆那教

730.57 神道教

730.61 中国民间宗教与民间信仰

730.64 中国少数民族宗教

730.67 当代宗教

  730.6710 中国当代宗教   730.6720 世界当代宗教   730.6730 新兴宗教   730.6799 当代宗教其他学科

730.99 宗教学其他学科  

740 语言学
740.10 普通语言学

  740.1010 语音学   740.1015 语法学   740.1020 语义学   740.1025 词汇学

  740.1030 语用学   740.1035 方言学   740.1040 修辞学   740.1045 文字学

  740.1050 语源学   740.1099 普通语言学其他学科

740.15 比较语言学

  740.1510 历史比较语言学   740.1520 类型比较语言学   740.1530 双语对比语言学   740.1599 比较语言学其他学科

740.20 语言地理学

740.25 社会语言学

740.30 心理语言学

740.35 应用语言学

  740.3510 语言教学   740.3520 话语语言学   740.3530 实验语音学   740.3540 数理语言学

  740.3550 计算语言学   740.3560 翻译学   740.3599 应用语言学其他学科

740.40 汉语研究

  740.4010 普通话   740.4015 汉语方言   740.4020 汉语语音   740.4025 汉语音韵

  740.4030 汉语语法   740.4035 汉语词汇   740.4040 汉语训诂   740.4045 汉语修辞

  740.4050 汉字规范   740.4055 汉语史   740.4099 汉语研究其他学科

740.45 中国少数民族语言文字

  740.4510 蒙古语文   740.4515 藏语文   740.4520 维吾尔语文   740.4525 哈萨克语文

  740.4530 满语文   740.4535 朝鲜语文   740.4540 傣族语文   740.4545 彝族语文

  740.4550 壮语文   740.4555 苗语文   740.4560 瑶语文   740.4565 柯尔克孜语文

  740.4570 锡伯语文   740.4599 中国少数民族语言文字其他学科

740.50 外国语言

  740.5011 英语   740.5014 德语   740.5017 瑞典语   740.5021 意大利语

  740.5024 法语   740.5027 西班牙语、葡萄牙语   740.5031 罗马尼亚语   740.5034 俄语

  740.5037 波兰语、捷克语   740.5041 塞尔维亚语、保加利亚语   740.5044 希腊语   740.5047 阿尔巴尼亚语

  740.5051 匈牙利语   740.5054 梵语、印地语、乌尔都语、僧伽罗语   740.5057 波斯语

  740.5061 土耳其语   740.5064 阿拉伯语   740.5067 希伯莱语   740.5071 豪萨语

  740.5074 斯瓦希里语   740.5077 越南语、柬埔寨语   740.5081 印度尼西亚语、菲律宾国语、马来语

  740.5084 缅甸语   740.5087 泰语、老挝语   740.5091 日语   740.5094 世界语

  740.5099 外国语言其他学科

740.99 语言学其他学科  

750 文学
750.11 文学理论

750.14 文艺美学

750.17 文学批评

750.21 比较文学

750.24 中国古代文学史

  750.2410 周秦汉文学   750.2415 魏晋文学   750.2420 南北朝文学   750.2425 隋唐五代文学

  750.2430 宋代文学   750.2435 辽金文学   750.2440 元代文学   750.2445 明代文学

  750.2450 清代文学   750.2499 中国古代文学史其他学科

750.27 中国近代文学史

750.31 中国现代文学史(包括当代文学史)

750.34 中国各体文学

  750.3410 中国诗歌文学   750.3420 中国戏剧文学   750.3430 中国小说文学   750.3440 中国散文文学

  750.3499 中国各体文学其他学科

750.37 中国民间文学

750.41 中国儿童文学

750.44 中国少数民族文学

  750.4410 蒙古族文学   750.4420 藏族文学   750.4430 维吾尔族文学   750.4440 哈萨克族文学

  750.4450 朝鲜族文学   750.4499 中国少数民族文学其他学科

750.47 世界文学史

  750.4710 古代世界文学史   750.4720 中世纪世界文学史   750.4730 近代世界文学史

  750.4740 现代世界文学史(包括当代世界文学史)   750.4799 世界文学史其他学科

750.51 东方文学

  750.5110 印度文学   750.5120 日本文学   750.5199 东方文学其他学科

750.54 俄国文学(包括原苏联文学)

750.57 英国文学

750.61 法国文学

750.64 德国文学

750.67 意大利文学

750.71 美国文学

750.74 北欧文学

750.77 东欧文学

750.81 拉美文学

750.84 非洲文学

750.87 大洋洲文学

750.99 文学其他学科  

760 艺术学
760.10 艺术心理学

760.15 音乐

  760.1510 音乐学(包括音乐史、音乐美学等)   760.1520 作曲与作曲理论   760.1530 音乐表演艺术   760.1599 音乐其他学科

760.20 戏剧

  760.2010 戏剧史   760.2020 戏剧理论   760.2099 戏剧其他学科

760.25 戏曲

  760.2510 戏曲史   760.2520 戏曲理论   760.2530 戏曲表演   760.2599 戏曲其他学科

760.30 舞蹈

  760.3010 舞蹈史   760.3020 舞蹈理论   760.3030 舞蹈编导   760.3040 舞蹈表演

  760.3099 舞蹈其他学科

760.35 电影

  760.3510 电影史   760.3520 电影理论   760.3530 电影艺术   760.3599 电影其他学科

760.40 广播电视文艺

760.45 美术

  760.4510 美术史   760.4520 美术理论   760.4530 绘画艺术   760.4540 雕塑艺术

  760.4599 美术其他学科

760.50 工艺美术

  760.5010 工艺美术史   760.5020 工艺美术理论   760.5030 环境艺术   760.5099 工艺美术其他学科

760.55 书法

  760.5510 书法史   760.5520 书法理论   760.5599 书法其他学科

760.60 摄影

  760.6010 摄影史   760.6020 摄影理论   760.6099 摄影其他学科

760.99 艺术学其他学科  

770 历史学
770.10 史学史

770.15 史学理论

770.20 历史文献学

770.25 中国通史

770.30 中国古代史

  770.3010 先秦史   770.3015 秦汉史   770.3020 魏晋南北朝史   770.3025 隋唐五代十国史

  770.3030 宋史   770.3035 辽金史   770.3040 元史   770.3045 明史

  770.3050 清史   770.3055 中国古文字(包括甲骨文、金文等)   770.3060 中国古代契约文书(包括敦煌学、明清契约文书研究、鱼鳞册研究等)

  770.3099 中国古代史其他学科

770.35 中国近代史、现代史

  770.3510 鸦片战争史   770.3515 太平天国史   770.3520 洋务运动史   770.3525 戊戌政变史

  770.3530 义和团运动史   770.3535 辛亥革命史   770.3540 五四运动史   770.3545 新民主主义革命史

  770.3550 中国共产党史   770.3555 中国国民党史   770.3560 中国民主党派史   770.3565 中华民国史

  770.3570 中华人民共和国史   770.3599 中国近代史、现代史其他学科

770.40 世界通史

  770.4010 原始社会史   770.4020 世界古代史   770.4030 世界中世纪史   770.4040 世界近代史

  770.4050 世界现代史   770.4099 世界通史其他学科

770.45 亚洲史

  770.4510 日本史   770.4520 印度史   770.4530 东南亚史   770.4540 南亚史

  770.4550 中亚史   770.4560 西亚史   770.4599 亚洲史其他学科

770.50 非洲史

  770.5010 北非史   770.5020 撒哈拉以南非洲史   770.5030 埃及史   770.5040 南非联邦史

  770.5099 非洲史其他学科

770.55 美洲史

  770.5510 美洲古代文明史   770.5520 美国史   770.5530 加拿大史   770.5540 拉丁美洲史

  770.5599 美洲史其他学科

770.60 欧洲史

  770.6010 俄国史(包括原苏联史)   770.6020 英国史   770.6030 法国史   770.6040 德国史

  770.6050 意大利史   770.6060 西班牙史   770.6070 东欧国家史   770.6080 北欧国家史

  770.6099 欧洲史其他学科

770.65 澳洲、大洋洲史

770.70 专门史

  770.7010 政治史   770.7015 思想史   770.7020 文化史   770.7025 科技史

  770.7030 社会史   770.7035 城市史   770.7040 中外文化交流史   770.7045 历史地理学

  770.7050 方志学   770.7055 人物研究   770.7060 谱牒学   770.7099 专门史其他学科

770.99 历史学其他学科  

780 考古学
780.10 考古理论

780.20 考古学史

780.30 考古技术

  780.3010 考古发掘   780.3020 考古修复   780.3030 考古年代测定   780.3099 考古技术其他学科

780.40 中国考古

  780.4010 旧石器时代考古   780.4020 新石器时代考古   780.4030 商周考古   780.4040 秦汉考古

  780.4050 三国两晋、南北朝、隋唐考古   780.4060 宋元明考古   780.4099 中国考古其他学科

780.50 外国考古

  780.5010 亚洲考古   780.5020 欧洲考古   780.5030 非洲考古   780.5040 美洲考古

  780.5050 大洋洲考古   780.5099 外国考古其他学科

780.60 专门考古

  780.6010 金石学   780.6020 铭刻学   780.6030 甲骨学   780.6040 古钱学

  780.6050 美术考古   780.6060 宗教考古   780.6070 水下考古   780.6099 专门考古其他学科

780.99 考古学其他学科  

790 经济学
790.11 政治经济学

  790.1110 资本主义政治经济学   790.1120 社会主义政治经济学   790.1199 政治经济学其他学科

790.13 宏观经济学

790.15 微观经济学

790.17 比较经济学

790.19 经济地理学(包括工业地理学、农业地理学等)

790.21 发展经济学

790.23 生产力经济学

790.25 经济思想史

  790.2510 中国经济思想史   790.2520 外国经济思想史   790.2530 马克思主义经济思想史   790.2599 经济思想史其他学科

790.27 经济史

  790.2710 世界经济史   790.2720 中国经济史   790.2799 经济史其他学科

790.29 世界经济学(亦称国际经济学)

  790.2911 国际经济关系   790.2914 国际贸易学(包括国际市场营销学、国际商品学)   790.2917 国际货币经济学

  790.2921 国际金融学   790.2924 国际投资学   790.2927 国际收支理论   790.2931 美国经济

  790.2934 日本经济   790.2937 德国经济   790.2941 法国经济   790.2944 英国经济

  790.2947 俄罗斯经济   790.2951 欧洲经济   790.2954 北美经济   790.2957 亚太经济

  790.2961 拉美经济   790.2964 非洲经济   790.2967 中亚、西亚经济   790.2971 世界经济统计

  790.2999 世界经济学其他学科

790.31 国民经济学

  790.3110 国民经济计划学   790.3120 区域经济学   790.3130 消费经济学   790.3140 投资经济学

  790.3199 国民经济学其他学科

790.33 管理经济学

790.35 数量经济学

  790.3510 数理经济学   790.3520 经济计量学   790.3599 数量经济学其他学科

790.37 会计学

  790.3710 工业会计学   790.3720 农业会计学   790.3730 商业会计学   790.3740 银行会计学

  790.3750 交通运输会计学   790.3799 会计学其他学科

790.39 审计学

790.41 技术经济学

  790.4110 工程经济学   790.4115 工业技术经济学   790.4120 农业技术经济学   790.4125 能源技术经济学

  790.4130 交通运输技术经济学   790.4135 建筑技术经济学   790.4140 商业与物流技术经济学   790.4145 技术进步经济学

  790.4150 资源开发利用技术经济学   790.4155 环境保护技术经济学   790.4160 生产力布局技术经济学   790.4165 消费技术经济学

  790.4199 技术经济学其他学科

790.43 生态经济学

  790.4310 森林生态经济学   790.4320 草原生态经济学   790.4330 水域生态经济学   790.4340 城市生态经济学

  790.4350 区域生态经济学   790.4399 生态经济学其他学科

790.45 劳动经济学

  790.4510 就业经济学(包括劳动市场经济学)   790.4520 劳动管理学   790.4530 劳动统计学   790.4540 劳动社会学

  790.4550 劳动心理学   790.4560 劳动经济史   790.4599 劳动经济学其他学科

790.47 城市经济学

  790.4710 城市经济管理学   790.4720 城市土地经济学   790.4730 市政经济学   790.4740 住宅经济学

  790.4750 城郊经济学   790.4799 城市经济学其他学科

790.49 资源经济学

  790.4910 海洋资源经济学   790.4920 生物资源经济学   790.4930 矿产资源经济学   790.4940 能源经济学

  790.4950 资源开发与利用   790.4999 资源经济学其他学科

790.51 环境经济学

790.53 物资经济学

  790.5310 物资经济理论   790.5320 物资管理学   790.5399 物资经济学其他学科

790.55 工业经济学

  790.5510 工业发展经济学   790.5520 工业企业经营管理学   790.5530 工业经济地理   790.5540 工业部门经济学

  790.5550 工业经济史   790.5599 工业经济学其他学科

790.57 农村经济学

  790.5710 农村宏观经济学   790.5720 农村产业经济学   790.5730 农村区域经济学   790.5799 农村经济学其他学科

790.59 农业经济学

  790.5910 农业生态经济学   790.5920 农业生产经济学   790.5930 土地经济学(包括国土经济学、农业资源经济学等)

  790.5940 农业经济史   790.5950 农业企业经营管理   790.5960 合作经济

  790.5970 世界农业经济   790.5980 种植业经济学   790.5999 农业经济学其他学科

790.61 交通运输经济学

  790.6110 城市运输经济学   790.6120 铁路运输经济学   790.6130 航空运输经济学   790.6140 公路运输经济学

  790.6150 水路运输经济学   790.6160 综合运输经济学   790.6199 交通运输经济学其他学科

790.63 商业经济学

  790.6310 商业经济学原理   790.6315 商业企业管理学   790.6320 商品流通经济学   790.6325 市场学

  790.6330 商业心理学   790.6335 商业社会学   790.6340 商品学(包括商品包装与技术)   790.6345 商业物流学

  790.6350 商业经济史   790.6355 广告学   790.6360 服务经济学   790.6399 商业经济学其他学科

790.65 价格学

  790.6510 价格学原理   790.6520 部门价格学   790.6530 广义价格学   790.6540 成本管理学

  790.6550 价格史   790.6560 比较价格学   790.6599 价格学其他学科

790.67 旅游经济学

  790.6710 旅游经济学理论   790.6720 旅游经济管理学   790.6730 旅游企业管理学   790.6740 旅游事业史

  790.6799 旅游经济学其他学科

790.69 信息经济学

790.71 财政学

  790.7110 理论财政学   790.7120 资本主义财政学   790.7130 社会主义财政学   790.7140 比较财政学

  790.7150 财政思想史   790.7160 财政史   790.7170 财政管理学   790.7180 税务管理学

  790.7199 财政学其他学科

790.73 货币银行学

  790.7310 货币理论   790.7315 货币学说史   790.7320 银行学   790.7325 银行经营管理学

  790.7330 信贷理论   790.7335 投资理论   790.7340 金融市场   790.7345 农村金融学

  790.7350 金融史、银行史   790.7399 货币银行学其他学科

790.75 保险学

  790.7510 保险管理   790.7599 保险学其他学科

790.77 国防经济学

790.99 经济学其他学科  

810 政治学
810.10 政治学理论

  810.1010 比较政治学   810.1020 政治社会学   810.1030 政治心理学   810.1040 地缘政治学

  810.1050 中外政治学说史   810.1099 政治学理论其他学科

810.20 政治制度

  810.2010 政治制度理论   810.2015 议会制度   810.2020 行政制度   810.2025 司法制度

  810.2030 政党制度   810.2035 选举制度   810.2040 中国政治制度   810.2045 外国政治制度

  810.2050 比较政治制度   810.2055 中国政治制度史   810.2060 外国政治制度史   810.2099 政治制度其他学科

810.30 行政学

  810.3010 行政理论   810.3020 行政组织   810.3030 人事行政   810.3040 财务行政

  810.3050 行政决策   810.3099 行政学其他学科

810.40 国际政治学

  810.4011 国际关系理论   810.4014 国际关系史   810.4017 国际组织   810.4021 外交学

  810.4024 外交史   810.4027 国际比较政治   810.4031 美国政治   810.4034 英国政治

  810.4037 法国政治   810.4041 德国政治   810.4044 日本政治   810.4047 俄罗斯政治

  810.4051 欧洲政治   810.4054 北美政治   810.4057 亚太政治   810.4061 拉美政治

  810.4064 非洲政治   810.4067 中亚、西亚政治   810.4099 国际政治学其他学科

810.99 政治学其他学科  

820 法学
820.10 理论法学

  820.1010 法理学   820.1020 法哲学   820.1030 比较法学   820.1040 法社会学

  820.1050 立法学   820.1060 法律逻辑学   820.1070 法律教育学   820.1080 法律心理学(包括犯罪心理学)

  820.1099 理论法学其他学科

820.20 法律史学

  820.2010 中国法律思想史   820.2020 外国法律思想史   820.2030 法律制度史   820.2099 法律史学其他学科

820.30 部门法学

  820.3010 宪法学   820.3015 行政法学   820.3020 民法学   820.3025 经济法学

  820.3030 劳动法学   820.3035 婚姻法学   820.3040 民事诉讼法学   820.3045 行政诉讼法学

  820.3050 刑事诉讼法学   820.3055 刑法学   820.3060 刑事侦查学   820.3065 司法鉴定学

  820.3070 军事法学   820.3075 环境法学   820.3080 安全法学   820.3085 知识产权法学

  820.3099 部门法学其他学科

820.40 国际法学

  820.4010 国际公法学   820.4020 国际私法学   820.4030 国际刑法学   820.4040 国际经济法学

  820.4050 国际环境法学   820.4060 国际知识产权法学   820.4099 国际法学其他学科

820.99 法学其他学科

830 军事学
830.10 军事理论

  830.1010 马、恩、列、斯军事理论   830.1020 毛泽东军事思想   830.1099 军事理论其他学科

830.15 军事史

  830.1510 中国古代战争史   830.1520 中国近代战争史   830.1530 中国现代战争史   830.1540 世界战争史

  830.1550 军事思想史   830.1560 军事技术史   830.1599 军事史其他学科

830.20 军事心理学

830.25 战略学

  830.2510 战略学理论   830.2520 核战略学   830.2599 战略学其他学科

830.30 战役学

  830.3010 合同战役学   830.3020 海军战役学   830.3030 空军战役学   830.3040 导弹部队战役学

  830.3050 陆军战役学(包括炮兵战役学、装甲兵战役学)   830.3099 战役学其他学科

830.35 战术学

  830.3510 合同战术学   830.3520 陆军战术学(包括炮兵战术学、装甲兵战术学、工程兵战术学、通信兵战术学、防化兵战术学等)

  830.3530 海军战术学   830.3540 空军战术学   830.3550 导弹部队战术学   830.3599 战术学其他学科

830.40 军队指挥学

  830.4010 作战指挥   830.4020 军事系统工程(亦称军事运筹学)   830.4030 军事通信学

  830.4040 军事情报学   830.4050 密码学   830.4099 军队指挥学其他学科

830.45 军制学

  830.4510 军事组织体制   830.4520 军事装备学   830.4530 军队管理学   830.4599 军制学其他学科

830.50 军队政治工作学

  830.5010 军队思想教育工作学   830.5020 军队组织工作学   830.5099 军队政治工作学其他学科

830.55 军事后勤学

  830.5510 后勤组织指挥   830.5520 后方专业勤务   830.5599 军事后勤学其他学科

830.60 军事地学

  830.6010 中国军事地理   830.6020 世界军事地理   830.6030 军事地形学   830.6040 军事测绘学

  830.6050 军事气象学   830.6060 军事水文学   830.6099 军事地学其他学科

830.65 军事技术

830.99 军事学其他学科

840 社会学
840.11 社会学史

  840.1110 中国社会学史   840.1120 外国社会学史   840.1199 社会学史其他学科

840.14 社会学理论

  840.1410 社会学原理   840.1420 社会思想史   840.1499 社会学理论其他学科

840.17 社会学方法

  840.1710 社会调查方法   840.1799 社会学方法其他学科

840.21 实验社会学

840.24 数理社会学

840.27 应用社会学

  840.2711 职业社会学   840.2714 工业社会学   840.2717 医学社会学   840.2727 城市社会学

  840.2731 农村社会学   840.2734 环境社会学   840.2737 家庭社会学   840.2741 青年社会学

  840.2744 老年社会学   840.2747 犯罪社会学   840.2751 越轨社会学   840.2754 妇女问题研究

  840.2757 种族问题研究   840.2761 社会问题研究   840.2764 社会群体及分层问题研究   840.2767 社区研究

  840.2771 社会保障研究   840.2774 社会工作   840.2799 应用社会学其他学科

840.31 比较社会学

840.34 社会地理学

840.37 文化社会学

  840.3710 艺术社会学   840.3720 知识社会学   840.3730 道德社会学   840.3799 文化社会学其他学科

840.41 历史社会学

840.44 经济社会学

840.47 军事社会学

840.51 社会心理学

  840.5110 社会心理学史   840.5120 社会心理学理论与研究方法   840.5130 实验社会心理学   840.5199 社会心理学其他学科

840.54 公共关系学

840.57 社会人类学

840.61 组织社会学

840.64 发展社会学

840.67 福利社会学

840.71 人口学

  840.7110 人口学原理   840.7115 人口经济学   840.7120 人口社会学(包括老年人口学、妇女人口学、发展人口学等)

  840.7125 人口学说史   840.7130 人口史   840.7135 人口地理学   840.7140 人口生态学

  840.7145 区域人口学   840.7150 人口系统工程   840.7155 人口预测学   840.7160 人口规划学

  840.7165 人口政策学   840.7170 计划生育学   840.7199 人口学其他学科

840.99 社会学其他学科

850 民族学
850.10 民族问题理论

  850.1010 民族问题与民族政策   850.1020 民族关系   850.1030 民族经济   850.1040 民族教育

  850.1050 民族法制   850.1060 民族心理学   850.1070 少数民族政治制度   850.1099 民族问题理论其他学科

850.20 民族史学

  850.2010 民族史   850.2020 民族关系史   850.2099 民族史学其他学科

850.30 蒙古学

850.40 藏学

850.50 文化人类学与民俗学

850.60 世界民族研究

850.99 民族学其他学科

860 新闻学与传播学
860.10 新闻理论

  860.1010 新闻学   860.1015 马克思主义新闻理论   860.1020 西方新闻理论   860.1025 新闻法

  860.1030 舆论学   860.1035 新闻伦理学   860.1040 新闻社会学   860.1045 新闻心理学

  860.1050 比较新闻学   860.1099 新闻理论其他学科

860.20 新闻史

  860.2010 中国新闻事业史   860.2020 世界新闻事业史   860.2030 新闻思想史   860.2099 新闻史其他学科

860.30 新闻业务

  860.3010 新闻采访   860.3020 新闻写作   860.3030 新闻编辑   860.3040 新闻评论

  860.3050 新闻摄影   860.3099 新闻业务其他学科

860.40 新闻事业经营管理

860.50 广播与电视

  860.5010 广播电视史   860.5020 广播电视理论   860.5030 广播电视业务(包括广播电视采访、写作、编辑等)

  860.5040 广播电视播音   860.5099 广播与电视其他学科

860.60 传播学

  860.6010 传播史   860.6020 传播理论   860.6030 传播技术   860.6040 组织传播学

  860.6099 传播学其他学科

860.99 新闻学与传播学其他学科

870 图书馆、情报与文献学
870.10 图书馆学

  870.1010 图书馆学史(包括图书馆事业史)   870.1015 比较图书馆学   870.1020 图书馆社会学

  870.1025 图书馆管理学(包括图书馆统计学、图书馆经济学等)   870.1030 图书馆建筑学   870.1035 图书采访学   870.1040 图书分类学

  870.1045 图书编目学(包括目录组织法、文献著录方法、计算机编目等)   870.1050 目录学(包括普通目录学、专科目录、目录学史等)

  870.1055 图书馆服务学(包括读者心理学、读者咨询学等)   870.1099 图书馆学其他学科

870.20 文献学

  870.2010 文献类型学   870.2020 文献计量学   870.2030 文献检索学   870.2040 图书史

  870.2050 版本学   870.2060 校勘学   870.2099 文献学其他学科

870.30 情报学

  870.3010 情报学史(包括情报事业史)   870.3015 情报社会学   870.3020 比较情报学   870.3025 情报计量学

  870.3030 情报心理学   870.3035 情报管理学   870.3040 情报服务学(包括情报用户研究等)   870.3045 情报经济学

  870.3050 情报检索学(包括情报检索语言等)   870.3055 情报系统理论(包括情报系统分析与设计、情报网络建设理论等)

  870.3060 情报技术   870.3065 科学技术情报学   870.3070 社会科学情报学   870.3099 情报学其他学科

870.40 档案学

  870.4010 档案学史(包括档案事业史)   870.4020 档案管理学   870.4030 档案保护技术学   870.4040 档案编纂学

  870.4099 档案学其他学科

870.50 博物馆学

870.99 图书馆、情报与文献学其他学科

880 教育学
880.11 教育史(包括中国教育史、外国教育史等)

880.14 教育学原理

880.17 教学论

880.21 德育原理

880.24 教育社会学

880.27 教育心理学

880.31 教育经济学

880.34 教育管理学

880.37 比较教育学

880.41 教育技术学

880.44 军事教育学

880.47 学前教育学

880.51 普通教育学(包括初等教育学、中等教育学等)

880.54 高等教育学

880.57 成人教育学

880.61 职业技术教育学

880.64 特殊教育学

880.99 教育学其他学科

890 体育科学
890.10 体育史

890.15 体育理论

890.20 运动生物力学(包括运动解剖学等)

890.25 运动生理学

890.30 运动心理学

890.35 运动生物化学

890.40 体育保健学

890.45 运动训练学

890.50 体育教育学

890.55 武术理论与方法

890.60 体育管理学

890.65 体育经济学

890.99 体育科学其他学科

910 统计学
910.10 统计学史

910.15 理论统计学

  910.1510 统计调查分析理沦   910.1520 统计核算理论   910.1530 统计监督理论   910.1540 统计预测理论

  910.1550 统计逻缉学   910.1599 理论统计学其他学科

910.20 统计法学

910.25 描述统计学

910.30 经济统计学

  910.3010 宏观经济统计学   910.3020 微观经济统计学   910.3099 经济统计学其他学科

910.35 科学技术统计学

910.40 社会统计学

  910.4010 教育统计学   910.4020 文化与体育统计学   910.4030 卫生统计学   910.4040 司法统计学

  910.4050 社会福利与社会保障统计学   910.4060 生活质量统计学   910.4099 社会统计学其他学科

910.45 人口统计学

910.50 环境与生态统计学

  910.5010 自然资源统计学   910.5020 环境统计学   910.5030 生态平衡统计学   910.5099 环境与生态统计学其他学科

910.55 国际统计学

  910.5510 国际标准分类统计学   910.5520 国际核算体系与方法论体系   910.5530 国际比较统计学   910.5599 国际统计学其他学科

910.99 统计学其他学科
!!中庸

  

  天命之谓性,率性之谓道,修道之谓教。道也者,不可须臾离也,可离非道也。是故君子戒慎乎其所不睹,恐惧乎其所不闻。莫见乎隐,莫显乎微,故君子慎其独也。喜怒哀乐之未发,谓之中;发而皆中节,谓之和;中也者,天下之大本也;和也者,天下之达道也。致中和,天地位焉,万物育焉。

  仲尼曰:“君子中庸,小人反中庸,君子之中庸也,君子而时中;小人之中庸也,小人而无忌惮也。”

  子曰:“中庸其至矣乎!民鲜能久矣!”

  子曰:“道之不行也,我知之矣:知者过之,愚者不及也。道之不明也,我知之矣:贤者过之,不肖者不及也。人莫不饮食也,鲜能知味也。”

  子曰:“道其不行矣夫!”

  子曰:“舜其大知也与!舜好问而好察迩言,隐恶而扬善,执其两端,用其中于民,其斯以为舜乎!”

  子曰:“人皆曰予知,驱而纳诸罟护陷阱之中,而莫之知辟也。人皆曰予知,择乎中庸,而不能期月守也。”

  子曰:“回之为人也,择乎中庸,得一善,则拳拳服膺弗失之矣。”

  子曰:“天下国家可均也,爵禄可辞也,白刃可蹈也,中庸不可能也。”

  子路问强。子曰:“南方之强与?北方之强与?抑而强与?宽柔以教,不报无道,南方之强也,君子居之。衽金革,死而不厌,北方之强也,而强者居之。

  故君子和而不流,强哉矫!中立而不倚,强哉矫!国有道,不变塞焉,强哉矫!国无道,至死不变,强哉矫!”

  子曰:“素隐行怪,后世有述焉,吾弗为之矣。君子遵道而行,半涂而废,吾弗能已矣。君子依乎中庸,遁世不见知而不悔,唯圣者能之。”

  君子之道费而隐。夫妇之愚,可以与知焉,及其至也,虽圣人亦有所不知焉。

  夫妇之不肖,可以能行焉;及其至也,虽圣人亦有所不能焉。天地之大也,人犹有所憾。故君子语大,天下莫能载焉;语小,天下莫能破焉。《诗》云:“鸢飞戾天,鱼跃于渊。”言其上下察也。君子之道,造端乎夫妇,及其至也,察乎天地。

  子曰:“道不远人,人之为道而远人,不可以为道。《诗》云:‘伐柯,伐柯,其则不远。’执柯以伐柯,睨而视之,犹以为远。故君子以人治人,改而止。

  忠恕违道不远,施诸己而不愿,亦勿施于人。君子之道四,丘未能一焉,所求乎子,以事父,未能也;所求乎臣,以事君,未能也;所求乎弟,以事兄,未能也;所求乎朋友,先施之,未能也。庸德之行,庸言之谨;有所不足,不敢不勉,有余不敢尽;言顾行,行顾言,君子胡不慥慥尔!”

  君子素其位而行,不愿乎其外。素富贵,行乎富贵;素贫贱,行乎贫贱;素夷狄,行乎夷狄;素患难行乎患难,君子无入而不自得焉。在上位不陵下,在下位不援上,正己而不求于人,则无怨。上不怨天,下不尤人。故君子居易以俟命。

  小人行险以徼幸。子曰:“射有似乎君子,失诸正鹄,反求诸其身。”

  君子之道,辟如行远必自迩,辟如登高必自卑。《诗》曰:“妻子好合,如鼓瑟琴。兄弟既翕,和乐且耽。宜尔室家,乐尔妻帑。”子曰:“父母其顺矣乎!”

  子曰:“鬼神之为德,其盛矣乎?!视之而弗见,听之而弗闻,体物而不可遗,使天下之人齐明盛服,以承祭祀。洋洋乎如在其上,如在其左右。《诗》曰:‘神之格思,不可度思!矧可射思!’夫微之显,诚之不可掩如此夫。”

  子曰:“舜其大孝也与!德为圣人,尊为天子,富有四海之内。宗庙飨之,子孙保之。故大德必得其位,必得其禄。必得其名,必得其寿,故天之生物,必因其材而笃焉。故栽者培之,倾者覆之。《诗》曰:‘嘉乐君子,宪宪令德。宜民宜人,受禄于天,保佑命之,自天申之。’故大德者必受命。”

  子曰:“无忧者,其惟文王乎!以王季为父,以武王为子,父作之,子述之。

  武王缵大王、王季、文王之绪,一戎衣而有天下。身不失天下之显名,尊为天子,富有四海之内。宗庙飨之,子孙保之。武王末受命,周公成文、武之德,追王大王、王季,上祀先公以天子之礼。斯礼也,达乎诸侯大夫,及士庶人。父为大夫,子为士,葬以大夫,祭以士。父为士,子为大夫,葬以士,祭以大夫。期之丧,达乎大夫。三年之丧,达乎天子。父母之丧,无贵贱,一也。”

  子曰:“武王、周公,其达孝矣乎!夫孝者,善继人之志,善述人之事者也。

  春秋修其祖庙,陈其宗器,设其裳衣,荐其时食。宗庙之礼,所以序昭穆也。序爵,所以辨贵贱也。序事,所以辨贤也。旅酬下为上,所以逮贱也。燕毛,所以序齿也。践其位,行其礼,奏其乐,敬其所尊,爱其所亲,事死如事生,事亡如事存,孝之至也。郊社之礼,所以事上帝也。宗庙之礼,所以祀乎其先也。明乎郊社之礼、禘尝之义,治国其如示诸掌乎!”

  哀公问政。子曰:“文武之政,布在方策。其人存,则其政举;其人亡,则其政息。人道敏政,地道敏树。夫政也者,蒲卢也。故为政在人,取人以身,修身以道,修道以仁。仁者人也。亲亲为大;义者宜也。尊贤为大。亲亲之杀,尊贤之等,礼所生也。在下位不获乎上,民不可得而治矣!故君子不可以不修身;思修身,不可以不事亲;思事亲,不可以不知人,思知人,不可以不知天。”

  “天下之达道五,所以行之者三。曰:君臣也,父子也,夫妇也,昆弟也,朋友之交也,五者天下之达道也。知,仁,勇,三者天下之达德也,所以行之者一也。或生而知之,或学而知之,或困而知之,及其知之,一也。或安而行之,或利而行之,或勉强而行之,及其成功,一也。子曰:好学近乎知,力行近乎仁,知耻近乎勇。知斯三者,则知所以修身;知所以修身,则知所以治人;知所以治人,则知所以治天下国家矣。”

  “凡为天下国家有九经,曰:修身也。尊贤也,亲亲也,敬大臣也,体群臣也。子庶民也,来百工也,柔远人也,怀诸侯也。修身则道立,尊贤则不惑,亲亲则诸父昆弟不怨,敬大臣则不眩,体群臣则士之报礼重,子庶民则百姓劝,来百工则财用足,柔远人则四方归之,怀诸侯则天下畏之。齐明盛服,非礼不动。

  所以修身也;去谗远色,贱货而贵德,所以劝贤也;尊其位,重其禄,同其好恶,所以劝亲亲也;官盛任使,所以劝大臣也;忠信重禄,所以劝士也;时使薄敛,所以劝百姓也;日省月试,既廪称事,所以劝百工也;送往迎来,嘉善而矜不能,所以柔远人也;继绝世,举废国,治乱持危。朝聘以时,厚往而薄来,所以怀诸侯也。凡为天下国家有九经,所以行之者一也。”

  “凡事豫则立,不豫则废。言前定则不跲,事前定则不困,行前定则不疚,道前定则不穷。在下位不获乎上,民不可得而治矣。获乎上有道,不信乎朋友,不获乎上矣;信乎朋友有道,不顺乎亲,不信乎朋友矣;顺乎亲有道,反诸身不诚,不顺乎亲矣;诚身有道,不明乎善,不诚乎身矣。诚者,天之道也;诚之者,人之道也。诚者不勉而中,不思而得,从容中道,圣人也。诚之者,择善而固执之者也。”

  “博学之,审问之,慎思之,明辨之,笃行之。有弗学,学之弗能,弗措也;有弗问,问之弗知,弗措也;有弗思,思之弗得,弗措也;有弗辨,辨之弗明,弗措也;有弗行,行之弗笃,弗措也。人一能之己百之,人十能之己千之。果能此道矣。虽愚必明,虽柔必强。”

  自诚明,谓之性。自明诚,谓之教。诚则明矣,明则诚矣。

  唯天下至诚,为能尽其性;能尽其性,则能尽人之性;能尽人之性,则能尽物之性;能尽物之性,则可以赞天地之化育;可以赞天地之化育,则可以与天地参矣。

  其次致曲。曲能有诚,诚则形,形则著,著则明,明则动,动则变,变则化。

  唯天下至诚为能化。

  至诚之道,可以前知。国家将兴,必有祯祥;国家将亡,必有妖孽。见乎蓍龟,动乎四体。祸福将至,善,必先知之;不善,必先知之。故至诚如神。

  诚者自成也,而道自道也。诚者物之终始,不诚无物。是故君子诚之为贵。

  诚者非自成己而已也,所以成物也。成己,仁也;成物,知也。性之德也,合外内之道也,故时措之宜也。

  故至诚无息。不息则久,久则征;征则悠远,悠远则博厚,博厚则高明。博厚,所以载物也;高明,所以覆物也;悠久,所以成物也。博厚配地,高明配天,悠久无疆。如此者,不见而章,不动而变,无为而成。天地之道,可一言而尽也。

  其为物不贰,则其生物不测。天地之道:博也,厚也,高也,明也,悠也,久也。

  今夫天,斯昭昭之多,及其无穷也,日月星辰系焉,万物覆焉。今夫地,一撮土之多。及其广厚,载华岳而不重,振河海而不泄,万物载焉。今夫山,一卷石之多,及其广大,草木生之,禽兽居之,宝藏兴焉,今夫水,一勺之多,及其不测,鼋、鼍、蛟龙、鱼鳖生焉,货财殖焉。《诗》曰:“惟天之命,于穆不已!”盖曰天之所以为天也。“于乎不显,文王之德之纯!”盖曰文王之所以为文也,纯亦不已。

  大哉!圣人之道洋洋乎!发育万物,峻极于天。优优大哉!礼仪三百,威仪三千。待其人然后行。故曰:苟不至德,至道不凝焉。故君子尊德性而道问学。

  致广大而尽精微。极高明而道中庸。温故而知新,敦厚以崇礼。是故居上不骄,为下不倍;国有道,其言足以兴;国无道,其默足以容。《诗》曰:“既明且哲,以保其身。”其此之谓与!子曰:“愚而好自用,贱而好自专,生乎今之世,反古之道:如此者,灾及其身者也。”非天子,不议礼,不制度,不考文。今天下车同轨,书同文,行同伦。虽有其位,苟无其德,不敢作礼乐焉;虽有其德。苟无其位,亦不敢作礼乐焉。子曰:“吾说夏礼,杞不足徵也。吾学殷礼,有宋存焉。吾学周礼,今用之,吾从周。”

  王天下有三重焉,其寡过矣乎!上焉者虽善无徵,无徵不信,不信民弗从;下焉者虽善不尊,不尊不信,不信民弗从。故君子之道:本诸身,徵诸庶民,考诸三王而不缪,建诸天地而不悖,质诸鬼神而无疑,百世以俟圣人而不惑。质诸鬼神而无疑,知天也;百世以俟圣人而不惑,知人也。是故君子动而世为天下道,行而世为天下法,言而世为天下则。远之则有望,近之则不厌。《诗》曰:“在彼无恶,在此无射。庶几夙夜,以永终誉!”君子未有不如此而蚤有誉于天下者也。

  仲尼祖述尧舜,宪章文武:上律天时,下袭水土。辟如天地之无不持载,无不覆帱,辟如四时之错行,如日月之代明。万物并育而不相害,道并行而不相悖,小德川流,大德敦化,此天地之这所以为大也。

  唯天下至圣为能聪明睿知,足以有临也;宽裕温柔,足以有容也;发强刚毅,足以有执也;齐庄中正,足以有敬也;文理密察,足以有别也。溥博渊泉,而时出之。溥博如天,渊泉如渊。见而民莫不敬,言而民莫不信,行而民莫不说。是以声名洋溢乎中国,施及蛮貊。舟车所至,人力所通,天之所覆,地之所载,日月所照,霜露所队,凡有血气者,莫不尊亲,故曰配天。

  唯天下至诚,为能经纶天下之大经,立天下之大本,知天地之化育。夫焉有所倚?肫肫其仁!渊渊其渊!浩浩其天!苟不固聪明圣知达天德者,其孰能知之?《诗》曰:“衣锦尚絅”,恶其文之著也。故君子之道,暗然而日章;小人之道,的然而日亡。君子之道:淡而面不厌,简而文,温而理,知远之近,知风之自,知微之显,可与入德矣。《诗》云:“潜虽伏矣,亦孔之昭!”故君子内省不疚,无恶于志。君子所不可及者,其唯人之所不见乎!《诗》云:“相在尔室,尚不愧于屋漏。”故君子不动而敬,不言而信。《诗》曰:“奏假无言,时靡有争。”是故君子不赏而民劝,不怒而民威于鈇钺。《诗》曰:“不显惟德!百辟其刑之。”是故君子笃恭而天下平。《诗》云:“予怀明德,不大声以色。”

  子曰:“声色之于以化民。末也。”《诗》曰:“德輶如毛。”毛犹有伦,上天之载,无声无臭,至矣!
  

  《礼记仲尼燕居》

  

  仲尼燕居,子张、子贡、言游侍,纵言至于礼,子曰:“居,女三人者,吾语女礼!使女以礼周流,无不遍也。”子贡越席而对曰:“敢问何如?”子曰:“敬而不中礼谓之野,恭而不中礼谓之给,勇而不中礼谓之逆。”子曰:“给夺慈仁。”

  

  子曰:“师,尔过,而商也不及。子产犹众人之母也,能食之,不能教也。”子贡越席而对曰:“敢问将何以为此中者也?”子曰:“礼乎礼。夫礼所以制中也。”子贡退,言游进曰:“敢问礼也者,领恶而全好者与?”子曰:“然。”“然则何如?”子曰:“郊社之义,所以仁鬼神也;尝禘之礼,所以仁昭穆也;馈奠之礼,所以仁死丧也;射乡之礼,所以仁乡党也;食飨之礼,所以仁宾客也。”子曰:“明乎郊社之义、尝禘之礼,治国其如指诸掌而已乎?是故以之居处有礼,故长幼辨也;以之闺门之内有礼,故三族和也;以之朝廷有礼,故官爵序也;以之田猎有礼,故戎事闲也;以之军旅有礼,故武功成也。是故宫室得其度,量鼎得其象,味得其时,乐得其节,车得其式,鬼神得其飨,丧纪得其哀,辨说得其党,官得其体,政事得其施,加于身而错于前,凡众之动得其宜。”

  

  子曰:“礼者何也?即事之治也。君子有其事,必有其治。治国而无礼,譬犹瞽之无相与,伥伥乎其何之?譬如终夜有求于幽室之中,非烛何见?若无礼,则手足无所错,耳目无所加,进退揖让无所制。是故以之居处,长幼失其别,闺门三族失其和,朝廷官爵失其序,田猎戎事失其策,军旅武功失其制,宫室失其度,量鼎失其象,味失其时,乐失其节,车失其式,鬼神失其飨,丧纪失其哀,辨说失其党,官失其体,政事失其施,加于身而错于前,凡众之动失其宜。如此则无以祖洽于众也。”

  

  子曰:“慎听之,女三人者,吾语女礼!犹有九焉,大飨有四焉。知此矣,虽在畎亩之

  

  中事之,圣人已。两君相见,揖让而入门,入门而县兴,揖让而升堂,升堂而乐阕。下管象武,夏钥序兴,陈其荐俎,序其礼乐,备其百官,如此而后君子知仁焉。行中规,还中矩,和鸾中采齐。客出以雍,彻以振羽。是故君子无物而不在礼矣。入门而金作,示情也。升歌清庙,示德也。下而管象,示事也。是故古之君子,不必亲相与言也,以礼乐相示而已。”

  

  子曰:“礼也者,理也;乐也者,节也。君子无理不动,无节不作。不能诗,于礼缪;不能乐,于礼素;薄于德,于礼虚。”子曰:“制度在礼,文为在礼,行之其在人乎!”子贡越席而对曰:“敢问夔其穷与?”子曰:“古之人与?古之人也。达于礼而不达于乐谓之素,达于乐而不达于礼谓之偏。夫夔达于乐而不达于礼,是以传于此名也。古之人也。”

  

  子张问政,子曰:“师乎,前,吾语女乎!君子明于礼乐,举而错之而已。”子张复问,子曰:“师,尔以为必铺几筵、升降酌献酬酢然后谓之礼乎?尔以为必行缀兆、兴羽钥、作钟鼓然后谓之乐乎?言而履之,礼也;行而乐之,乐也。君子力此二者,以南面而立,夫是以天下大平也,诸侯朝,万物服体,而百官莫敢不承事矣。礼之所兴,众之所治也;礼之所废,众之所乱也。目巧之室,则有奥阼,席则有上下,车则有左右,行则有随,立则有序,古之义也。室而无奥阼,则乱于堂室也;席而无上下,则乱于席上也;车而无左右,则乱于车也;行而无随,则乱于涂也;立而无序,则乱于位也。昔圣帝明王诸侯,辨贵贱、长幼、远近、男女、外内,莫敢相踰越,皆由此涂出也。”三子者既得闻此言也,于夫子昭然若发蒙矣。

  
  !!周书 泰誓上第一

  惟十有一年,武王伐殷。一月戊午,师渡孟津,作《泰誓》三篇。

  惟十有三年春,大会于孟津。

  王曰:“嗟!我友邦冢君越我御事庶士,明听誓。惟天地万物父母,惟人万物之灵。亶聪明,作元后,元后作民父母。今商王受,弗敬上天,降灾下民。沈湎冒色,敢行暴虐,罪人以族,官人以世,惟宫室、台榭、陂池、侈服,以残害于尔万姓。焚炙忠良,刳剔孕妇。皇天震怒,命我文考,肃将天威,大勋未集。

  肆予小子发,以尔友邦冢君,观政于商。惟受罔有悛心,乃夷居,弗事上帝神祗,遗厥先宗庙弗祀。犠牲粢盛,既于凶盗。乃曰:‘吾有民有命!’罔惩其侮。天佑下民,作之君,作之师,惟其克相上帝,宠绥四方。有罪无罪,予曷敢有越厥志?同力,度德;同德,度义。受有臣亿万,惟亿万心;予有臣三千,惟一心。

  商罪贯盈,天命诛之。予弗顺天,厥罪惟钧。予小子夙夜祗惧,受命文考,类于上帝,宜于冢土,以尔有众,厎天之罚。天矜于民,民之所欲,天必从之。尔尚弼予一人,永清四海,时哉弗可失!”

  !!周书 泰誓中第二

  惟戊午,王次于河朔,群后以师毕会。王乃徇师而誓曰:“呜呼!西土有众,咸听朕言。我闻吉人为善,惟日不足。凶人为不善,亦惟日不足。今商王受,力行无度,播弃犁老,昵比罪人。淫酗肆虐,臣下化之,朋家作仇,胁权相灭。无辜吁天,秽德彰闻。惟天惠民,惟辟奉天。有夏桀弗克若天,流毒下国。天乃佑命成汤,降黜夏命。惟受罪浮于桀。剥丧元良,贼虐谏辅。谓己有天命,谓敬不足行,谓祭无益,谓暴无伤。厥监惟不远,在彼夏王。天其以予乂民,朕梦协朕卜,袭于休祥,戎商必克。受有亿兆夷人,离心离德。予有乱臣十人,同心同德。

  虽有周亲,不如仁人。天视自我民视,天听自我民听。百姓有过,在予一人,今朕必往。我武维扬,侵于之疆,取彼凶残。我伐用张,于汤有光。勖哉夫子!罔或无畏,宁执非敌。百姓懔懔,若崩厥角。呜呼!乃一德一心,立定厥功,惟克永世。”

  !!周书 泰誓下第三

  时厥明,王乃大巡六师,明誓众士。

  王曰:“呜呼!我西土君子。天有显道,厥类惟彰。今商王受,狎侮五常,荒怠弗敬。自绝于天,结怨于民。斫朝涉之胫,剖贤人之心,作威杀戮,毒痡四海。崇信奸回,放黜师保,屏弃典刑,囚奴正士,郊社不修,宗庙不享,作奇技淫巧以悦妇人。上帝弗顺,祝降时丧。尔其孜孜,奉予一人,恭行天罚。古人有言曰:‘抚我则后,虐我则仇。’独夫受洪惟作威,乃汝世仇。树德务滋,除恶务本,肆予小子诞以尔众士,殄歼乃仇。尔众士其尚迪果毅,以登乃辟。功多有厚赏,不迪有显戮。呜呼!惟我文考若日月之照临,光于四方,显于西土。惟我有周诞受多方。予克受,非予武,惟朕文考无罪;受克予,非朕文考有罪,惟予小子无良。”

  !!周书 牧誓第四

  武王戎车三百两,虎贲三百人,与受战于牧野,作《牧誓》。

  时甲子昧爽,王朝至于商郊牧野,乃誓。

  王左杖黄钺,右秉白旄以麾,曰:“逖矣,西土之人!”王曰:“嗟!我友邦冢君御事,司徒、司马、司空,亚旅、师氏,千夫长、百夫长,及庸,蜀、羌、髳、微、卢、彭、濮人。称尔戈,比尔干,立尔矛,予其誓。”

  王曰:“古人有言曰:‘牝鸡无晨;牝鸡之晨,惟家之索。’今商王受惟妇言是用,昏弃厥肆祀弗答,昏弃厥遗王父母弟不迪,乃惟四方之多罪逋逃,是崇是长,是信是使,是以为大夫卿士。俾暴虐于百姓,以奸宄于商邑。今予发惟恭行天之罚。

  今日之事,不愆于六步、七步,乃止齐焉。勖哉夫子!不愆于四伐、五伐、六伐、七伐,乃止齐焉。勖哉夫子!尚桓桓如虎、如貔、如熊、如罴,于商郊弗迓克奔,以役西土,勖哉夫子!尔所弗勖,其于尔躬有戮!”

  !!周书 武成第五

  武王伐殷。往伐归兽,识其政事,作《武成》。

  惟一月壬辰,旁死魄。越翼日,癸巳,王朝步自周,于征伐商。

  厥四月,哉生明,王来自商,至于丰。乃偃武修文,归马于华山之阳,放牛于桃林之野,示天下弗服。

  丁未,祀于周庙,邦甸、侯、卫,骏奔走,执豆、笾。越三日,庚戌,柴、望,大告武成。

  既生魄,庶邦冢君暨百工,受命于周。

  王若曰:“呜呼,群后!惟先王建邦启土,公刘克笃前烈,至于大王肇基王迹,王季其勤王家。我文考文王克成厥勋,诞膺天命,以抚方夏。大邦畏其力,小邦怀其德。惟九年,大统未集,予小子其承厥志。厎商之罪,告于皇天、后土、所过名山、大川,曰:‘惟有道曾孙周王发,将有大正于商。今商王受无道,暴殄天物,害虐烝民,为天下逋逃主,萃渊薮。予小子既获仁人,敢祗承上帝,以遏乱略。华夏蛮貊,罔不率俾。恭天成命,肆予东征,绥厥士女。惟其士女,篚厥玄黄,昭我周王。天休震动,用附我大邑周。惟尔有神,尚克相予以济兆民,无作神羞!既戊午,师逾孟津。癸亥,陈于商郊,俟天休命。甲子昧爽,受率其旅若林,会于牧野。罔有敌于我师,前徒倒戈,攻于后以北,血流漂杵。一戎衣,天下大定。乃反商政,政由旧。释箕子囚,封比干墓,式商容闾。散鹿台之财,发钜桥之粟,大赉于四海,而万姓悦服。”

  列爵惟五,分土惟三。建官惟贤,位事惟能。重民五教,惟食、丧、祭。惇信明义,崇德报功。垂拱而天下治。

  !!周书 洪范第六

  武王胜殷,杀受,立武庚,以箕子归。作《洪范》。

  惟十有三祀,王访于箕子。王乃言曰:“呜呼!箕子。惟天阴骘下民,相协厥居,我不知其彝伦攸叙。”

  箕子乃言曰:“我闻在昔,鲧堙洪水,汩陈其五行。帝乃震怒,不畀‘洪范’九畴,彝伦攸斁。鲧则殛死,禹乃嗣兴,天乃锡禹‘洪范’九畴,彝伦攸叙。

  初一曰五行,次二曰敬用五事,次三曰农用八政,次四曰协用五纪,次五曰建用皇极,次六曰乂用三德,次七曰明用稽疑,次八曰念用庶征,次九曰向用五福,威用六极。

  一、五行:一曰水,二曰火,三曰木,四曰金,五曰土。水曰润下,火曰炎上,木曰曲直,金曰从革,土爰稼穑。润下作咸,炎上作苦,曲直作酸,从革作辛,稼穑作甘。

  二、五事:一曰貌,二曰言,三曰视,四曰听,五曰思。貌曰恭,言曰从,视曰明,听曰聪,思曰睿。恭作肃,从作乂,明作晢,聪作谋,睿作圣。

  三、八政:一曰食,二曰货,三曰祀,四曰司空,五曰司徒,六曰司寇,七曰宾,八曰师。

  四、五纪:一曰岁,二曰月,三曰日,四曰星辰,五曰历数。

  五、皇极:皇建其有极。敛时五福,用敷锡厥庶民。惟时厥庶民于汝极。锡汝保极:凡厥庶民,无有淫朋,人无有比德,惟皇作极。凡厥庶民,有猷有为有守,汝则念之。不协于极,不罹于咎,皇则受之。而康而色,曰:‘予攸好德。’汝则锡之福。时人斯其惟皇之极。无虐茕独而畏高明,人之有能有为,使羞其行,而邦其昌。凡厥正人,既富方谷,汝弗能使有好于而家,时人斯其辜。于其无好德,汝虽锡之福,其作汝用咎。无偏无陂,遵王之义;无有作好,遵王之道;无有作恶,尊王之路。无偏无党,王道荡荡;无党无偏,王道平平;无反无侧,王道正直。会其有极,归其有极。曰:皇,极之敷言,是彝是训,于帝其训,凡厥庶民,极之敷言,是训是行,以近天子之光。曰:天子作民父母,以为天下王。

  六、三德:一曰正直,二曰刚克,三曰柔克。平康,正直;强弗友,刚克;燮友,柔克。沈潜,刚克;高明,柔克。惟辟作福,惟辟作威,惟辟玉食。臣无有作福、作威、玉食。臣之有作福、作威、玉食,其害于而家,凶于而国。人用侧颇僻,民用僣忒。

  七、稽疑:择建立卜筮人,乃命卜筮。曰雨,曰霁,曰蒙,曰驿,曰克,曰贞,曰悔,凡七。卜五,占用二,衍忒。立时人作卜筮,三人占,则从二人之言。

  汝则有大疑,谋及乃心,谋及卿士,谋及庶人,谋及卜筮。汝则从,龟从,筮从,卿士从,庶民从,是之谓大同。身其康强,子孙其逢吉,汝则从,龟从,筮从,卿士逆,庶民逆吉。卿士从,龟从,筮从,汝则逆,庶民逆,吉。庶民从,龟从,筮从,汝则逆,卿士逆,吉。汝则从,龟从,筮逆,卿士逆,庶民逆,作内吉,作外凶。龟筮共违于人,用静吉,用作凶。

  八、庶征:曰雨,曰旸,曰燠,曰寒,曰风。曰时五者来备,各以其叙,庶草蕃庑。一极备,凶;一极无,凶。曰休征;曰肃,时寒若;曰乂,时旸若;曰晢,时燠若;曰谋,时寒若;曰圣,时风若。曰咎征:曰狂,恒雨若;曰僣,恒旸若;曰豫,恒燠若;曰急,恒寒若;曰蒙,恒风若。曰王省惟岁,卿士惟月,师尹惟日。岁月日时无易,百谷用成,乂用明,俊民用章,家用平康。日月岁时既易,百谷用不成,乂用昏不明,俊民用微,家用不宁。庶民惟星,星有好风,星有好雨。日月之行,则有冬有夏。月之从星,则以风雨。

  九、五福:一曰寿,二曰富,三曰康宁,四曰攸好德,五曰考终命。六极:一曰凶、短、折,二曰疾,三曰忧,四曰贫,五曰恶,六曰弱。

  〖分器〗武王既胜殷,邦诸侯,班宗彝,作《分器》。

  !!周书 旅獒第七

  西旅献獒,太保作《旅獒》。

  惟克商,遂通道于九夷八蛮。西旅厎贡厥獒,太保乃作《旅獒》,用训于王。

  曰:“呜呼!明王慎德,西夷咸宾。无有远迩,毕献方物,惟服食器用。王乃昭德之致于异姓之邦,无替厥服;分宝玉于伯叔之国,时庸展亲。人不易物,惟德其物!德盛不狎侮。狎侮君子,罔以尽人心;狎侮小人,罔以尽其力。不役耳目,百度惟贞。玩人丧德,玩物丧志。志以道宁,言以道接。不作无益害有益,功乃成;不贵异物贱用物,民乃足。犬马非其土性不畜,珍禽奇兽不育于国,不宝远物,则远人格;所宝惟贤,则迩人安。呜呼!夙夜罔或不勤,不矜细行,终累大德。为山九仞,功亏一篑。允迪兹,生民保厥居,惟乃世王。”

  〖旅巢命〗巢伯来朝,芮伯作《旅巢命》。

  !!周书 金滕第八

  武王有疾,周公作《金滕》。

  既克商二年,王有疾,弗豫。二公曰:“我其为王穆卜。”周公曰:“未可以戚我先王?”公乃自以为功,为三坛同墠。为坛于南方,北面,周公立焉。

  植璧秉珪,乃告太王、王季、文王。

  史乃册,祝曰:“惟尔元孙某,遘厉虐疾。若尔三王是有丕子之责于天,以旦代某之身。予仁若考能,多材多艺,能事鬼神。乃元孙不若旦多材多艺,不能事鬼神。乃命于帝庭,敷佑四方,用能定尔子孙于下地。四方之民罔不祗畏。呜呼!无坠天之降宝命,我先王亦永有依归。今我即命于元龟,尔之许我,我其以璧与珪归俟尔命;尔不许我,我乃屏璧与珪。”

  乃卜三龟,一习吉。启籥见书,乃并是吉。公曰:“体!王其罔害。予小子新命于三王,惟永终是图;兹攸俟,能念予一人。”

  公归,乃纳册于金滕之匮中。王翼日乃瘳。

  武王既丧,管叔及其群弟乃流言于国,曰:“公将不利于孺子。”周公乃告二公曰:“我之弗辟,我无以告我先王。”周公居东二年,则罪人斯得。于后,公乃为诗以贻王,名之曰《鸱鸮》。王亦未敢诮公。

  秋,大熟,未获,天大雷电以风,禾尽偃,大木斯拔,邦人大恐。王与大夫尽弁以启金滕之书,乃得周公所自以为功代武王之说。二公及王乃问诸史与百执事。对曰:“信。噫!公命我勿敢言。”

  王执书以泣,曰:“其勿穆卜!昔公勤劳王家,惟予冲人弗及知。今天动威以彰周公之德,惟朕小子其新逆,我国家礼亦宜之。”王出郊,天乃雨,反风,禾则尽起。二公命邦人凡大木所偃,尽起而筑之。岁则大熟。

  !!周书 大诰第九

  武王崩,三监及淮夷叛,周公相成王,将黜殷,作《大诰》。

  王若曰:“猷大诰尔多邦越尔御事,弗吊天降割于我家,不少延。洪惟我幼冲人,嗣无疆大历服。弗造哲,迪民康,矧曰其有能格知天命!已!予惟小子,若涉渊水,予惟往求朕攸济。敷贲敷前人受命,兹不忘大功。

  予不敢于闭。

  天降威,用宁王遗我大宝龟,绍天明。即命曰:‘有大艰于西土,西土人亦不静,越兹蠢。殷小腆诞敢纪其叙。天降威,知我国有疵,民不康,曰:予复!反鄙我周邦,今蠢今翼。日,民献有十夫予翼,以于敉宁、武图功。我有大事,休?’朕卜并吉。”

  肆予告我友邦君越尹氏、庶士、御事、曰:‘予得吉卜,予惟以尔庶邦于伐殷逋播臣。’尔庶邦君越庶士、御事罔不反曰:‘艰大,民不静,亦惟在王宫邦君室。越予小子考,翼不可征,王害不违卜?’肆予冲人永思艰,曰:呜呼!允蠢,鳏寡哀哉!予造天役,遗大投艰于朕身,越予冲人,不卬自恤。义尔邦君越尔多士、尹氏、御事绥予曰:‘无毖于恤,不可不成乃宁考图功!’已!予惟小子,不敢替上帝命。天休于宁王,兴我小邦周,宁王惟卜用,克绥受兹命。今天其相民,矧亦惟卜用。呜呼!天明畏,弼我丕丕基!”王曰:“尔惟旧人,尔丕克远省,尔知宁王若勤哉!天閟毖我成功所,予不敢不极卒宁王图事。肆予大化诱我友邦君,天棐忱辞,其考我民,予曷其不于前宁人图功攸终?天亦惟用勤毖我民,若有疾,予曷敢不于前宁人攸受休毕!”王曰:“若昔朕其逝,朕言艰日思。若考作室,既底法,厥子乃弗肯堂,矧肯构?厥父菑,厥子乃弗肯播,矧肯获?厥考翼其肯曰:予有后弗弃基?肆予曷敢不越卬敉宁王大命?若兄考,乃有友伐厥子,民养其劝弗救?”王曰:“呜呼!肆哉尔庶邦君越尔御事。爽邦由哲,亦惟十人迪知上帝命越天棐忱,尔时罔敢易法,矧今天降戾于周邦?惟大艰人诞邻胥伐于厥室,尔亦不知天命不易?予永念曰:天惟丧殷,若穑夫,予曷敢不终朕亩?天亦惟休于前宁人,予曷其极卜?敢弗于从率宁人有指疆土?矧今卜并吉?肆朕诞以尔东征。天命不僣,卜陈惟若兹。”

  !!周书 微子之命第十

  成王既黜殷命,杀武庚,命微子启代殷后,作《微子之命》。

  王若曰:“猷!殷王元子。惟稽古,崇德象贤。统承先王,修其礼物,作宾于王家,与国咸休,永世无穷。呜呼!乃祖成汤克齐圣广渊,皇天眷佑,诞受厥命。抚民以宽,除其邪虐,功加于时,德垂后裔。尔惟践修厥猷,旧有令闻,恪慎克孝,肃恭神人。予嘉乃德,曰笃不忘。上帝时歆,下民祗协,庸建尔于上公,尹兹东夏。钦哉,往敷乃训,慎乃服命,率由典常,以蕃王室。弘乃烈祖,律乃有民,永绥厥位,毗予一人。世世享德,万邦作式,俾我有周无斁。呜呼!往哉惟休,无替朕命。”

  〖归禾〗唐叔得禾,异亩同颖,献诸天子。王命唐叔归周公于东,作《归禾》。

  〖嘉禾〗周公既得命禾,旅天子之命,作《嘉禾》。

  !!周书 康诰第十一

  成王既伐管叔、蔡叔,以殷余民封康叔,作《康诰》、《酒诰》、《梓材》。

  惟三月哉生魄,周公初基作新大邑于东国洛,四方民大和会。侯、甸、男邦、采、卫百工、播民,和见士于周。周公咸勤,乃洪大诰治。

  王若曰:“孟侯,朕其弟,小子封。惟乃丕显考文王,克明德慎罚;不敢侮鳏寡,庸庸,祗祗,威威,显民,用肇造我区夏,越我一、二邦以修我西土。惟时怙冒,闻于上帝,帝休,天乃大命文王。殪戎殷,诞受厥命越厥邦民,惟时叙,乃寡兄勖。肆汝小子封在兹东土。

  王曰:“呜呼!封,汝念哉!今民将在祗遹乃文考,绍闻衣德言。往敷求于殷先哲王用保乂民,汝丕远惟商耇成人,宅心知训。别求闻由古先哲王用康保民。

  宏于天,若德,裕乃身不废在王命!”王曰:“呜呼!小子封,恫瘝乃身,敬哉!天畏棐忱;民情大可见,小人难保。往尽乃心,无康好逸豫,乃其乂民。我闻曰:‘怨不在大,亦不在小;惠不惠,懋不懋。’已!汝惟小子,乃服惟弘王应保殷民,亦惟助王宅天命,作新民。”

  王曰:“呜呼!封,敬明乃罚。人有小罪,非眚,乃惟终自作不典;式尔,有厥罪小,乃不可不杀。乃有大罪,非终,乃惟眚灾:适尔,既道极厥辜,时乃不可杀。”

  王曰:“呜呼!封,有叙时,乃大明服,惟民其敕懋和。若有疾,惟民其毕弃咎。若保赤子,惟民其康乂。非汝封刑人杀人,无或刑人杀人。非汝封又曰劓刵人,无或劓刵人。”

  王曰:“外事,汝陈时臬司师,兹殷罚有伦。”又曰:“要囚,服念五、六日至于旬时,丕蔽要囚。”

  王曰:“汝陈时臬事罚。蔽殷彝,用其义刑义杀,勿庸以次汝封。乃汝尽逊曰时叙,惟曰未有逊事。

  已!汝惟小子,未其有若汝封之心。朕心朕德,惟乃知。

  凡民自得罪:寇攘奸宄,杀越人于货,暋不畏死,罔弗憝。

  王曰:“封,元恶大憝,矧惟不孝不友。子弗祗服厥父事,大伤厥考心;于父不能字厥子,乃疾厥子。于弟弗念天显,乃弗克恭厥兄;兄亦不念鞠子哀,大不友于弟。惟吊兹,不于我政人得罪,天惟与我民彝大泯乱,曰:乃其速由文王作罚,刑兹无赦。

  不率大戛,矧惟外庶子、训人惟厥正人越小臣、诸节。乃别播敷,造民大誉,弗念弗庸,瘝厥君,时乃引恶,惟朕憝。已!汝乃其速由兹义率杀。亦惟君惟长,不能厥家人越厥小臣、外正;惟威惟虐,大放王命;乃非德用乂。汝亦罔不克敬典,乃由裕民,惟文王之敬忌;乃裕民曰:‘我惟有及。’则予一人以怿。”

  王曰:“封,爽惟民迪吉康,我时其惟殷先哲王德,用康乂民作求。矧今民罔迪,不适;不迪,则罔政在厥邦。”

  王曰:“封,予惟不可不监,告汝德之说于罚之行。今惟民不静,未戾厥心,迪屡未同,爽惟天其罚殛我,我其不怨。惟厥罪无在大,亦无在多,矧曰其尚显闻于天。”

  王曰:“呜呼!封,敬哉!无作怨,勿用非谋非彝蔽时忱。丕则敏德,用康乃心,顾乃德,远乃猷,裕乃以;民宁,不汝瑕殄。”

  王曰:“呜呼!肆汝小子封。惟命不于常,汝念哉!无我殄享,明乃服命,高乃听,用康乂民。”

  王若曰:“往哉!封,勿替敬,典听朕告,汝乃以殷民世享。”

  !!周书 酒诰第十二

  王若曰:“明大命于妹邦。乃穆考文王肇国在西土。厥诰毖庶邦庶士越少正御事,朝夕曰:‘祀兹酒。惟天降命,肇我民,惟元祀。天降威,我民用大乱丧德,亦罔非酒惟行;越小大邦用丧,亦罔非酒惟辜。’文王诰教小子有正有事:无彝酒。越庶国:饮惟祀,德将无醉。惟曰我民迪小子惟土物爱,厥心臧。聪听祖考之彝训,越小大德。

  小子惟一妹土,嗣尔股肱,纯其艺黍稷,奔走事厥考厥长。肇牵车牛,远服贾用。孝养厥父母,厥父母庆,自洗腆,致用酒。

  庶士有正越庶伯君子,其尔典听朕教!尔大克羞耇惟君,尔乃饮食醉饱。丕惟曰尔克永观省,作稽中德,尔尚克羞馈祀。尔乃自介用逸,兹乃允惟王正事之臣。兹亦惟天若元德,永不忘在王家。”

  王曰:“封,我西土棐徂,邦君御事小子尚克用文王教,不腆于酒,故我至于今,克受殷之命。”

  王曰:“封,我闻惟曰:‘在昔殷先哲王迪畏天显小民,经德秉哲。自成汤咸至于帝乙,成王畏相惟御事,厥棐有恭,不敢自暇自逸,矧曰其敢崇饮?越在外服,侯甸男卫邦伯,越在内服,百僚庶尹惟亚惟服宗工越百姓里居,罔敢湎于酒。不惟不敢,亦不暇,惟助成王德显越,尹人祗辟。’我闻亦惟曰:‘在今后嗣王,酣,身厥命,罔显于民祗,保越怨不易。诞惟厥纵,淫泆于非彝,用燕丧威仪,民罔不衋伤心。惟荒腆于酒,不惟自息乃逸,厥心疾很,不克畏死。辜在商邑,越殷国灭,无罹。弗惟德馨香祀,登闻于天;诞惟民怨,庶群自酒,腥闻在上。故天降丧于殷,罔爱于殷,惟逸。天非虐,惟民自速辜。’”王:“封,予不惟若兹多诰。古人有言曰:‘人无于水监,当于民监。’今惟殷坠厥命,我其可不大监抚于时!予惟曰:“汝劼毖殷献臣、侯、甸、男、卫,矧太史友、内史友、越献臣百宗工,矧惟尔事服休,服采,矧惟若畴,圻父薄违,农夫若保,宏父定辟,矧汝,刚制于酒。’厥或诰曰:‘群饮。’汝勿佚。尽执拘以归于周,予其杀。又惟殷之迪诸臣惟工,乃湎于酒,勿庸杀之,姑惟教之。有斯明享,乃不用我教辞,惟我一人弗恤弗蠲,乃事时同于杀。”

  王曰:“封,汝典听朕毖,勿辩乃司民湎于酒。”

  !!周书 梓材第十三

  王曰:“封,以厥庶民暨厥臣达大家,以厥臣达王惟邦君,汝若恒越曰:我有师师、司徒、司马、司空、尹、旅。”曰:‘予罔厉杀人。’亦厥君先敬劳,肆徂厥敬劳。肆往,奸宄、杀人、历人,宥;肆亦见厥君事、戕败人,宥。

  王启监,厥乱为民。曰:‘无胥戕,无胥虐,至于敬寡,至于属妇,合由以容。’王其效邦君越御事,厥命曷以?‘引养引恬。’自古王若兹,监罔攸辟!惟曰:若稽田,既勤敷菑,惟其陈修,为厥疆畎。若作室家,既勤垣墉,惟其涂塈茨。若作梓材,既勤朴斫,惟其涂丹雘。

  今王惟曰:先王既勤用明德,怀为夹,庶邦享作,兄弟方来。亦既用明德,后式典集,庶邦丕享。皇天既付中国民越厥疆土于先王,肆王惟德用,和怿先后迷民,用怿先王受命。已!若兹监,惟曰欲至于万年,惟王子子孙孙永保民。”

  !!周书 召诰第十四

  成王在丰,欲宅洛邑,使召公先相宅,作《召诰》。

  惟二月既望,越六日乙未,王朝步自周,则至于丰。

  惟太保先周公相宅,越若来三月,惟丙午朏。越三日戊申,太保朝至于洛,卜宅。厥既得卜,则经营。越三日庚戌,太保乃以庶殷攻位于洛汭。越五日甲寅,位成。

  若翼日乙卯,周公朝至于洛,则达观于新邑营。越三日丁巳,用牲于郊,牛二。越翼日戊午,乃社于新邑,牛一,羊一,豕一。

  越七日甲子,周公乃朝用书命庶殷侯甸男邦伯。厥既命殷庶,庶殷丕作。

  太保乃以庶邦冢君出取币,乃复入锡周公。曰:“拜手稽首,旅王若公诰告庶殷越自乃御事:呜呼!皇天上帝,改厥元子兹大国殷之命。惟王受命,无疆惟休,亦无疆惟恤。呜呼!曷其奈何弗敬?天既遐终大邦殷之命,兹殷多先哲王在天,越厥后王后民,兹服厥命。厥终,智藏瘝在。夫知保抱携持厥妇子,以哀吁天,徂厥亡,出执。呜呼!天亦哀于四方民,其眷命用懋。王其疾敬德!相古先民有夏,天迪从子保,面稽天若;今时既坠厥命。今相有殷,天迪格保,面稽天若;今时既坠厥命。今冲子嗣,则无遗寿耇,曰其稽我古人之德,矧曰其有能稽谋自天?呜呼!有王虽小,元子哉。其丕能諴于小民。今休:王不敢后,用顾畏于民碞;王来绍上帝,自服于土中。旦曰:‘其作大邑,其自时配皇天,毖祀于上下,其自时中乂;王厥有成命治民。’今休。

  王先服殷御事,比介于我有周御事,节性惟日其迈。王敬作所,不可不敬德。

  我不可不监于有夏,亦不可不监于有殷。我不敢知曰,有夏服天命,惟有历年;我不敢知曰,不其延。惟不敬厥德,乃早坠厥命。我不敢知曰,有殷受天命,惟有历年;我不敢知曰,不其延。惟不敬厥德,乃早坠厥命。今王嗣受厥命,我亦惟兹二国命,嗣若功。

  王乃初服。呜呼!若生子,罔不在厥初生,自贻哲命。今天其命哲,命吉凶,命历年;知今我初服,宅新邑。肆惟王其疾敬德?王其德之用,祈天永命。

  其惟王勿以小民淫用非彝,亦敢殄戮用乂民,若有功。其惟王位在德元,小民乃惟刑用于天下,越王显。上下勤恤,其曰我受天命,丕若有夏历年,式勿替有殷历年。欲王以小民受天永命。”

  拜手稽首,曰:“予小臣敢以王之仇民百君子越友民,保受王威命明德。王末有成命,王亦显。我非敢勤,惟恭奉币,用供王能祈天永命。”

  !!周书 洛诰第十五

  召公既相宅,周公往营成周,使来告卜,作《洛诰》。

  周公拜手稽首曰:“朕复子明辟。王如弗敢及天基命定命,予乃胤保大相东土,其基作民明辟。予惟乙卯,朝至于洛师。我卜河朔黎水,我乃卜涧水东,瀍水西,惟洛食;我又卜瀍水东,亦惟洛食。伻来以图及献卜。”

  王拜手稽首曰:“公不敢不敬天之休,来相宅,其作周匹,休!公既定宅,伻来,来,视予卜,休恒吉。我二人共贞。公其以予万亿年敬天之休。拜手稽首诲言。”

  周公曰:“王,肇称殷礼,祀于新邑,咸秩无文。予齐百工,伻从王于周,予惟曰:‘庶有事。’今王即命曰:‘记功,宗以功作元祀。’惟命曰:‘汝受命笃弼,丕视功载,乃汝其悉自教工。’孺子其朋,孺子其朋,其往!无若火始焰焰;厥攸灼叙,弗其绝。厥若彝及抚事如予,惟以在周工往新邑。伻向即有僚,明作有功,惇大成裕,汝永有辞。”

  公曰:“已!汝惟冲子,惟终。汝其敬识百辟享,亦识其有不享。享多仪,仪不及物,惟曰不享。惟不役志于享,凡民惟曰不享,惟事其爽侮。乃惟孺子颁,朕不暇听。

  朕教汝于棐民,彝汝乃是不,乃时惟不永哉!笃叙乃正父罔不若予,不敢废乃命。汝往敬哉!兹予其明农哉!彼裕我民,无远用戾。”

  王若曰:“公!明保予冲子。公称丕显德,以予小子扬文武烈,奉答天命,和恒四方民,居师;惇宗将礼,称秩元祀,咸秩无文。惟公德明光于上下,勤施于四方,旁作穆穆,迓衡不迷。文武勤教,予冲子夙夜毖祀。”王曰:“公功棐迪,笃罔不若时。”

  王曰:“公!予小子其退,即辟于周,命公后。四方迪乱未定,于宗礼亦未克敉,公功迪将,其后监我士师工,诞保文武受民,乱为四辅。”王曰:“公定,予往已。公功肃将祗欢,公无困哉!我惟无斁其康事,公勿替刑,四方其世享。”

  周公拜手稽首曰:“王命予来承保乃文祖受命民,越乃光烈考武王弘朕恭。

  孺子来相宅,其大惇典殷献民,乱为四方新辟,作周恭先。曰其自时中乂,万邦咸休,惟王有成绩。予旦以多子越御事笃前人成烈,答其师,作周孚先。’考朕昭子刑,乃单文祖德。

  伻来毖殷,乃命宁予以秬鬯二卣。曰明禋,拜手稽首休享。予不敢宿,则禋于文王、武王。惠笃叙,无有遘自疾,万年厌于乃德,殷乃引考。王伻殷乃承叙万年,其永观朕子怀德。”

  戊辰,王在新邑烝,祭岁,文王骍牛一,武王骍牛一。王命作册逸祝册,惟告周公其后。

  王宾杀禋咸格,王入太室,祼。王命周公后,作册逸诰,在十有二月。惟周公诞保文武受命,惟七年。

  !!周书 多士第十六

  成周既成,迁殷顽民,周公以王命诰,作《多士》。

  惟三月,周公初于新邑洛,用告商王士。

  王若曰:“尔殷遗多士,弗吊旻天,大降丧于殷,我有周佑命,将天明威,致王罚,敕殷命终于帝。肆尔多士!非我小国敢弋殷命。惟天不畀允罔固乱,弼我,我其敢求位?惟帝不畀,惟我下民秉为,惟天明畏。

  我闻曰:上帝引逸,有夏不适逸;则惟帝降格,向于时夏。弗克庸帝,大淫泆有辞。惟时天罔念闻,厥惟废元命,降致罚;乃命尔先祖成汤革夏,俊民甸四方。

  自成汤至于帝乙,罔不明德恤祀。亦惟天丕建,保乂有殷,殷王亦罔敢失帝,罔不配天其泽。

  在今后嗣王,诞罔显于天,矧曰其有听念于先王勤家?诞淫厥泆,罔顾于天显民祗,惟时上帝不保,降若兹大丧。惟天不畀不明厥德,凡四方小大邦丧,罔非有辞于罚。”

  王若曰:“尔殷多士,今惟我周王丕灵承帝事,有命曰:‘割殷,’告敕于帝。惟我事不贰适,惟尔王家我适。予其曰惟尔洪无度,我不尔动,自乃邑。予亦念天,即于殷大戾,肆不正。”

  王曰:“猷!告尔多士,予惟时其迁居西尔,非我一人奉德不康宁,时惟天命。无违,朕不敢有后,无我怨。

  惟尔知,惟殷先人有册有典,殷革夏命。今尔又曰:‘夏迪简在王庭,有服在百僚。’予一人惟听用德,肆予敢求尔于天邑商,予惟率肆矜尔。非予罪,时惟天命。”

  王曰:“多士,昔朕来自奄,予大降尔四国民命。我乃明致天罚,移尔遐逖,比事臣我宗多逊。”

  王曰:“告尔殷多士,今予惟不尔杀,予惟时命有申。今朕作大邑于兹洛,予惟四方罔攸宾,亦惟尔多士攸服奔走臣我多逊。尔乃尚有尔土,尔用尚宁干止,尔克敬,天惟畀矜尔;尔不克敬,尔不啻不有尔土,予亦致天之罚于尔躬!今尔惟时宅尔邑,继尔居;尔厥有干有年于兹洛。尔小子乃兴,从尔迁。”

  王曰:“又曰时予,乃或言尔攸居。”

  !!周书 无逸第十七

  周公作《无逸》。

  周公曰:“呜呼!君子所,其无逸。先知稼穑之艰难,乃逸,则知小人之依。

  相小人,厥父母勤劳稼穑,厥子乃不知稼穑之艰难,乃逸乃谚。既诞,否则侮厥父母曰:‘昔之人无闻知。’”周公曰:“呜呼!我闻曰:昔在殷王中宗,严恭寅畏,天命自度,治民祗惧,不敢荒宁。肆中宗之享国七十有五年。其在高宗,时旧劳于外,爰暨小人。作其即位,乃或亮阴,三年不言。其惟不言,言乃雍。不敢荒宁,嘉靖殷邦。至于小大,无时或怨。肆高宗之享国五十年有九年。其在祖甲,不义惟王,旧为小人。

  作其即位,爰知小人之依,能保惠于庶民,不敢侮鳏寡。肆祖甲之享国三十有三年。自时厥后立王,生则逸,生则逸,不知稼穑之艰难,不闻小人之劳,惟耽乐之从。自时厥后,亦罔或克寿。或十年,或七八年,或五六年,或四三年。”

  周公曰:“呜呼!厥亦惟我周太王、王季,克自抑畏。文王卑服,即康功田功。徽柔懿恭,怀保小民,惠鲜鳏寡。自朝至于日中昃,不遑暇食,用咸和万民。

  文王不敢盘于游田,以庶邦惟正之供。文王受命惟中身,厥享国五十年。”

  周公曰:“呜呼!继自今嗣王,则其无淫于观、于逸、于游、于田,以万民惟正之供。无皇曰:‘今日耽乐。’乃非民攸训,非天攸若,时人丕则有愆。无若殷王受之迷乱,酗于酒德哉!”周公曰:“呜呼!我闻曰:‘古之人犹胥训告,胥保惠,胥教诲,民无或胥诪张为幻。’此厥不听,人乃训之,乃变乱先王之正刑,至于小大。民否则厥心违怨,否则厥口诅祝。”

  周公曰:“呜呼!自殷王中宗及高宗及祖甲及我周文王,兹四人迪哲。厥或告之曰:‘小人怨汝詈汝。’则皇自敬德。厥愆,曰:‘朕之愆。’允若时,不啻不敢含怒。此厥不听,人乃或诪张为幻,曰小人怨汝詈汝,则信之,则若时,不永念厥辟,不宽绰厥心,乱罚无罪,杀无辜。怨有同,是丛于厥身。”

  周公曰:“呜呼!嗣王其监于兹。”

  !!周书 君奭第十八

  召公为保,周公为师,相成王为左右。召公不说,周公作《君奭》。

  周公若曰:“君奭!弗吊天降丧于殷,殷既坠厥命,我有周既受。我不敢知曰厥基永孚于休。若天棐忱,我亦不敢知曰其终出于不祥。

  呜呼!君已曰时我,我亦不敢宁于上帝命,弗永远念天威越我民;罔尤违,惟人。在我后嗣子孙,大弗克恭上下,遏佚前人光在家,不知天命不易,天难谌,乃其坠命,弗克经历。嗣前人,恭明德,在今予小子旦非克有正,迪惟前人光施于我冲子。”又曰:“天不可信,我道惟宁王德延,天不庸释于文王受命。”

  公曰:“君奭!我闻在昔成汤既受命,时则有若伊尹,格于皇天。在太甲,时则有若保衡。在太戊,时则有若伊陟、臣扈,格于上帝;巫咸乂王家。在祖乙,时则有若巫贤。在武丁,时则有若甘盘。率惟兹有陈,保乂有殷,故殷礼陟配天,多历年所。天维纯佑命,则商实百姓王人。罔不秉德明恤,小臣屏侯甸,矧咸奔走。惟兹惟德称,用乂厥辟,故一人有事于四方,若卜筮罔不是孚。”

  公曰:“君奭!天寿平格,保乂有殷,有殷嗣,天灭威。今汝永念,则有固命,厥乱明我新造邦。”

  公曰:“君奭!在昔上帝割申劝宁王之德,其集大命于厥躬?惟文王尚克修和我有夏;亦惟有若虢叔,有若闳夭,有若散宜生,有若泰颠,有若南宫括。”

  又曰:“无能往来,兹迪彝教,文王蔑德降于国人。亦惟纯佑秉德,迪知天威,乃惟时昭文王迪见冒,闻于上帝。惟时受有殷命哉。武王惟兹四人尚迪有禄。后暨武王诞将天威,咸刘厥敌。惟兹四人昭武王惟冒,丕单称德。

  今在予小子旦,若游大川,予往暨汝奭其济。小子同未在位,诞无我责收,罔勖不及。耇造德不降我则,鸣鸟不闻,矧曰其有能格?”公曰:“呜呼!君肆其监于兹!我受命于疆惟休,亦大惟艰。告君,乃猷裕我,不以后人迷。”

  公曰:“前人敷乃心,乃悉命汝,作汝民极。曰:‘汝明勖偶王,在亶乘兹大命,惟文王德丕承,无疆之恤!’”公曰:“君!告汝,朕允保奭。其汝克敬以予监于殷丧大否,肆念我天威。

  予不允惟若兹诰,予惟曰:‘襄我二人,汝有合哉?’言曰:‘在时二人。’天休兹至,惟时二人弗戡。其汝克敬德,明我俊民,在让后人于丕时。

  呜呼!笃棐时二人,我式克至于今日休?我咸成文王功于!不怠丕冒,海隅出日,罔不率俾。”

  公曰:“君!予不惠若兹多诰,予惟用闵于天越民。”

  公曰:“呜呼!君!惟乃知民德亦罔不能厥初,惟其终。祗若兹,往敬用治!”

  !!周书 蔡仲之命第十九

  蔡叔既没,王命蔡仲,践诸侯位,作《蔡仲之命》。

  惟周公位冢宰,正百工,群叔流言。乃致辟管叔于商;囚蔡叔于郭邻,以车七乘;降霍叔于庶人,三年不齿。蔡仲克庸祇德,周公以为卿士。叔卒,乃命诸王邦之蔡。王若曰:“小子胡,惟尔率德改行,克慎厥猷,肆予命尔侯于东土。

  往即乃封,敬哉!尔尚盖前人之愆,惟忠惟孝;尔乃迈迹自身,克勤无怠,以垂宪乃后;率乃祖文王之彝训,无若尔考之违王命。皇天无亲,惟德是辅。民心无常,惟惠之怀。为善不同,同归于治;为恶不同,同归于乱。尔其戒哉!慎厥初,惟厥终,终以不困;不惟厥终,终以困穷。懋乃攸绩,睦乃四邻,以蕃王室,以和兄弟,康济小民。率自中,无作聪明乱旧章。详乃视听,罔以侧言改厥度。则予一人汝嘉。”王曰:“呜呼!小子胡,汝往哉!无荒弃朕命!”〖成王政〗成王东伐淮夷,遂践奄,作《成王政》。

  〖将蒲姑〗成王既践奄,将迁其君于蒲姑,周公告召公,作《将蒲姑》。

  !!周书 多方第二十

  成王归自奄,在宗周,诰庶邦,作《多方》。

  惟五月丁亥,王来自奄,至于宗周。

  周公曰:“王若曰:猷!告尔四国多方,惟尔殷侯尹民,我惟大降尔命,尔罔不知。洪惟天之命,弗永寅念于祀,惟帝降格于夏。有夏诞厥逸,不肯慼言于民,乃大淫昏,不克终日劝于帝之迪,乃尔攸闻。厥图帝之命,不克开于民之丽,乃大降罚,崇乱有夏。因甲于内乱,不克灵承于旅;罔丕惟进之恭,洪舒于民。

  亦惟有夏之民叨懫日钦,劓割夏邑。天惟时求民主,乃大降显休命于成汤,刑殄有夏。

  惟天不畀,纯乃惟以尔多方之义民不克永于多享;惟夏之恭多士,大不克明保享于民,乃胥惟虐于民,至于百为,大不克开。

  乃惟成汤克以尔多方简,代夏作民主。慎厥丽,乃劝;厥民刑,用劝;以至于帝乙,罔不明德慎罚,亦克用劝;要囚殄戮多罪,亦克用劝;开释无辜,亦克用劝。今至于尔辟,弗克以尔多方享天之命,呜呼!”王若曰:“诰告尔多方,非天庸释有夏,非天庸释有殷。乃惟尔辟以尔多方大淫,图天之命屑有辞。乃惟有夏图厥政,不集于享,天降时丧,有邦间之。乃惟尔商后王逸厥逸,图厥政不蠲烝,天惟降时丧。

  惟圣罔念,作狂;惟狂克念,作圣。天惟五年须暇之子孙,诞作民主,罔可念听。天惟求尔多方,大动以威,开厥顾天;惟尔多方,罔堪顾之。惟我周王灵承于旅,克堪用德,惟典神天。天惟式教我用休,简畀殷命,尹尔多方。

  今我曷敢多诰?我惟大降尔四国民命。尔曷不忱裕之于尔多方?尔曷不夹介乂我周王享天之命?今尔尚宅尔宅,畋尔田,尔曷不惠王熙天之命?尔乃迪屡不静,尔心未爱。尔乃不大宅天命,尔乃屑播天命,尔乃自作不典,图忱于正。我惟时其教告之,我惟时其战要囚之,至于再,至于三。乃有不用我降尔命,我乃其大罚殛之!非我有周秉德不康宁,乃惟尔自速辜!”王曰:“呜呼!猷告尔有方多士暨殷多士。今尔奔走臣我监五祀,越惟有胥伯小大多正,尔罔不克臬。自作不和,尔惟和哉;尔室不睦,尔惟和哉;尔邑克明,尔惟克勤乃事。尔尚不忌于凶德,亦则以穆穆在乃位,克阅于乃邑谋介。尔乃自时洛邑,尚永力畋尔田,天惟畀矜尔,我有周惟其大介赉尔,迪简在王庭。

  尚尔事,有服在大僚。”

  王曰:“呜呼!多士,尔不克劝忱我命,尔亦则惟不克享,凡民惟曰不享。

  尔乃惟逸惟颇,大远王命,则惟尔多方探天之威,我则致天之罚,离逖尔土。”

  王曰:“我不惟多诰,我惟祗告尔命。”又曰:“时惟尔初,不克敬于和,则无我怨。”

  !!周书 立政第二十一

  周公作《立政》。

  周公若曰:“拜手稽首,告嗣天子王矣。”用咸戒于王曰:“王左右常伯、常任、准人、缀衣、虎贲。”

  周公曰:“呜呼!休兹知恤,鲜哉!古之人迪惟有夏,乃有室大竞,吁俊尊上帝迪,知忱恂于九德之行。乃敢告教厥后曰:‘拜手稽首后矣!’曰:‘宅乃事,宅乃牧,宅乃准,兹惟后矣。谋面,用丕训德,则乃宅人,兹乃三宅无义民。’桀德,惟乃弗作往任,是惟暴德罔后。亦越成汤陟,丕釐上帝之耿命,乃用三有宅;克即宅,曰三有俊,克即俊。严惟丕式,克用三宅三俊,其在商邑,用协于厥邑;其在四方,用丕式见德。

  呜呼!其在受德,暋为羞刑暴德之人,同于厥邦;乃惟庶习逸德之人,同于厥政。帝钦罚之,乃伻我有夏,式商受命,奄甸万姓。

  亦越文王、武王,克知三有宅心,灼见三有俊心,以敬事上帝,立民长伯。

  立政:任人、准夫、牧、作三事。虎贲、缀衣、趣马、小尹、左右携仆、百司庶府。大都小伯、艺人、表臣百司、太史、尹伯,庶常吉士。司徒、司马、司空、亚、旅。夷、微、卢烝。三亳阪尹。

  文王惟克厥宅心,乃克立兹常事司牧人,以克俊有德。文王罔攸兼于庶言;庶狱庶慎,惟有司之牧夫是训用违;庶狱庶慎,文王罔敢知于兹。

  亦越武王,率惟敉功,不敢替厥义德,率惟谋从容德,以并受此丕丕基。”

  呜呼!孺子王矣!继自今我其立政。立事、准人、牧夫,我其克灼知厥若,丕乃俾乱;相我受民,和我庶狱庶慎。时则勿有间之,自一话一言。我则末惟成德之彦,以乂我受民。

  呜呼!予旦已受人之徽言咸告孺子王矣。继自今文子文孙,其勿误于庶狱庶慎,惟正是乂之。

  自古商人亦越我周文王立政,立事、牧夫、准人,则克宅之,克由绎之,兹乃俾乂,国则罔有。立政用憸人,不训于德,是罔显在厥世。继自今立政,其勿以憸人,其惟吉士,用励相我国家。

  今文子文孙,孺子王矣!其勿误于庶狱,惟有司之牧夫。其克诘尔戎兵以陟禹之迹,方行天下,至于海表,罔有不服。以觐文王之耿光,以扬武王之大烈。

  呜呼!继自今后王立政,其惟克用常人。”

  周公若曰:“太史!司寇苏公式敬尔由狱,以长我王国。兹式有慎,以列用中罚。”

  !!周书 周官第二十二

  成王既黜殷命,灭淮夷,还归在丰,作《周官》。

  惟周王抚万邦,巡侯、甸,四征弗庭,绥厥兆民。六服群辟,罔不承德。归于宗周,董正治官。

  王曰:“若昔大猷,制治于未乱,保邦于未危。”

  曰:“唐虞稽古,建官惟百。内有百揆四岳,外有州、牧、侯伯。庶政惟和,万国咸宁。夏商官倍,亦克用乂。明王立政,不惟其官,惟其人。

  今予小子,祗勤于德,夙夜不逮。仰惟前代时若,训迪厥官。立太师、太傅、太保,兹惟三公。论道经邦,燮理阴阳。官不必备,惟其人。少师、少傅、少保,曰三孤。贰公弘化,寅亮天地,弼予一人。冢宰掌邦治,统百官,均四海。司徒掌邦教,敷五典,扰兆民。宗伯掌邦礼,治神人,和上下。司马掌邦政,统六师,平邦国。司寇掌邦禁,诘奸慝,刑暴乱。司空掌邦土,居四民,时地利。六卿分职,各率其属,以倡九牧,阜成兆民。六年,五服一朝。又六年,王乃时巡,考制度于四岳。诸侯各朝于方岳,大明黜陟。”

  王曰:“呜呼!凡我有官君子,钦乃攸司,慎乃出令,令出惟行,弗惟反。

  以公灭私,民其允怀。学古入官。议事以制,政乃不迷。其尔典常作之师,无以利口乱厥官。蓄疑败谋,怠忽荒政,不学墙面,莅事惟烦。戒尔卿士,功崇惟志,业广惟勤,惟克果断,乃罔后艰。位不期骄,禄不期侈。恭俭惟德,无载尔伪。

  作德,心逸日休;作伪,心劳日拙。居宠思危,罔不惟畏,弗畏入畏。推贤让能,庶官乃和,不和政厖。举能其官,惟尔之能。称匪其人,惟尔不任。”

  王曰:“呜呼!三事暨大夫,敬尔有官,乱尔有政,以佑乃辟。永康兆民,万邦惟无斁。

  〖贿肃慎之命〗成王既伐东夷,肃慎来贺。王俾荣伯作《贿肃慎之命》。

  〖亳姑〗周公在丰,将没,欲葬成周。公薨,成王葬于毕,告周公,作《亳姑》。

  !!周书 君陈第二十三

  周公既没,命君陈分正东郊成周,作《君陈》。

  王若曰:“君陈,惟尔令德孝恭。惟孝友于兄弟,克施有政。命汝尹兹东郊,敬哉!昔周公师保万民,民怀其德。往慎乃司,兹率厥常,懋昭周公之训,惟民其乂。我闻曰:‘至治馨香,感于神明。黍稷非馨,明德惟馨尔。’尚式时周公之猷训,惟日孜孜,无敢逸豫。凡人未见圣,若不克见;既见圣,亦不克由圣,尔其戒哉!尔惟风,下民惟草。图厥政,莫或不艰,有废有兴,出入自尔师虞,庶言同则绎。尔有嘉谋嘉猷,则入告尔后于内,尔乃顺之于外,曰:‘斯谋斯猷,惟我后之德。’呜呼!臣人咸若时,惟良显哉!”王曰:“君陈,尔惟弘周公丕训,无依势作威,无倚法以削,宽而有制,从容以和。殷民在辟,予曰辟,尔惟勿辟;予曰宥,尔惟勿宥,惟厥中。有弗若于汝政,弗化于汝训,辟以止辟,乃辟。狃于奸宄,败常乱俗,三细不宥。尔无忿疾于顽,无求备于一夫。必有忍,其乃有济;有容,德乃大。简厥修,亦简其或不修。进厥良,以率其或不良。惟民生厚,因物有迁。违上所命,从厥攸好。尔克敬典在德,时乃罔不变。允升于大猷,惟予一人膺受多福,其尔之休,终有辞于永世。”

  !!周书 顾命第二十四

  成王将崩,命召公、毕公率诸侯相康王,作《顾命》。

  惟四月,哉生魄,王不怿。甲子,王乃洮颒水。相被冕服,凭玉几。乃同,召太保奭、芮伯、彤伯、毕公、卫侯、毛公、师氏、虎臣、百尹、御事。王曰:“呜呼!疾大渐,惟几,病日臻。既弥留,恐不获誓言嗣,兹予审训命汝。昔君文王、武王宣重光,奠丽陈教,则肄肄不违,用克达殷集大命。在后之侗,敬迓天威,嗣守文、武大训,无敢昏逾。今天降疾,殆弗兴弗悟。尔尚明时朕言,用敬保元子钊弘济于艰难,柔远能迩,安劝小大庶邦。思夫人自乱于威仪。尔无以钊冒贡于非几。”

  兹既受命,还出缀衣于庭。越翼日乙丑,王崩。太保命仲桓、南宫毛俾爰齐侯吕伋,以二干戈、虎贲百人逆子钊于南门之外。延入翼室,恤宅宗。丁卯,命作册度。

  越七日癸酉,伯相命士须材。狄设黼扆、缀衣。牖间南向,敷重篾席,黼纯,华玉,仍几。西序东向,敷重厎席,缀纯,文贝,仍几。东序西向,敷重丰席,画纯,雕玉,仍几。西夹南向,敷重笋席,玄纷纯,漆,仍几。越玉五重,陈宝,赤刀、大训、弘璧、琬琰,在西序。大玉、夷玉、天球、河图,在东序。胤之舞衣、大贝、鼖鼓,在西房;兑之戈、和之弓、垂之竹矢,在东房。大辂在宾阶面,缀辂在阼阶面,先辂在左塾之前,次辂在右塾之前。

  二人雀弁,执惠,立于毕门之内。四人綦弁,执戈上刃,夹两阶戺。一人冕,执刘,立于东堂,一人冕,执钺,立于西堂。一人冕,执戣,立于东垂。一人冕,执瞿,立于西垂。一人冕,执锐,立于侧阶。

  王麻冕黼裳,由宾阶隮。卿士邦君麻冕蚁裳,入即位。太保、太史、太宗皆麻冕彤裳。太保承介圭,上宗奉同瑁,由阼阶隮。太史秉书,由宾阶隮,御王册命。曰:“皇后凭玉几,道扬末命,命汝嗣训,临君周邦,率循大卞,燮和天下,用答扬文、武之光训。”王再拜,兴,答曰:“眇眇予末小子,其能而乱四方以敬忌天威。”乃受同瑁,王三宿,三祭,三咤。上宗曰:“飨!”太保受同,降,盥,以异同秉璋以酢。授宗人同,拜。王答拜。太保受同,祭,哜,宅,授宗人同,拜。王答拜。太保降,收。诸侯出庙门俟。

  !!周书 康王之诰第二十五

  康王既尸天子,遂诰诸侯,作《康王之诰》。

  王出,在应门之内,太保率西方诸侯入应门左,毕公率东方诸侯入应门右,皆布乘黄朱。宾称奉圭兼币,曰:“一二臣卫,敢执壤奠。”皆再拜稽首。王义嗣,德答拜。太保暨芮伯咸进,相揖。皆再拜稽首曰:“敢敬告天子,皇天改大邦殷之命,惟周文武诞受羑若,克恤西土。惟新陟王毕协赏罚,戡定厥功,用敷遗后人休。今王敬之哉!张皇六师,无坏我高祖寡命。”

  王若曰:“庶邦侯、甸、男、卫,惟予一人钊报诰。昔君文武丕平,富不务咎,厎至齐信,用昭明于天下。则亦有熊罴之士,不二心之臣,保乂王家,用端命于上帝。皇天用训厥道,付畀四方。乃命建侯树屏,在我后之人。今予一二伯父尚胥暨顾,绥尔先公之臣服于先王。虽尔身在外,乃心罔不在王室,用奉恤厥若,无遗鞠子羞!”群公既皆听命,相揖,趋出。王释冕,反丧服。

  !!周书 毕命第二十六

  康王命作册毕,分居里,成周郊,作《毕命》。

  惟十有二年,六月庚午,朏。越三日壬申,王朝步自宗周,至于丰。以成周之众,命毕公保釐东郊。

  王若曰:“呜呼!父师,惟文王、武王敷大德于天下,用克受殷命。惟周公左右先王,绥定厥家,毖殷顽民,迁于洛邑,密迩王室,式化厥训。既历三纪,世变风移,四方无虞,予一人以宁,道有升降,政由俗革,不臧厥臧,民罔攸劝。

  惟公懋德,克勤小物,弼亮四世,正色率下,罔不祗师言。嘉绩多于先王,予小子垂拱仰成。”

  王曰:“呜呼!父师,今予祗命公以周公之事,往哉!旌别淑慝,表厥宅里,彰善瘅恶,树之风声。弗率训典,殊厥井疆,俾克畏慕。申画郊圻,慎固封守,以康四海。政贵有恒,辞尚体要,不惟好异。商俗靡靡,利口惟贤,馀风未殄,公其念哉!我闻曰:‘世禄之家,鲜克由礼’。以荡陵德,实悖天道。敝化奢丽,万世同流。兹殷庶士,席宠惟旧,怙侈灭义,服美于人。骄淫矜侉,将由恶终。

  虽收放心,闲之惟艰。资富能训,惟以永年。惟德惟义,时乃大训。不由古训,于何其训。”

  王曰:“呜呼!父师,邦之安危,惟兹殷士。不刚不柔,厥德允修。惟周公克慎厥始,惟君陈克和厥中,惟公克成厥终。三后协心,同厎于道,道洽政治,泽润生民,四夷左衽,罔不咸赖,予小子永膺多福。公其惟时成周,建无穷之基,亦有无穷之闻。子孙训其成式,惟乂。呜呼!罔曰弗克,惟既厥心;罔曰民寡,惟慎厥事。钦若先王成烈,以休于前政。”

  !!周书 君牙第二十七

  穆王命君牙,为周大司徒,作《君牙》。

  王若曰:“呜呼!君牙,惟乃祖乃父,世笃忠贞,服劳王家,厥有成绩,纪于太常。惟予小子嗣守文、武、成、康遗绪,亦惟先正之臣,克左右乱四方。心之忧危,若蹈虎尾,涉于春冰。今命尔予翼,作股肱心膂,缵乃旧服。无忝祖考,弘敷五典,式和民则。尔身克正,罔敢弗正,民心罔中,惟尔之中。夏暑雨,小民惟曰怨咨:冬祁寒,小民亦惟曰怨咨。厥惟艰哉!思其艰以图其易,民乃宁。

  呜呼!丕显哉,文王谟!丕承哉,武王烈!启佑我后人,咸以正罔缺。尔惟敬明乃训,用奉若于先王,对扬文、武之光命,追配于前人。”

  王若曰:“君牙,乃惟由先正旧典时式,民之治乱在兹。率乃祖考之攸行,昭乃辟之有乂。”

  !!周书 冏命第二十八

  穆王命伯冏,为周太仆正,作《冏命》。

  王若曰:“伯冏,惟予弗克于德,嗣先人宅丕后,怵惕惟厉,中夜以兴,思免厥愆。昔在文、武、聪明齐圣,小大之臣,咸怀忠良。其侍御仆从,罔匪正人,以旦夕承弼厥辟,出入起居,罔有不钦;发号施令,罔有不臧。下民祇若,万邦咸休。惟予一人无良,实赖左右前后有位之士,匡其不及,绳愆纠缪,格其非心,俾克绍先烈。今予命汝作大正,正于群仆侍御之臣,懋乃后德,交修不逮。慎简乃僚,无以巧言令色,便辟侧媚,其惟吉士。仆臣正,厥后克正;仆臣谀,厥后自圣。后德惟臣,不德惟臣。尔无昵于憸人,充耳目之官,迪上以非先王之典。

  非人其吉,惟货其吉,若时,瘝厥官,惟尔大弗克祇厥辟,惟予汝辜。”王曰:“呜呼,钦哉!永弼乃后于彝宪。”

  !!周书 吕刑第二十九

  吕命穆王训夏赎刑,作《吕刑》。

  惟吕命,王享国百年,耄,荒度作刑,以诘四方。王曰:“若古有训,蚩尤惟始作乱,延及于平民,罔不寇贼,鸱义,奸宄,夺攘,矫虔。苗民弗用灵,制以刑,惟作五虐之刑曰法。杀戮无辜,爰始淫为劓、刵、椓、黥。越兹丽刑并制,罔差有辞。民兴胥渐,泯泯棼棼,罔中于信,以覆诅盟。虐威庶戮,方告无辜于上。上帝监民,罔有馨香德,刑发闻惟腥。皇帝哀矜庶戮之不辜,报虐以威,遏绝苗民,无世在下。乃命重、黎,绝地天通,罔有降格。群后之逮在下,明明棐常,鳏寡无盖。

  皇帝清问下民鳏寡有辞于苗。德威惟畏,德明惟明。乃命三后,恤功于民。

  伯夷降典,折民惟刑;禹平水土,主名山川;稷降播种,家殖嘉谷。三后成功,惟殷于民。士制百姓于刑之中,以教祗德。穆穆在上,明明在下,灼于四方,罔不惟德之勤,故乃明于刑之中,率乂于民棐彝。典狱非讫于威,惟讫于富。敬忌,罔有择言在身。惟克天德,自作元命,配享在下。”

  王曰:“嗟!四方司政典狱,非尔惟作天牧?今尔何监?非时伯夷播刑之迪?其今尔何惩?惟时苗民匪察于狱之丽,罔择吉人,观于五刑之中;惟时庶威夺货,断制五刑,以乱无辜,上帝不蠲,降咎于苗,苗民无辞于罚,乃绝厥世。”

  王曰:“呜呼!念之哉。伯父、伯兄、仲叔、季弟、幼子、童孙,皆听朕言,庶有格命。今尔罔不由慰曰勤,尔罔或戒不勤。天齐于民,俾我一日,非终惟终,在人。尔尚敬逆天命,以奉我一人!虽畏勿畏,虽休勿休。惟敬五刑,以成三德。

  一人有庆,兆民赖之,其宁惟永。”

  王曰:“吁!来,有邦有土,告尔祥刑。在今尔安百姓,何择,非人?何敬,非刑?何度,非及?两造具备,师听五辞。五辞简孚,正于五刑。五刑不简,正于五罚;五罚不服,正于五过。五过之疵:惟官,惟反,惟内,惟货,惟来。其罪惟均,其审克之!五刑之疑有赦,五罚之疑有赦,其审克之!简孚有众,惟貌有稽。无简不听,具严天威。墨辟疑赦,其罚百鍰,阅实其罪。劓辟疑赦,其罪惟倍,阅实其罪。

  剕辟疑赦,其罚倍差,阅实其罪。宫辟疑赦,其罚六百鍰,阅实其罪。大辟疑赦,其罚千鍰,阅实其罪。墨罚之属千。劓罚之属千,剕罚之属五百,宫罚之属三百,大辟之罚其属二百。五刑之属三千。

  上下比罪,无僣乱辞,勿用不行,惟察惟法,其审克之!上刑适轻,下服;下刑适重,上服。轻重诸罚有权。刑罚世轻世重,惟齐非齐,有伦有要。罚惩非死,人极于病。非佞折狱,惟良折狱,罔非在中。察辞于差,非从惟从。哀敬折狱,明启刑书胥占,咸庶中正。其刑其罚,其审克之。狱成而孚,输而孚。其刑上备,有并两刑。”

  王曰:“呜呼!敬之哉!官伯族姓,朕言多惧。朕敬于刑,有德惟刑。今天相民,作配在下。明清于单辞,民之乱,罔不中听狱之两辞,无或私家于狱之两辞!狱货非宝,惟府辜功,报以庶尤。永畏惟罚,非天不中,惟人在命。天罚不极,庶民罔有令政在于天下。”

  王曰:“呜呼!嗣孙,今往何监,非德?于民之中,尚明听之哉!哲人惟刑,无疆之辞,属于五极,咸中有庆。受王嘉师,监于兹祥刑。”

  !!周书 文侯之命第三十

  平王锡晋文侯秬鬯、圭瓒,作《文侯之命》。

  王若曰:“父义和!丕显文、武,克慎明德,昭升于上,敷闻在下;惟时上帝,集厥命于文王。亦惟先正克左右昭事厥辟,越小大谋猷罔不率从,肆先祖怀在位。呜呼!闵予小子嗣,造天丕愆。殄资泽于下民,侵戎我国家纯。即我御事,罔或耆寿俊在厥服,予则罔克。曰惟祖惟父,其伊恤朕躬!呜呼!有绩予一人永绥在位。父义和!汝克绍乃显祖,汝肇刑文、武,用会绍乃辟,追孝于前文人。

  汝多修,扞我于艰,若汝,予嘉。”

  王曰:“父义和!其归视尔师,宁尔邦。用赉尔秬鬯一卣,彤弓一,彤矢百,卢弓一,卢矢百,马四匹。父往哉!柔远能迩,惠康小民,无荒宁。简恤尔都,用成尔显德。”

  !!周书 费誓第三十一

  鲁侯伯禽宅曲阜,徐、夷并兴,东郊不开。作《费誓》。

  公曰:“嗟!人无哗,听命。徂兹淮夷、徐戎并兴。善乃甲胄,敿乃干,无敢不吊!备乃弓矢,锻乃戈矛,砺乃锋刃,无敢不善!今惟淫舍牿牛马,杜乃擭,敜乃穽,无敢伤牿。牿之伤,汝则有常刑!马牛其风,臣妾逋逃,勿敢越逐,祗复之,我商赉尔。乃越逐不复,汝则有常刑!无敢寇攘,逾垣墙,窃马牛,诱臣妾,汝则有常刑!甲戌,我惟征徐戎。峙乃糗粮,无敢不逮;汝则有大刑!鲁人三郊三遂,峙乃桢榦。甲戌,我惟筑,无敢不供;汝则有无馀刑,非杀。鲁人三郊三遂,峙乃刍茭,无敢不多;汝则有大刑!”

  !!周书 秦誓第三十二

  秦穆公伐郑,晋襄公帅师败诸崤,还归,作《秦誓》。

  公曰:“嗟!我士,听无哗!予誓告汝群言之首。古人有言曰:‘民讫自若,是多盘。’责人斯无难,惟受责俾如流,是惟艰哉!我心之忧,日月逾迈,若弗云来。惟古之谋人,则曰未就予忌;惟今之谋人,姑将以为亲。虽则云然,尚猷询兹黄发,则罔所愆。”

  番番良士,旅力既愆,我尚有之;仡仡勇夫,射御不违,我尚不欲。惟截截善谝言,俾君子易辞,我皇多有之!昧昧我思之,如有一介臣,断断猗无他技,其心休休焉,其如有容。人之有技,若己有之。人之彦圣,其心好之,不啻若自其口出。是能容之,以保我子孙黎民,亦职有利哉!人之有技,冒疾以恶之;人之彦圣而违之,俾不达是不能容,以不能保我子孙黎民,亦曰殆哉!邦之杌隉,曰由一人;邦之荣怀,亦尚一人之庆。”

  
!!周颂 清庙之什 清庙

于穆清庙,肃雍显相。济济多士,秉文之德。对越在天,骏奔走在庙。不显不承,无射于人斯。

!!周颂 清庙之什 维天之命

维天之命,于穆不已。于乎不显,文王之德之纯。假以溢我,我其收之。骏惠我文王,曾孙笃之。

!!周颂 清庙之什 维清

维清缉熙,文王之典。肇禋,迄用有成,维周之祯。

!!周颂 清庙之什 烈文

烈文辟公,锡兹祉福。惠我无疆,子孙保之。无封靡于尔邦,维王其崇之。

念兹戎功,继序其皇之。无竞维人,四方其训之。不显维德,百辟其刑之。於乎,前王不忘!

!!周颂 清庙之什 天作

天作高山,大王荒之。彼作矣,文王康之。彼徂矣,岐有夷之行。子孙保之。

!!周颂 清庙之什 昊天有成命

昊天有成命,二后受之。成王不敢康,夙夜基命宥密。於缉熙!单厥心,肆其靖之。

!!周颂 清庙之什 我将

我将我享,维羊维牛,维天其右之。仪式刑文王之典,日靖四方。伊嘏文王,既右飨之。我其夙夜,畏天之威,于时保之。

!!周颂 清庙之什 时迈

时迈其邦,昊天其子之,实右序有周。薄言震之,莫不震叠。怀柔百神,及河乔岳,允王维后。

明昭有周,式序在位。载戢干戈,载橐弓矢。我求懿德,肆于时夏,允王保之。

!!周颂 清庙之什 执竞

执竞武王,无竞维烈。不显成康,上帝是皇。自彼成康,奄有四方,斤斤其明。钟鼓喤々,磬筦将将,降福穰穰。降福简简,威仪反反。既醉既饱,福禄来反。

!!周颂 清庙之什 思文

思文后稷,克配彼天。立我烝民,莫匪尔极。贻我来牟,帝命率育,无此疆尔界。陈常于时夏。

!!周颂 臣工之什 臣工

嗟嗟臣工,敬尔在公。王厘尔成,来咨来茹。嗟嗟保介,维莫之春,亦又何求?如何新畲?于皇来牟,将受厥明。明昭上帝,迄用康年。命我众人:庤乃钱镈,奄观铚艾。

!!周颂 臣工之什 噫嘻

噫嘻成王,既昭假尔。率时农夫,播厥百谷。骏发尔私,终三十里。亦服尔耕,十千维耦。

周颂 臣工之什 振鹭

振鹭于飞,于彼西雍。我客戾止,亦有斯容。在彼无恶,在此无斁。庶几夙夜,以永终誉。

!!周颂 臣工之什 丰年

丰年多黍多稌,亦有高廪,万亿及秭。为酒为醴,烝畀祖妣。以洽百礼,降福孔皆。

!!周颂 臣工之什 有瞽

有瞽有瞽,在周之庭。设业设虡,崇牙树羽。应田县鼓,鞉磬柷圉。既备乃奏,箫管备举。喤々厥声,肃雍和鸣,先祖是听。我客戾止,永观厥成。

!!周颂 臣工之什 潜

猗与漆沮,潜有多鱼。有鳣有鲔,鲦鲿鰋鲤。以享以祀,以介景福。

!!周颂 臣工之什 雝

有来雝雝,至止肃肃。相维辟公,天子穆穆。于荐广牡,相予肆祀。假哉皇考!绥予孝子。宣哲维人,文武维后。燕及皇天,克昌厥后。绥我眉寿,介以繁祉,既右烈考,亦右文母。

!!周颂 臣工之什 载见

载见辟王,曰求厥章。龙旂阳阳,和铃央央。鞗革有鸧,休有烈光。率见昭考,以孝以享。以介眉寿,永言保之,思皇多祜。烈文辟公,绥以多福,俾缉熙于纯嘏。

!!周颂 臣工之什 有客

有客有客,亦白其马。有萋有且,敦琢其旅。有客宿宿,有客信信。言授之絷,以絷其马。薄言追之,左右绥之。既有淫威,降福孔夷。

!!周颂 臣工之什 武

于皇武王!无竞维烈。允文文王,克开厥后。嗣武受之,胜殷遏刘,耆定尔功。

!!周颂 闵予小子之什 闵予小子

闵予小子,遭家不造,嬛嬛在疚。于乎皇考,永世克孝。念兹皇祖,陟降庭止。维予小子,夙夜敬止。于乎皇王,继序思不忘。

!!周颂 闵予小子之什 访落

访予落止,率时昭考。于乎悠哉,朕未有艾。将予就之,继犹判涣。维予小子,未堪家多难。绍庭上下,陟降厥家。休矣皇考,以保明其身。

!!周颂 闵予小子之什 敬之

敬之敬之,天维显思,命不易哉。无曰高高在上,陟降厥士,日监在兹。维予小子,不聪敬止。日就月将,学有缉熙于光明。佛时仔肩,示我显德行。

!!周颂 闵予小子之什 小毖

予其惩,而毖后患。莫予{艹幵}蜂,自求辛螫。肇允彼桃虫,拚飞维鸟。未堪家多难,予又集于蓼。

!!周颂 闵予小子之什 载芟

载芟载柞,其耕泽泽。千耦其耘,徂隰徂畛。侯主侯伯,侯亚侯旅,侯彊侯以。有嗿其馌,思媚其妇,有依其士。有略其耜,俶载南亩,播厥百谷。实函斯活,驿驿其达。有厌其杰,厌厌其苗,绵绵其麃。载获济济,有实其积,万亿及秭。为酒为醴,烝畀祖妣,以洽百礼。有飶其香。邦家之光。有椒其馨,胡考之宁。匪且有且,匪今斯今,振古如兹。

!!周颂 闵予小子之什 良耜

畟畟良耜,俶载南亩。播厥百谷,实函斯活。或来瞻女,载筐及筥,其饟伊黍。其笠伊纠,其镈斯赵,以薅荼蓼。荼蓼朽止,黍稷茂止。获之挃々,积之栗栗。其崇如墉,其比如栉。以开百室,百室盈止,妇子宁止。杀时犉牡,有捄其角。以似以续,续古之人。

!!周颂 闵予小子之什 丝衣

丝衣其紑,载弁俅俅。自堂徂基,自羊徂牛,鼐鼎及鼒,兕觥其觩。旨酒思柔。不吴不敖,胡考之休。

!!周颂 闵予小子之什 酌

于铄王师,遵养时晦。时纯熙矣,是用大介。我龙受之,蹻々王之造。载用有嗣,实维尔公允师。

!!周颂 闵予小子之什 桓

绥万邦,屡丰年。天命匪解,桓桓武王。保有厥士,于以四方,克定厥家。于昭于天,皇以间之。

!!周颂 闵予小子之什 赉

文王既勤止,我应受之。敷时绎思,我徂维求定。时周之命,于绎思。

!!周颂 闵予小子之什 般

于皇时周!陟其高山,嶞山乔岳,允犹翕河。敷天之下,裒时之对。时周之命。

!!鲁颂 駉之什 駉

駉駉牡马,在坰之野。薄言駉者,有驈有皇,有骊有黄,以车彭彭。思无疆,思马斯臧。

駉駉牡马,在坰之野。薄言駉者,有骓有駓,有骍有骐,以车伾々。思无期,思马斯才。

駉駉牡马,在坰之野。溥言駉者,有驒有骆,有骝有雒,以车绎绎。思无斁,思马斯作。

駉駉牡马,在坰之野。薄言駉者,有骃有騢,有驔有鱼,以车祛祛。思无邪,思马斯徂。

  庄公(元年~三十二年)

  

  !庄公元年

  【经】元年春王正月。三月,夫人孙于齐。夏,单伯送王姬。秋,筑王姬之馆于外。冬十月乙亥,陈侯林卒。王使荣叔来锡桓公命。王姬归于齐。齐师迁纪、郱、鄑、郚。

  

  【传】元年春,不称即位,文姜出故也。

  三月,夫人孙于齐。不称姜氏,绝不为亲,礼也。

  秋,筑王姬之馆于外。为外,礼也。

  

  

  !庄公二年

  【经】二年春王二月,葬陈庄公。夏,公子庆父帅师伐于余丘。秋七月,齐王姬卒。冬十有二月,夫人姜氏会齐侯于禚。乙酉,宋公冯卒。

  

  【传】二年冬,夫人姜氏会齐侯于禚。书,奸也。

  

  

  !庄公三年

  【经】三年春王正月,溺会齐师伐卫。夏四月,葬宋庄公。五月,葬桓王。

  秋,纪季以酅入于齐。冬,公次于滑。

  

  【传】三年春,溺会齐师伐卫,疾之也。

  夏五月,葬桓王,缓也。

  秋,纪季以酅入于齐,纪于是乎始判。

  冬,公次于滑,将会郑伯,谋纪故也。郑伯辞以难。凡师,一宿为舍,再宿为信,过信为次。

  

  

  !庄公四年

  【经】四年春王二月,夫人姜氏享齐侯于祝丘。三月,纪伯姬卒。夏,齐侯、陈侯、郑伯遇于垂。纪侯大去其国。六月乙丑,齐侯葬纪伯姬。秋七月。冬,公及齐人狩于禚。

  

  【传】四年春,王三月,楚武王荆尸,授师孑焉,以伐随。将齐,入告夫人邓曼曰:“余心荡。”邓曼叹曰:“王禄尽矣。盈而荡,天之道也。先君其知之矣,故临武事,将发大命,而荡王心焉。若师徒无亏,王薨于行,国之福也。”

  王遂行,卒于樠木之下。令尹斗祁、莫敖屈重除道梁溠,营军临随。随人惧,行成。莫敖以王命入盟随侯,且请为会于汉汭而还。济汉而后发丧。

  纪侯不能下齐,以与纪季。夏,纪侯大去其国,违齐难也。

  

  

  !庄公五年

  【经】五年春王正月。夏,夫人姜氏如齐师。秋,郳犁来来朝。冬,公会齐人、宋人、陈人、蔡人伐卫。

  

  【传】五年秋,郳犁来来朝,名,未王命也。

  冬,伐卫,纳惠公也。

  

  

  !庄公六年

  【经】六年春王正月,王人子突救卫。夏六月,卫侯朔入于卫。秋,公至自伐卫。螟。冬,齐人来归卫俘。

  

  【传】六年春,王人救卫。

  夏,卫侯入,放公子黔牟于周,放宁跪于秦,杀左公子泄、右公子职,乃即位。

  君子以二公子之立黔牟为不度矣。夫能固位者,必度于本末而后立衷焉。不知其本,不谋。知本之不枝,弗强。《诗》云:“本枝百世。”

  冬,齐人来归卫宝,文姜请之也。

  楚文王伐申,过邓。邓祁侯曰:“吾甥也。”止而享之。骓甥、聃甥、养甥请杀楚子,邓侯弗许。三甥曰:“亡邓国者,必此人也。若不早图,后君噬齐。

  其及图之乎?图之,此为时矣。”邓侯曰:“人将不食吾余。”对曰:“若不从三臣,抑社稷实不血食,而君焉取余?”弗从。还年,楚子伐邓。十六年,楚复伐邓,灭之。

  

  

  !庄公七年

  【经】七年春,夫人姜氏会齐侯于防。夏四月辛卯,夜,恒星不见。夜中,星陨如雨。秋,大水。无麦苗。冬,夫人姜氏会齐侯于谷。

  

  【传】七年春,文姜会齐侯于防,齐志也。

  夏,恒星不见,夜明也。星陨如雨,与雨偕也。

  秋,无麦苗,不害嘉谷也。

  

  

  !庄公八年

  【经】八年春王正月,师次于郎,以俟陈人,蔡人。甲午,治兵。夏,师及齐师围郕,郕降于齐师。秋,师还。冬十有一月癸未,齐无知弑其君诸儿。

  

  【传】八年春,治兵于庙,礼也。

  夏,师及齐师围郕。郕降于齐师。仲庆父请伐齐师。公曰:“不可。我实不德,齐师何罪?罪我之由。《夏书》曰:‘皋陶迈种德,德,乃降。’姑务修德以待时乎。”秋,师还。君子是以善鲁庄公。

  齐侯使连称、管至父戍葵丘。瓜时而往,曰:“及瓜而代。”期戍,公问不至。请代,弗许。故谋作乱。

  僖公之母弟曰夷仲年,生公孙无知,有宠于僖公,衣服礼秩如适。襄公绌之。

  二人因之以作乱。连称有从妹在公宫,无宠,使间公,曰:“捷,吾以女为夫人。”

  冬十二月,齐侯游于姑棼,遂田于贝丘。见大豕,从者曰:“公子彭生也。”

  公怒曰:“彭生敢见!”射之,豕人立而啼。公惧,坠于车,伤足丧屦。反,诛屦于徒人费。弗得,鞭之,见血。走出,遇贼于门,劫而束之。费曰:“我奚御哉!”袒而示之背,信之。费请先入,伏公而出,斗,死于门中。石之纷如死于阶下。遂入,杀孟阳于床。曰:“非君也,不类。”见公之足于户下,遂弑之,而立无知。

  初襄公立,无常。鲍叔牙曰:“君使民慢,乱将作矣。”奉公子小白出奔莒。

  乱作,管夷吾、召忽奉公子纠来奔。

  初,公孙无知虐于雍廪。

  

  

  !庄公九年

  【经】九年春,齐人杀无知。公及齐大夫盟于既。夏,公伐齐纳子纠。齐小白入于齐。秋七月丁酉,葬齐襄公。八月庚申,及齐师战于乾时,我师败绩。九月,齐人取子纠杀之。冬,浚洙。

  

  【传】九年春,雍廪杀无知。

  公及齐大夫盟于蔇,齐无君也。

  夏,公伐齐,纳子纠。桓公自莒先入。

  秋,师及齐师战于乾时,我师败绩,公丧戎路,传乘而归。秦子、梁子以公旗辟于下道,是以皆止。

  鲍叔帅师来言曰:“子纠,亲也,请君讨之。管、召、仇也,请受而甘心焉。”

  乃杀子纠于生窦,召忽死之。管仲请囚,鲍叔受之,及堂阜而税之。归而以告曰:“管夷吾治于高傒,使相可也。”公从之。

  

  

  !庄公十年

  【经】十年春王正月,公败齐师于长勺。二月,公侵宋。三月,宋人迁宿。

  夏六月,齐师、宋师次于郎。公败宋师于乘丘。秋九月,荆败蔡师于莘,以蔡侯献舞归。冬十月,齐师灭谭,谭子奔莒。

  

  【传】十年春,齐师伐我。公将战,曹刿请见。其乡人曰:“肉食者谋之,又何间焉。刿曰:“肉食者鄙,未能远谋。”乃入见。问何以战。公曰:“衣食所安,弗敢专也,必以分人。”对曰:“小惠未遍,民弗从也。”公曰:“犠牲玉帛,弗敢加也,必以信。”对曰:“小信未孚,神弗福也。”公曰:“小大之狱,虽不能察,必以情。”对曰:“忠之属也,可以一战,战则请从。”

  公与之乘。战于长勺。公将鼓之。刿曰;“未可。”齐人三鼓,刿曰:“可矣。”齐师败绩。公将驰之。刿曰:“未可。”下,视其辙,登,轼而望之,曰:“可矣。”遂逐齐师。

  既克,公问其故。对曰:“夫战,勇气也,一鼓作气,再而衰,三而竭。彼竭我盈,故克之。夫大国难测也,惧有伏焉。吾视其辙乱,望其旗靡,故逐之。”

  夏六月,齐师、宋师次于郎。公子偃曰:“宋师不整,可败也。宋败,齐必还,请击之。”公弗许。自雩门窃出,蒙皋比而先犯之。公从之。大败宋师于乘丘。齐师乃还。

  蔡哀侯娶于陈,息侯亦娶焉。息妫将归,过蔡。蔡侯曰:“吾姨也。”止而见之,弗宾。息侯闻之,怒,使谓楚文王曰:“伐我,吾求救于蔡而伐之。”楚子从之。秋九月,楚败蔡师于莘,以蔡侯献舞归。

  齐侯之出也,过谭,谭不礼焉。及其入也,诸侯皆贺,谭又不至。冬,齐师灭谭,谭无礼也。谭子奔莒,同盟故也。

  

  

  !庄公十一年

  【经】十有一年春王正月。夏五月,戊寅,公败宋师于鄑。秋,宋大水。

  冬,王姬归于齐。

  

  【传】十一年夏,宋为乘丘之役故侵我。公御之,宋师未陈而薄之,败诸鄑。

  凡师,敌未陈曰败某师,皆陈曰战,大崩曰败绩,得俊曰克,覆而败之曰取某师,京师败曰王师败绩于某。

  秋,宋大水。公使吊焉,曰:“天作淫雨,害于粢盛,若之何不吊?”对曰:“孤实不敬,天降之灾,又以为君忧,拜命之辱。”臧文仲曰:“宋其兴乎。禹、汤罪己,其兴也悖焉,桀、纣罪人,其亡也忽焉。且列国有凶称孤,礼也。言惧而名礼,其庶乎。”既而闻之曰公子御说之辞也。臧孙达曰:“是宜为君,有恤民之心。”

  冬,齐侯来逆共姬。

  乘丘之役,公以金仆姑射南宫长万,公右遄孙生搏之。宋人请之,宋公靳之,曰:“始吾敬子,今子,鲁囚也。吾弗敬子矣。”病之。

  

  

  !庄公十二年

  【经】十有二年春王三月,纪叔姬归于酅。夏四月。秋八月甲午,宋万弑其君捷及其大夫仇牧。十月,宋万出奔陈。

  

  【传】十二年秋,宋万弑闵公于蒙泽。遇仇牧于门,批而杀之。遇大宰督于东宫之西,又杀之。立子游。群公子奔萧。公子御说奔亳。南宫牛、猛获帅师围亳。

  冬十月,萧叔大心及戴、武、宣、穆、庄之族以曹师伐之。杀南宫牛于师,杀子游于宋,立桓公。猛获奔卫。南宫万奔陈,以乘车辇其母,一日而至。

  宋人请猛获于卫,卫人欲勿与,石祁子曰:“不可。天下之恶一也,恶于宋而保于我,保之何补?得一夫而失一国,与恶而弃好,非谋也。”卫人归之。亦请南宫万于陈,以赂。陈人使妇人饮之酒,而以犀革裹之。比及宋,手足皆见。

  宋人皆醢之。

  

  

  !庄公十三年

  【经】十有三年春,齐侯、宋人、陈人、蔡人、邾人会于北杏。夏六月,齐人灭遂。秋七月。冬,公会齐侯盟于柯。

  

  【传】十三年春,会于北杏,以平宋乱。遂人不至。

  夏,齐人灭遂而戍之。

  冬,盟于柯,始及齐平也。

  宋人背北杏之会。

  

  

  !庄公十四年

  【经】十有四年春,齐人、陈人、曹人伐宋。夏,单伯会伐宋。秋七月,荆入蔡。冬,单伯会齐侯、宋公、卫侯、郑伯于鄄。

  

  【传】十四年春,诸侯伐宋,齐请师于周。夏,单伯会之,取成于宋而还。

  郑厉公自栎侵郑,及大陵,获傅瑕。傅瑕曰:“苟舍我,吾请纳君。”与之盟而赦之。六月甲子,傅瑕杀郑子及其二子而纳厉公。

  初,内蛇与外蛇斗于郑南门中,内蛇死。六年而厉公入。公闻之,问于申繻曰:“犹有妖乎?”对曰:“人之所忌,其气焰以取之,妖由人兴也。人无衅焉,妖不自作。人弃常则妖兴,故有妖。”

  厉公入,遂杀傅瑕。使谓原繁曰:“傅瑕贰,周有常刑,既伏其罪矣。纳我而无二心者,吾皆许之上大夫之事,吾愿与伯父图之。且寡人出,伯父无里言,入,又不念寡人,寡人憾焉。”对曰:“先君桓公命我先人典司宗祏。社稷有主而外其心,其何贰如之?苟主社稷,国内之民其谁不为臣?臣无二心,天之制也。子仪在位十四年矣,而谋召君者,庸非二乎。庄公之子犹有八人,若皆以官爵行赂劝贰而可以济事,君其若之何?臣闻命矣。”乃缢而死。

  蔡哀侯为莘故,绳息妫以语楚子。楚子如息,以食入享,遂灭息。以息妫归,生堵敖及成王焉,未言。楚子问之,对曰:“吾一妇人而事二夫,纵弗能死,其又奚言?”楚子以蔡侯灭息,遂伐蔡。秋七月,楚入蔡。

  君子曰:“《商书》所谓‘恶之易也,如火之燎于原,不可乡迩,其犹可扑灭’者,其如蔡哀侯乎。”

  冬,会于鄄,宋服故也。

  

  

  !庄公十五年

  【经】十有五年春,齐侯、宋公、陈侯、卫侯、郑伯会于鄄。夏,夫人姜氏如齐。秋,宋人、齐人、邾人伐郳。郑人侵宋。冬十月。

  

  【传】十五年春,复会焉,齐始霸也。

  秋,诸侯为宋伐郳。郑人间之而侵宋。

  

  

  !庄公十六年

  【经】十有六年春王正月。夏,宋人、齐人、卫人伐郑。秋,荆伐郑。冬十有二月,会齐侯、宋公、陈侯、卫侯、郑伯、许男、滑伯、滕子同盟于幽。邾子克卒。

  

  【传】十六年夏,诸侯伐郑,宋故也。

  郑伯自栎入,缓告于楚。秋,楚伐郑,及栎,为不礼故也。

  郑伯治与于雍纠之乱者。九月,杀公子阏,刖强鉏。公父定叔出奔卫。三年而复之,曰:“不可使共叔无后于郑。”使以十月入,曰:“良月也,就盈数焉。”

  君子谓:“强鉏不能卫其足。”

  冬,同盟于幽,郑成也。

  王使虢公命曲沃伯以一军为晋侯。

  初,晋武公伐夷,执夷诡诸。蒍国请而免之。既而弗报。故子国作乱,谓晋人曰:“与我伐夷而取其地。”遂以晋师伐夷,杀夷诡诸。周公忌父出奔虢。惠王立而复之。

  

  

  !庄公十七年

  【经】十有七年春,齐人执郑詹。夏,齐人歼于遂。秋,郑詹自齐逃来。冬,多麋。

  

  【传】十七年春,齐人执郑詹,郑不朝也。

  夏,遂因氏,颌氏、工娄氏、须遂氏飨齐戍,醉而杀之,齐人歼焉。

  

  

  !庄公十八年

  【经】十有八年春王三月,日有食之。夏,公追戎于济西。秋,有蜮。冬十月。

  

  【传】十八年春,虢公、晋侯朝王,王飨醴,命之宥,皆赐玉五瑴,马三匹。

  非礼也。王命诸侯,名位不同,礼亦异数,不以礼假人。

  虢公、晋侯、郑伯使原庄公逆王后于陈。陈妫归于京师,实惠后。

  夏,公追戎于济西。不言其来,讳之也。

  秋,有蜮,为灾也。

  初,楚武王克权,使斗缗尹之。以叛,围而杀之。迁权于那处,使阎敖尹之。

  及文王即位,与巴人伐申而惊其师。巴人叛楚而伐那处,取之,遂门于楚。阎敖游涌而逸。楚子杀之,其族为乱。冬,巴人因之以伐楚。

  

  

  !庄公十九年

  【经】十有九年春王正月。夏四月。秋,公子结媵陈人之妇于鄄,遂及齐侯、宋公盟。夫人姜氏如莒。冬,齐人、宋人、陈人伐我西鄙。

  

  【传】十九年春,楚子御之,大败于津。还,鬻拳弗纳。遂伐黄,败黄师于碏陵。还,及湫,有疾。夏六月庚申卒,鬻拳葬诸夕室,亦自杀也,而葬于绖初,鬻拳强谏楚子,楚子弗从,临之以兵,惧而从之。鬻拳曰:“吾惧君以皇。兵,罪莫大焉。”遂自刖也。楚人以为大阍,谓之大伯,使其后掌之。君子曰:“鬻拳可谓爱君矣,谏以自纳于刑,刑犹不忘纳君于善。”

  初,王姚嬖于庄王,生子颓。子颓有宠,蒍国为之师。及惠王即位,取蒍国之圃以为囿,边伯之宫近于王宫,王取之。王夺子禽,祝跪与詹父田,而收膳夫之秩。故蒍国、边伯、石速、詹父、子禽祝跪作乱,因苏氏。秋,五大夫奉子颓以伐王,不克,出奔温。苏子奉子颓以奔卫。卫师、燕师伐周。冬,立子颓。

  

  

  !庄公二十年

  【经】二十年春王二月,夫人姜氏如莒。夏,齐大灾。秋七月。冬,齐人伐戎。

  

  【传】二十年春,郑伯和王室,不克。执燕仲父。夏,郑伯遂以王归,王处于栎。秋,王及郑伯入于邬。遂入成周,取其宝器而还。

  冬,王子颓享五大夫,乐及遍舞。郑伯闻之,见虢叔,曰:“寡人闻之,哀乐失时,殃咎必至。今王子颓歌舞不倦,乐祸也。夫司寇行戮,君为之不举,而况敢乐祸乎!奸王之位,祸孰大焉?临祸忘忧,忧必及之。盍纳王乎?”虢公曰:“寡人之愿也。”

  

  

  !庄公二十一年

  【经】二十有一年春,王正月。夏五月辛酉,郑伯突卒。秋七月戊戌,夫人姜氏薨。冬十有二月,葬郑厉公。

  

  【传】二十一年春,胥命于弭。夏,同伐王城。郑伯将王,自圉门入,虢叔自北门入,杀王子颓及五大夫。郑伯享王于阙西辟,乐备。王与之武公之略,自虎牢以东。原伯曰:“郑伯效尤,其亦将有咎。”五月,郑厉公卒。

  王巡虢守。虢公为王宫于玤,王与之酒泉。郑伯之享王也,王以后之鞶鉴予之。虢公请器,王予之爵。郑伯由是始恶于王。

  冬,王归自虢。

  

  

  !庄公二十二年

  【经】二十二年春王正月,肆大眚。癸丑,葬我小君文姜。陈人杀其公子御寇。夏五月。秋七月丙申,及齐高傒盟于防。冬,公如齐纳币。

  

  【传】二十二年春,陈人杀其大子御寇,陈公子完与颛孙奔齐。颛孙自齐来奔。

  齐侯使敬仲为卿。辞曰:“羁旅之臣,幸若获宥,及于宽政,赦其不闲于教训而免于罪戾,弛于负担,君之惠也,所获多矣。敢辱高位,以速官谤。请以死告。《诗》云:‘翘翘车乘,招我以弓,岂不欲往,畏我友朋。’”使为工正。

  饮桓公酒,乐。公曰:“以火继之。”辞曰:“臣卜其昼,未卜其夜,不敢。”

  君子曰:“酒以成礼,不继以淫,义也。以君成礼,弗纳于淫,仁也。”

  初,懿氏卜妻敬仲,其妻占之,曰:“吉,是谓‘凤皇于飞,和鸣锵锵,有妫之后,将育于姜。五世其昌,并于正卿。八世之后,莫之与京。’”陈厉公,蔡出也。故蔡人杀五父而立之,生敬仲。其少也。周史有以《周易》见陈侯者,陈侯使筮之,遇《观》之《否》。曰:“是谓‘观国之光,利用宾于王。’此其代陈有国乎。不在此,其在异国;非此其身,在其子孙。光,远而自他有耀者也。

  《坤》,土也。《巽》,风也。《乾》,天也。风为天于土上,山也。有山之材而照之以天光,于是乎居土上,故曰:‘观国之光,利用宾于王。’庭实旅百,奉之以玉帛,天地之美具焉,故曰:‘利用宾于王。’犹有观焉,故曰其在后乎。

  风行而著于土,故曰其在异国乎。若在异国,必姜姓也。姜,大岳之后也。山岳则配天,物莫能两大。陈衰,此其昌乎。”

  及陈之初亡也,陈桓子始大于齐。其后亡也,成子得政。

  

  

  !庄公二十三年

  【经】二十有三年春,公至自齐。祭叔来聘。夏,公如齐观社。公至自齐。

  荆人来聘。公及齐侯遇于谷。萧叔朝公。秋,丹桓宫楹。冬十有一月,曹伯射姑卒。十有二月甲寅,公会齐侯盟于扈。

  

  【传】二十三年夏,公如齐观社,非礼也。曹刿谏曰:“不可。夫礼,所以整民也。故会以训上下之则,制财用之节;朝以正班爵之义,帅长幼之序;征伐以讨其不然。诸侯有王,王有巡守,以大习之。非是,君不举矣。君举必书,书而不法,后嗣何观?”晋桓、庄之族逼,献公患之。士蒍曰:“去富子,则群公子可谋也已。”公曰:“尔试其事。”士蒍与群公子谋,谮富子而去之。

  秋,丹桓宫之楹。

  

  

  !庄公二十四年

  【经】二十有四年春王三月,刻桓宫桷。葬曹庄公。夏,公如齐逆女。秋,公至自齐。八月丁丑,夫人姜氏入。戊寅,大夫宗妇觌,用币。大水。冬,戎侵曹。曹羁出奔陈。赤归于曹。郭公。

  

  【传】二十四年春,刻其桷,皆非礼也。御孙谏曰:“臣闻之:‘俭,德之共也;侈,恶之大也。’先君有共德而君纳诸大恶,无乃不可乎!”秋,哀姜至。公使宗妇觌,用币,非礼也。御孙曰:“男贽大者玉帛,小者禽鸟,以章物也。女贽不过榛栗枣修,以告虔也。今男女同贽,是无别也。男女之别,国之大节也。而由夫人乱之,无乃不可乎!”晋士蒍又与群公子谋,使杀游氏之二子。士蒍告晋侯曰:“可矣。不过二年,君必无患。”

  

  

  !庄公二十五年

  【经】二十有五年春,陈侯使女叔来聘。夏五月癸丑,卫侯朔卒。六月辛未,朔,日有食之,鼓,用牲于社。伯姬归于杞。秋,大水,鼓,用牲于社、于门。

  冬,公子友如陈。

  

  【传】二十五年春,陈女叔来聘,始结陈好也。嘉之,故不名。

  夏六月辛未,朔,日有食之。鼓,用牲于社,非常也。唯正月之朔,慝未作,日有食之,于是乎用币于社,伐鼓于朝。

  秋,大水。鼓,用牲于社、于门,亦非常也。凡天灾,有币无牲。非日月之眚,不鼓。

  晋士蒍使群公子尽杀游氏之族,乃城聚而处之。

  冬,晋侯围聚,尽杀群公子。

  

  

  !庄公二十六年

  【经】二十有六年春,公伐戎。夏,公至自伐戎。曹杀其大夫。秋,公会宋人、齐人,伐徐。冬十有二月癸亥,朔,日有食之。

  

  【传】二十六年春,晋士蒍为大司空。

  夏,士蒍城绛,以深其宫。

  秋,虢人侵晋。冬,虢人又侵晋。

  

  

  !庄公二十七年

  【经】二十有七年春,公会杞伯姬于洮。夏六月,公会齐侯、宋公、陈侯、郑伯同盟于幽。秋,公子友如陈,葬原仲。冬,杞伯姬来。莒庆来逆叔姬。杞伯来朝。公会齐侯于城濮。

  

  【传】二十七年春,公会杞伯姬于洮,非事也。天子非展义不巡守,诸侯非民事不举,卿非君命不越竟。

  夏,同盟于幽,陈、郑服也。

  秋,公子友如陈,葬原仲,非礼也。原仲,季友之旧也。

  冬,杞伯姬来,归宁也。凡诸侯之女,归宁曰来,出曰来归。夫人归宁曰如某,出曰归于某。

  晋侯将伐虢,士蒍曰:“不可,虢公骄,若骤得胜于我,必弃其民。无众而后伐之,欲御我谁与?夫礼乐慈爱,战所畜也。夫民让事乐和,爱亲哀丧而后可用也。虢弗畜也,亟战将饥。”

  王使召伯廖赐齐侯命,且请伐卫,以其立子颓也。

  

  

  !庄公二十八年

  【经】二十有八年春,王三月甲寅,齐人伐卫。卫人及齐人战,卫人败绩。

  夏四月丁未,邾子琐卒。秋,荆伐郑,公会齐人、宋人救郑。冬,筑郿。大无麦、禾,臧孙辰告籴于齐。

  

  【传】二十八年春,齐侯伐卫。战,败卫师。数之以王命,取赂而还。

  晋献公娶于贾,无子。烝于齐姜,生秦穆夫人及大子申生。又娶二女于戎,大戎狐姬生重耳,小戎子生夷吾。晋伐骊戎,骊戎男女以骊姬。归生奚齐。其娣生卓子。骊姬嬖,欲立其子,赂外嬖梁五,与东关嬖五,使言于公曰:“曲沃,君之宗也。蒲与二屈,君之疆也。不可以无主。宗邑无主则民不威,疆埸无主则启戎心。戎之生心,民慢其政,国之患也。若使大子主曲沃,而重耳、夷吾主蒲与屈,则可以威民而惧戎,且旌君伐。”使俱曰:“狄之广莫,于晋为都。晋之启土,不亦宜乎?”晋侯说之。夏,使大子居曲沃,重耳居蒲城,夷吾居屈。群公子皆鄙,唯二姬之子在绛。二五卒与骊姬谮群公子而立奚齐,晋人谓之二耦。

  楚令尹子元欲蛊文夫人,为馆于其宫侧,而振万焉。夫人闻之,泣曰:“先君以是舞也,习戎备也。今令尹不寻诸仇雠,而于未亡人之侧,不亦异乎!”御人以告子元。子元曰:“妇人不忘袭仇,我反忘之!”秋,子元以车六百乘伐郑,入于桔柣之门。子元、斗御疆、斗梧、耿之不比为旆,斗班、王孙游、王孙喜殿。众车入自纯门,及逵市。县门不发,楚言而出。子元曰:“郑有人焉。”诸侯救郑,楚师夜遁。郑人将奔桐丘,谍告曰:“楚幕有乌。”乃止。

  冬,饥。臧孙辰告籴于齐,礼也。

  筑郿,非都也。凡邑有宗庙先君之主曰都,无曰邑。邑曰筑,都曰城。

  

  

  !庄公二十九年

  【经】二十有九年春,新延厩。夏,郑人侵许。秋,有蜚。冬十有二月,纪叔姬卒。城诸及防。

  

  【传】二十九年春,新作延厩。书,不时也。凡马日中而出,日中而入。

  夏,郑人侵许。凡师有钟鼓曰伐,无曰侵,轻曰袭。

  秋,有蜚,为灾也。凡物不为灾不书。

  冬十二月,城诸及防,书,时也。凡土功,龙见而毕务,戒事也。火见而致用,水昏正而栽,日至而毕。

  樊皮叛王。

  

  

  !庄公三十年

  【经】三十年春王正月。夏,次于成。秋七月,齐人降鄣。八月癸亥,葬纪叔姬。九月庚午朔,日有食之,鼓,用牲于社。冬,公及齐侯遇于鲁济。齐人伐山戎。

  

  【传】三十年春,王命虢公讨樊皮。夏四月丙辰,虢公入樊,执樊仲皮,归于京师。

  楚公子元归自伐郑,而处王宫,斗射师谏,则执而梏之。

  秋,申公斗班杀子元,斗谷於菟为令尹,自毁其家以纾楚国之难。

  冬,遇于鲁济,谋山戎也,以其病燕故也。

  

  

  !庄公三十一年

  【经】三十有一年春,筑台于郎。夏四月,薛伯卒。筑台于薛。六月,齐侯来献戎捷。秋,筑台于秦。冬,不雨。

  

  【传】三十一年夏六月,齐侯来献戎捷,非礼也。凡诸侯有四夷之功,则献于王,王以警于夷。中国则否。诸侯不相遗俘。

  

  

  !庄公三十二年

  【经】三十有二年春,城小谷。夏,宋公、齐侯遇于梁丘。秋七月癸巳,公子牙卒。八月癸亥,公薨于路寝。冬十月己未,子般卒。公子庆父如齐。狄伐邢。

  

  【传】三十二年春,城小谷,为管仲也。

  齐侯为楚伐郑之故,请会于诸侯。宋公请先见于齐侯。夏,遇于梁丘。

  秋七月,有神降于莘。

  惠王问诸内史过曰:“是何故也?”对曰:“国之将兴,明神降之,监其德也;将亡,神又降之,观其恶也。故有得神以兴,亦有以亡,虞、夏、商、周皆有之。”王曰:“若之何?”对曰:“以其物享焉,其至之日,亦其物也。”王从之。内史过往,闻虢请命,反曰:“虢必亡矣,虐而听于神。”

  神居莘六月。虢公使祝应、宗区、史嚚享焉。神赐之土田。史嚚曰:“虢其亡乎!吾闻之:国将兴,听于民;将亡,听于神。神,聪明正直而一者也,依人而行。虢多凉德,其何土之能得!”初,公筑台临党氏,见孟任,从之。閟,而以夫人言许之。割臂盟公,生子般焉。雩,讲于梁氏,女公子观之。圉人荦自墙外与之戏。子般怒,使鞭之。公曰:“不如杀之,是不可鞭。荦有力焉,能投盖于稷门。”

  公疾,问后于叔牙。对曰:“庆父材。”问于季友,对曰:“臣以死奉般。”

  公曰:“乡者牙曰庆父材。”成季使以君命命僖叔待于鍼巫氏,使鍼季鸩之,曰:“饮此则有后于鲁国,不然,死且无后。”饮之,归及逵泉而卒,立叔孙氏。

  八月癸亥,公薨于路寝。子般即位,次于党氏。冬十月己未,共仲使圉人荦贼子般于党氏。成季奔陈。立闵公。

  
 《礼记缁衣》

  

  子言之曰:“为上易事也,为下易知也,则刑不烦矣。”

  

  子曰:“好贤如缁衣,恶恶如巷伯,则爵不渎而民作愿,刑不试而民咸服。大雅曰:‘仪刑文王,万国作孚。’”

  

  子曰:“夫民,教之以德,齐之以礼,则民有格心;教之以政,齐之以刑,则民有遯心。故君民者,子以爱之,则民亲之,信以结之,则民不倍,恭以莅之,则民有孙心。甫刑曰:‘苗民匪用命,制以刑。’惟作五虐之刑曰法,是以民有恶德,而遂绝其世也。”

  

  子曰:“下之事上也,不从其所令,从其所行。上好是物,下必有甚者矣。故上之所好恶不可不慎也,是民之表也。”

  

  子曰:“禹立三年,百姓以仁遂焉。岂必尽仁。诗云:‘赫赫师尹,民具尔瞻。’甫刑曰:‘一人有庆,兆民赖之。’大雅曰:‘成王之孚,下土之式。’”

  

  子曰:“上好仁,则下之为仁争先人。故长民者,章志,贞教,尊仁,以子爱百姓,民致行己以说其上矣。诗云:‘有梏德行,四国顺之。’”

  

  子曰:“王言如丝,其出如纶;王言如纶,其出如綍。故大人不倡游言。可言也,不可行,君子弗言也;可行也,不可言,君子弗行也。则民言不危行,而行不危言矣。诗云:‘淑慎尔止,不■(上“侃”下“言”,同“愆”)于仪。’”

  

  子曰:“君子道人以言而禁人以行,故言必虑其所终而行必稽其所敝,则民谨于言而慎于行。诗云:‘慎尔出话,敬尔威仪。’大雅曰:‘穆穆文王,于缉熙敬止。’”

  

  子曰:“长民者,衣服不贰,从容有常,以齐其民,则民德壹。诗云:‘彼都人士,狐裘黄黄。其容不改,出言有章。行归于周,万民所望。’”

  

  子曰:“为上可望而知也,为下可述而志也,则君不疑于其臣,而臣不惑于其君矣!尹吉曰:‘惟尹躬及汤,咸有壹德。’诗云:‘淑人君子,其仪不忒。’”

  

  子曰:“有国者章善癉恶以示民厚,则民情不贰。诗云:‘靖共尔位,好是正直。’”

  

  子曰:“上人疑则百姓惑,下难知则君长劳,故君民者章好以示民俗,慎恶以御民之淫,则民不惑矣。臣仪行,不重辞,不援其所不及,不烦其所不知,则君不劳矣。诗云:‘上帝板板,下民卒■(左“疒”右“澶”之右)。’小雅曰:‘匪其止共,惟王之邛。’”

  

  子曰:“政之不行也,教之不成也,爵禄不足劝也,刑罚不足耻也。故上不可以亵刑而轻爵。康诰曰:‘敬明乃罚。’甫刑曰:‘播刑之不迪。’”

  

  子曰:“大臣不亲,百姓不宁,则忠敬不足,而富贵已过也。大臣不治,而迩臣比矣。故大臣不可不敬也,是民之表也。迩臣不可不慎也,是民之道也。君毋以小谋大,毋以远言近,毋以内图外,则大臣不怨,迩臣不疾,而远臣不蔽矣。叶公之顾命曰:‘毋以小谋败大作,毋以嬖御人疾庄言,毋以嬖御士疾庄士、大夫、卿士。’”

  

  子曰:“大人不亲其所贤而信其所贱,民是以亲失,而教是以烦。诗云:‘彼求我则,如不我得。执我仇仇,亦不我力。君陈曰:‘未见圣,若已弗克见。既见圣,亦不克由圣。’”

  

  子曰:“小人溺于水,君子溺于口,大人溺于民,皆在其所亵也。夫水近于人而溺人;德易狎而难亲也,易以溺人;口费而烦,易出难悔,易以溺人;夫民闭于人而有鄙心,可敬不可慢,易以溺人。故君子不可以不慎也。太甲曰:‘毋越厥命,以自覆也。若虞机张,往省括于厥度则释。’兑命曰:‘惟口起羞,惟甲胄起兵,惟衣裳在笥,惟干戈省厥躬。’太甲曰:‘天作孽,可违也。自作孽,不可以以逭。’尹吉曰:‘惟尹躬天见于西邑夏,自周有终,相亦惟终。’”

  

  子曰:“民以君为心,君以民为体。心庄则体舒,心肃则容敬,心好之身必安之。君好之,民必欲之。心以体全,亦以体伤。君以民存,亦以民亡。诗云:‘昔吾有先正,其言明且清。国家以宁,都邑以成,庶民以生。谁能秉国成,不自为正,卒劳百姓。’君雅曰:‘夏日暑雨,小民惟曰怨。资冬祁寒,小民亦惟曰怨。’”

  

  子曰:“下之事上也,身不正、言不信则义不壹、行无类也。”

  

  子曰:“言有物而行有格也,是以生则不可夺志,死则不可夺名。故君子多闻,质而守之。多志,质而亲之。精知,略而行之。君陈曰:‘出入自尔师虞,庶言同。’诗云:‘淑人君子,其仪一也。’”

  

  子曰:“唯君子能好其正,小人毒其正。故君子之朋友有乡,其恶有方。是故迩者不惑而远者不疑也。诗云:‘君子好仇。’”

  

  子曰:“轻绝贫贱而重绝富贵,则好贤不坚而恶恶不著也,人虽曰不利,吾不信也。诗云:‘朋友攸摄,摄以威仪。’”

  

  子曰:“私惠不归德,君子不自留焉。诗云:‘人之好我,示我周行。’”

  

  子曰:“苟有车,必见其轼。苟有衣,必见其敝。人苟或言之,必闻其声。苟或行之,必见其成。葛覃曰:‘服之无射。’”

  

  子曰:“言从而行之,则言不可饰也;行从而言之,则行不可饰也。故君子寡言而行以成其信,则民不得大其美而小其恶。诗云:‘白圭之玷,尚可磨也。斯言之玷,不可为也。’小雅曰:‘允也君子,展也大成。’君奭曰:‘昔在上帝,周田观文王之德,其集大命于厥躬。’”

  

  子曰:“南人有言曰:‘人而无恒,不可以为卜筮。’古之遗言,与龟筮犹不能知也,而况于人乎?诗云:‘我龟既厌,不我告犹。’兑命曰:‘爵无及恶德民,立而正事,纯而祭祀,是为不敬。事烦则乱,事神则难。’易曰:‘不恒其德,或承之羞。恒其德侦,妇人吉,夫子凶。’”

  
 

  子罕第九

  

  子罕言利与命与仁。

  达巷党人曰:“大哉孔子,博学而无所成名。”子闻之,谓门弟子曰:“吾何执?执御乎,执射乎?吾执御矣。”

  子曰:“麻冕,礼也;今也纯,俭,吾从众。拜下,礼也;今拜乎上,泰也。

  虽违众,吾从下。”

  子绝四:毋意,毋必,毋固,毋我。

  子畏于匡,曰:“文王既没,文不在兹乎?天之将丧斯文也,后死者不得与于斯文也;天之未丧斯文也,匡人其如予何?”太宰问于子贡曰:“夫子圣者与?何其多能也?”子贡曰:“固天纵之将圣,又多能也。”

  子闻之,曰:“太宰知我乎!吾少也贱,故多能鄙事。君子多乎哉?不多也!”牢曰:“子云:‘吾不试,故艺。’”子曰:“吾有知乎哉?无知也。有鄙夫问于我,空空如也。我叩其两端而竭焉。”

  子曰:“凤鸟不至,河不出图,吾已矣夫!”子见齐衰者、冕衣裳者与瞽者,见之,虽少,必作;过之,必趋。

  颜渊喟然叹曰:“仰之弥高,钻之弥坚。瞻之在前,忽焉在后。夫子循循然善诱人,博我以文,约我以礼,欲罢不能。既竭吾才,如有所立卓尔,虽欲从之,末由也已。”

  子疾病,子路使门人为臣。病间,曰:“久矣哉,由之行诈也!无臣而为有臣。吾谁欺,欺天乎!且予与其死于臣之手也,无宁死于二三子之手乎!且予纵不得大葬,予死于道路乎?”子贡曰:“有美玉于斯,韫椟而藏诸?求善贾而沽诸?”子曰:“沽之哉!沽之哉!我待贾者也。”

  子欲居九夷。或曰:“陋,如之何?”子曰:“君子居之,何陋之有?”子曰:“吾自卫反鲁,然后乐正,《雅》、《颂》各得其所。”

  子曰:“出则事公卿,入则事父兄,丧事不敢不勉,不为酒困,何有于我哉。”

  子在川上曰:“逝者如斯夫,不舍昼夜!”子曰:“吾未见好德如好色者也。”

  子曰:“譬如为山,未成一篑,止,吾止也。譬如平地,虽覆一篑,进,吾往也。”

  子曰:“语之而不惰者,其回也与。”

  子谓颜渊曰:“惜乎!吾见其进也,未见其止也!”子曰:“苗而不秀者有矣夫!秀而不实者有矣夫!”子曰:“后生可畏,焉知来者之不如今也?四十、五十而无闻焉,斯亦不足畏也已。”

  子曰:“法语之言,能无从乎?改之为贵。巽与之言,能无说乎?绎之为贵。

  说而不绎,从而不改,吾末如之何也已矣。”

  子曰:“主忠信,毋友不如己者,过则勿惮改。”

  子曰:“三军可夺帅也,匹夫不可夺志也。”

  子曰:“衣敝缊袍,与衣狐貉者立,而不耻者,其由也与。‘不忮不求,何用不臧?’”子路终身诵之。子曰:“是道也,何足以臧?”子曰:“岁寒然后知松柏之后凋也!”子曰:“知者不惑,仁者不忧,勇者不惧。”

  子曰:“可与共学,未可与适道;可与适道,未可与立;可与立,未可与权。”

  “唐棣之华,偏其反而。岂不尔思?室是远而。”子曰:“未之思也,夫何远之有。”

  
  

  子路第十三

  

  子路问政。子曰:“先之劳之。”

  请益。曰:“无倦。”

  仲弓为季氏宰。问政。子曰:“先有司,赦小过,举贤才。”

  曰:“焉知贤才而举之?”曰:“举尔所知,尔所不知,人其舍诸?”子路曰:“卫君待子而为政,子将奚先?”子曰:“必也正名乎!”子路曰:“有是哉,子之迂也!奚其正?”子曰:“野哉,由也!君子于其所不知,盖阙如也。名不正,则言不顺;言不顺,则事不成;事不成,则礼乐不兴;礼乐不兴,则刑罚不中;刑罚不中,则民无所错手足。故君子名之必可言也,言之必可行也。君子于其言,无所苟而已矣。”

  樊迟请学稼。子曰:“吾不如老农。”

  请学为圃。曰:“吾不如老圃。”

  樊迟出。子曰:“小人哉,樊须也!上好礼,则民莫敢不敬;上好义,则民莫敢不服;上好信,则民莫敢不用情。夫如是,则四方之民襁负其子而至矣,焉用稼?”子曰:“诵《诗》三百,授之以政,不达;使于四方,不能专对;虽多,亦奚以为?”子曰:“其身正,不令而行;其身不正,虽令不从。”

  子曰:“鲁、卫之政,兄弟也。”

  子谓卫公子荆:“善居室。始有,曰:‘苟合矣。’少有,曰:‘苟完矣。’富有,曰:‘苟美矣。’”子适卫,冉有仆。子曰:“庶矣哉!”冉有曰:“既庶矣,又何加焉?”曰:“富之。”

  曰:“既富矣,又何加焉?”曰:“教之。”

  子曰:“苟有用我者,期月而已可也,三年有成。”

  子曰:“‘善人为邦百年,亦可以胜残去杀矣。’诚哉是言也!”子曰:“如有王者,必世而后仁。”

  子曰:“苟正其身矣,于从政乎何有?不能正其身,如正人何?”冉子退朝。子曰:“何晏也?”对曰:“有政。”子曰:“其事也,如有政,虽不吾以,吾其与闻之。”

  定公问:“一言而可以兴邦,有诸?”孔子对曰:“言不可以若是其几也。人之言曰:‘为君难,为臣不易。’如知为君之难也,不几乎一言而兴邦乎?”曰:“一言而丧邦,有诸?”孔子对曰:“言不可以若是其几也。人之言曰:‘予无乐乎为君,唯其言而莫予违也。’如其善而莫之违也,不亦善乎?如不善而莫之违也,不几乎一言而丧邦乎?”叶公问政。子曰:“近者说,远者来。”

  子夏为莒父宰,问政。子曰:“无欲速,无见小利。欲速则不达,见小利则大事不成。”

  叶公语孔子曰:“吾党有直躬者,其父攘羊,而子证之。”孔子曰:“吾党之直者异于是,父为子隐,子为父隐。直在其中矣。”

  樊迟问仁。子曰:“居处恭,执事敬,与人忠。虽之夷狄,不可弃也。”

  子贡问曰:“何如斯可谓之士矣?”子曰:“行己有耻,使于四方,不辱君命,可谓士矣。”

  曰:“敢问其次。”曰:“宗族称孝焉,乡党称弟焉。”

  曰:“敢问其次。”曰:“言必信,行必果,硁硁然,小人哉!抑亦可以为次矣。”

  曰:“今之从政者何如?”子曰:“噫!斗筲之人,何足算也?”子曰:“不得中行而与之,必也狂狷乎。狂者进取,狷者有所不为也。”

  子曰:“南人有言曰:‘人而无恒,不可以作巫医。’善夫!”“不恒其德,或承之羞。”子曰:“不占而已矣。”

  子曰:“君子和而不同,小人同而不和。”

  子贡问曰:“乡人皆好之,何如?”子曰:“未可也。”“乡人皆恶之,何如?”子曰:“未可也。不如乡人之善者好之,其不善者恶之。”

  子曰:“君子易事而难说也。说之不以道,不说也;及其使人也,器之。小人难事而易说也。说之虽不以道,说也;及其使人也,求备焉。”

  子曰:“君子泰而不骄,小人骄而不泰。”

  子曰:“刚、毅、木、讷,近仁。”

  子路问曰:“何如斯可谓之士矣?”子曰:“切切偲偲,怡怡如也,可谓士矣。朋友切切偲偲,兄弟怡怡。”

  子曰:“善人教民七年,亦可以即戎矣。”

  子曰:“以不教民战,是谓弃之。”

  
  子张第十九

  

  子张曰:“士见危致命,见得思义,祭思敬,丧思哀,其可已矣。”

  子张曰:“执德不弘,信道不笃,焉能为有,焉能为亡。”

  子夏之门人问交于子张。子张曰:“子夏云何?”对曰:“子夏曰:‘可者与之,其不可者拒之。’”子张曰:“异乎吾所闻:君子尊贤而容众,嘉善而矜不能。我之大贤与,于人何所不容?我之不贤与,人将拒我,如之何其拒人也?”子夏曰:“虽小道,必有可观者焉,致远恐泥,是以君子不为也!”子夏曰:“日知其所亡,月无忘其所能,可谓好学也已矣。”

  子夏曰:“博学而笃志,切问而近思,仁在其中矣。”

  子夏曰:“百工居肆以成其事,君子学以致其道。”

  子夏曰:“小人之过也,必文。”

  子夏曰:“君子有三变:望之俨然,即之也温,听其言也厉。”

  子夏曰:“君子信而后劳其民;未信,则以为厉己也。信而后谏;未信,则以为谤己也。”

  子夏曰:“大德不逾闲,小德出入可也。”

  子游曰:“子夏之门人小子,当洒扫应对进退,则可矣,抑末也。本之则无,如之何?”子夏闻之,曰:“噫!言游过矣!君子之道,孰先传焉?孰后倦焉?譬诸草木,区以别矣。君子之道,焉可诬也?有始有卒者,其惟圣人乎!”子夏曰:“仕而优则学,学而优则仕。”

  子游曰:“丧致乎哀而止。”

  子游曰:“吾友张也,为难能也,然而未仁。”

  曾子曰:“堂堂乎张也,难与并为仁矣。”

  曾子曰:“吾闻诸夫子:人未有自致者也,必也亲丧乎!”曾子曰:“吾闻诸夫子,孟庄子之孝也,其他可能也;其不改父之臣,与父之政,是难能也。”

  孟氏使阳肤为士师,问于曾子。曾子曰:“上失其道,民散久矣。如得其情,则哀矜而勿喜。”

  子贡曰:“纣之不善,不如是之甚也。是以君子恶居下流,天下之恶皆归焉。”

  子贡曰:“君子之过也,如日月之食焉:过也人皆见之,更也人皆仰之。”

  卫公孙朝问于子贡曰:“仲尼焉学?”子贡曰:“文武之道,未坠于地,在人。贤者识其大者,不贤者识其小者,莫不有文武之道焉,夫子焉不学,而亦何常师之有?”叔孙武叔语大夫于朝,曰:“子贡贤于仲尼。”

  子服景伯以告子贡。

  子贡曰:“譬之宫墙,赐之墙也及肩,窥见室家之好。夫子之墙数仞,不得其门而入,不见宗庙之美,百官之富。得其门者或寡矣。夫子之云,不亦宜乎!”叔孙武叔毁仲尼。子贡曰:“无以为也!仲尼不可毁也。他人之贤者,丘陵也,犹可逾也;仲尼,日月也,无得而逾焉。人虽欲自绝,其何伤于日月乎?多见其不知量也。”

  陈子禽谓子贡曰:“子为恭也,仲尼岂贤于子乎?”子贡曰:“君子一言以为知,一言以为不知,言不可不慎也!夫子之不可及也,犹天之不可阶而升也。夫子之得邦家者,所谓立之斯立,道之斯行,绥之斯来,动之斯和。其生也荣,其死也哀,如之何其可及也?”
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
本文件是一个基于Tiddlywiki技术的网页文件,你可以点击【保存变更】按钮,保存本文件到你的桌面,就可以将本文件作为你的

!!个人笔记本

来使用,比如记录日记

或者是用来:

!!梳理你的知识体系,或者某个领域的知识体系。

__注意:请在编辑本文件时要注意备份,避免资料遗失。__

当然,我们更欢迎你将梳理好的''知识手册''发给我们,我们会将你发来的知识手册发布到http://www.bolebook.com上,当然,知识手册中的内容不应该违反当地的法律法规。

我们致力于帮助大家通过知识手册

*梳理个人知识体系
*与他人分享知识体系
*汇集多样化、多领域知识体系

另外,你可能还需要知道:

[[编辑示范说明|编辑示范说明]]

[[文档使用指南]]

---

建议内容创作者发布内容时,在首页的下方发布内容分享声明,具体第几种可以根据需要复制修改即可。

本文件采用[[内容分享声明|内容分享声明]]中的第一种声明:

[[署名-相同方式分享-维权代理|内容分享声明]]
!! 参考链接 

* 格式参考 http://tiddlywiki.com/#WikiText
* 官网 http://tiddlywiki.com
* 华语论坛 https://groups.google.com/forum/#!forum/tiddlywiki-zh
* 蜜汁台版文档 http://tw5-zh.tiddlyspot.com
* ~TiddlyWiki 使用手册 | 站长百科 http://www.zzbaike.com/wiki/TiddlyWiki
* tid.li Plugins - A ~TiddlyWiki Plugin Source http://tid.li/tw5/plugins.html
* Community 官方导航 http://tiddlywiki.com/#Community:Community%20Plugins
* 社区插件合集 http://erwanm.github.io/tw-community-search/#CommunityPlugins
* ~TiddlyWiki 使用教學中文版 http://web.nlhs.tyc.edu.tw/~lss/wiki/TiddlyWikiTutorialTW.html

!!! 相关阅读

*  应用tiddlywiki的一点经验 http://forum.ubuntu.org.cn/viewtopic.php?t=46941&highlight=wiki
* ~TiddlyWiki 使用心得 http://blog.csdn.net/yxj911/article/details/1577778
* 一个小巧好用的个人知识管理系统 - `TiddlyWiki` http://sinojelly.blog.51cto.com/479153/200468/

!! 配置计划

# 管理员用户系统
# 网页直接保存
#* 利用 PHP 配置参考 http://tiddlywiki.com/#Saving%20on%20a%20PHP%20Server

Home范德萨范德萨分ds
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
!!文件编辑者留名册:

出于对版权的尊重,以及对编辑者所作出劳动的尊重,请每一版的编辑者在下方留名,格式不限。



---

4

---

第三版编辑者:

第三版引用材料:

---

第二版编辑者:

第二版引用材料:

---

第一版编辑者:Yu Gongde,希望探索宇宙的人

[img[yudade.jpg]]

第一版引用材料:

来源:[[殆知阁|https://github.com/garychowcmu/daizhigev20]]